github.com/0xPolygon/supernets2-node@v0.0.0-20230711153321-2fe574524eaa/test/dbutils/dbutils.go (about) 1 package dbutils 2 3 import ( 4 "fmt" 5 6 "github.com/0xPolygon/supernets2-node/db" 7 "github.com/0xPolygon/supernets2-node/log" 8 "github.com/0xPolygon/supernets2-node/test/testutils" 9 ) 10 11 // InitOrResetState will initializes the State db running the migrations or 12 // will reset all the known data and rerun the migrations 13 func InitOrResetState(cfg db.Config) error { 14 return initOrReset(cfg, "supernets2-state-db") 15 } 16 17 // InitOrResetPool will initializes the Pool db running the migrations or 18 // will reset all the known data and rerun the migrations 19 func InitOrResetPool(cfg db.Config) error { 20 return initOrReset(cfg, "supernets2-pool-db") 21 } 22 23 // initOrReset will initializes the db running the migrations or 24 // will reset all the known data and return the migrations 25 func initOrReset(cfg db.Config, name string) error { 26 log.Infof("running migrations for %v", name) 27 // connect to database 28 dbPool, err := db.NewSQLDB(cfg) 29 if err != nil { 30 return err 31 } 32 defer dbPool.Close() 33 34 // run migrations 35 if err := db.RunMigrationsDown(cfg, name); err != nil { 36 return err 37 } 38 return db.RunMigrationsUp(cfg, name) 39 } 40 41 // NewStateConfigFromEnv return a config for state db 42 func NewStateConfigFromEnv() db.Config { 43 return newConfigFromEnv("state", "5432") 44 } 45 46 // NewPoolConfigFromEnv return a config for pool db 47 func NewPoolConfigFromEnv() db.Config { 48 return newConfigFromEnv("pool", "5433") 49 } 50 51 // NewEventConfigFromEnv return a config for event db 52 func NewEventConfigFromEnv() db.Config { 53 return newConfigFromEnv("event", "5435") 54 } 55 56 // newConfigFromEnv creates config from standard postgres environment variables, 57 // see https://www.postgresql.org/docs/11/libpq-envars.html for details 58 func newConfigFromEnv(prefix, port string) db.Config { 59 const maxDBPoolConns = 50 60 61 return db.Config{ 62 User: testutils.GetEnv("PGUSER", fmt.Sprintf("%v_user", prefix)), 63 Password: testutils.GetEnv("PGPASSWORD", fmt.Sprintf("%v_password", prefix)), 64 Name: testutils.GetEnv("PGDATABASE", fmt.Sprintf("%v_db", prefix)), 65 Host: testutils.GetEnv("PGHOST", "localhost"), 66 Port: testutils.GetEnv("PGPORT", port), 67 EnableLog: false, 68 MaxConns: maxDBPoolConns, 69 } 70 }