package repository import ( "database/sql" "fmt" "time" models "vibeStonk/server/models/v1" ) type SaleRepo interface { BeginSale(stockID int, saleDate time.Time, qty, price float64) (*models.Sale, *sql.Tx, error) Get(id int64) (*models.Sale, error) GetByStockID(stockID int64) ([]*models.Sale, error) BeginDelete(sale *models.Sale) (*sql.Tx, error) } func NewSaleRepo(config *Config, db *sql.DB) (SaleRepo, error) { switch config.DBEngine { case Sqlite: repo, err := newSqliteSaleRepo(db) if err != nil { return nil, fmt.Errorf(errMsgFailed, "Sqlite", err) } return repo, nil default: return nil, ErrBadEngine } }