8 "github.com/go-pg/pg/orm"
9 "github.com/jloup/utils"
14 var log = utils.StandardL().WithField("module", "db")
16 type DBConfig struct {
23 func Init(config DBConfig) {
28 err = createSchema(DB)
30 log.Errorf("cannot create schemas %v\n", err)
33 err = createIndexes(DB)
35 log.Errorf("cannot create indexes %v\n", err)
39 func connect(config DBConfig) *pg.DB {
40 return pg.Connect(&pg.Options{
42 Password: config.Password,
43 Database: config.Database,
48 func createSchema(db *pg.DB) error {
49 for _, model := range []interface{}{&User{}, &MarketConfig{}} {
50 err := db.CreateTable(model, &orm.CreateTableOptions{IfNotExists: true})
58 func createIndexes(db *pg.DB) error {
64 {"market_configs", "market_name_user_id_idx", []string{"user_id", "market_name"}},
67 for _, index := range indexes {
68 _, err := db.Exec(fmt.Sprintf("CREATE UNIQUE INDEX IF NOT EXISTS %s ON %s (%s)", index.Name, index.TableName, strings.Join(index.Columns, ",")))