package repository import ( "database/sql" "fmt" models "vibeStonk/server/models/v1" ) type PurchaseRepo interface { Create(purchase *models.Purchase) (*models.Purchase, error) Get(id int64) (*models.Purchase, error) GetByStockID(stockID int64) ([]*models.Purchase, error) Update(purchase *models.Purchase) error Delete(purchase *models.Purchase) error List() ([]*models.Purchase, error) } func NewPurchaseRepo(config *Config, db *sql.DB) (PurchaseRepo, error) { switch config.DBEngine { case Sqlite: repo, err := newSqlitePurchaseRepo(db) if err != nil { return nil, fmt.Errorf(errMsgFailed, "Sqlite", err) } return repo, nil default: return nil, ErrBadEngine } }