From adbb1216af9a6c5eb25763f269165c0d173325d0 Mon Sep 17 00:00:00 2001 From: "Miroslav V. Vasilev" Date: Wed, 19 Mar 2025 21:58:21 +0200 Subject: [PATCH] Restructure a bit --- internal/pilgrim_common/db_adapter.go | 9 +++++ internal/pilgrim_core/pilgrim.go | 52 +++++++++++++++++++++++++ internal/pilgrim_db/postgres_adapter.go | 7 ++++ main.go | 7 ++-- 4 files changed, 72 insertions(+), 3 deletions(-) create mode 100644 internal/pilgrim_common/db_adapter.go create mode 100644 internal/pilgrim_core/pilgrim.go create mode 100644 internal/pilgrim_db/postgres_adapter.go diff --git a/internal/pilgrim_common/db_adapter.go b/internal/pilgrim_common/db_adapter.go new file mode 100644 index 0000000..3d2c05f --- /dev/null +++ b/internal/pilgrim_common/db_adapter.go @@ -0,0 +1,9 @@ +package pilgrim_common + +type PilgrimDbAdapter interface { + Up() + Down() + ValidateChecksums() + ValidateLatest() + ValidateMigrationOrder() +} diff --git a/internal/pilgrim_core/pilgrim.go b/internal/pilgrim_core/pilgrim.go new file mode 100644 index 0000000..edf154a --- /dev/null +++ b/internal/pilgrim_core/pilgrim.go @@ -0,0 +1,52 @@ +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 +} diff --git a/internal/pilgrim_db/postgres_adapter.go b/internal/pilgrim_db/postgres_adapter.go new file mode 100644 index 0000000..fe4eeb5 --- /dev/null +++ b/internal/pilgrim_db/postgres_adapter.go @@ -0,0 +1,7 @@ +package pilgrim_db + +import "mvvasilev.dev/pilgrim/internal/pilgrim_conf" + +type postgresDbAdapter struct { + ctx pilgrim_conf.PilgrimConfigurationRetriever +} diff --git a/main.go b/main.go index c43333f..7730713 100644 --- a/main.go +++ b/main.go @@ -1,9 +1,8 @@ package main import ( - "log" - "mvvasilev.dev/pilgrim/internal/pilgrim_conf" + "mvvasilev.dev/pilgrim/internal/pilgrim_core" ) func main() { @@ -12,5 +11,7 @@ func main() { pilgrim_conf.NewEnvVarContext(), ) - log.Println(pilgrimContext) + pilgrim := pilgrim_core.NewPilgrim(pilgrimContext) + + pilgrim.Execute() }