package repository import ( "database/sql" "fmt" models "vibeStonk/server/models/v1" ) type StockRepo interface { Create(stock *models.Stock) (*models.Stock, error) Get(id int64) (*models.Stock, error) GetBySymbol(symbol string) (*models.Stock, error) Update(stock *models.Stock) error Delete(stock *models.Stock) error List() ([]*models.Stock, error) GetByIDs(ids []int) ([]*models.Stock, error) } func NewStockRepo(config *Config, db *sql.DB) (StockRepo, error) { switch config.DBEngine { case Sqlite: repo, err := newSqliteStockRepo(db) if err != nil { return nil, fmt.Errorf(errMsgFailed, "Sqlite", err) } return repo, nil default: return nil, ErrBadEngine } }