pilgrim/internal/pilgrim_core/pilgrim.go

52 lines
1.2 KiB
Go

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
}