package pilgrim_core import ( "mvvasilev.dev/pilgrim/internal/pilgrim_common" "mvvasilev.dev/pilgrim/internal/pilgrim_conf" ) type Pilgrim interface { Context() pilgrim_conf.PilgrimConfigurationRetriever Execute() } type pilgrimImpl struct { ctx pilgrim_conf.PilgrimConfigurationRetriever dbAdapter pilgrim_common.PilgrimDbAdapter } func NewPilgrim(ctx pilgrim_conf.PilgrimConfigurationRetriever) *pilgrimImpl { p := new(pilgrimImpl) p.ctx = ctx p.dbAdapter = createAdapter(ctx.UrlParts().Driver) return p } func createAdapter(driver pilgrim_conf.DbDriver) pilgrim_common.PilgrimDbAdapter { switch driver { case pilgrim_conf.DbDriver_MSSQL: panic("Not implemented") case pilgrim_conf.DbDriver_MariaDB: panic("Not implemented") case pilgrim_conf.DbDriver_MySQL: panic("Not implemented") case pilgrim_conf.DbDriver_Oracle: panic("Not implemented") case pilgrim_conf.DbDriver_Postgres: panic("Not implemented") case pilgrim_conf.DbDriver_SQLite: panic("Not implemented") default: panic("Not implemented") } } func (p *pilgrimImpl) Context() pilgrim_conf.PilgrimConfigurationRetriever { return p.ctx } func (p *pilgrimImpl) Execute() { // TODO }