// Package models defines the data models used by the chat application. // All model structs embed Base, which provides database access for // relation-fetching methods directly on model instances. package models import "database/sql" // DB is the interface that models use to query the database. // This avoids a circular import with the db package. type DB interface { GetDB() *sql.DB } // Base is embedded in all model structs to provide database access. type Base struct { db DB } // SetDB injects the database reference into a model. func (b *Base) SetDB(d DB) { b.db = d } // GetDB returns the database interface for use in model methods. func (b *Base) GetDB() *sql.DB { return b.db.GetDB() }