refactor: implement bidirectional transformation support with PostgreSQL integration
This commit is contained in:
@@ -9,6 +9,7 @@ import (
|
||||
"git.ksdemosapps.com/kylesoda/go-migrate/internal/app/azure"
|
||||
"git.ksdemosapps.com/kylesoda/go-migrate/internal/app/config"
|
||||
dbwrapper "git.ksdemosapps.com/kylesoda/go-migrate/internal/app/db-wrapper"
|
||||
"git.ksdemosapps.com/kylesoda/go-migrate/internal/app/etl"
|
||||
"git.ksdemosapps.com/kylesoda/go-migrate/internal/app/etl/extractors"
|
||||
"git.ksdemosapps.com/kylesoda/go-migrate/internal/app/etl/loaders"
|
||||
"git.ksdemosapps.com/kylesoda/go-migrate/internal/app/etl/table_analyzers"
|
||||
@@ -17,6 +18,13 @@ import (
|
||||
"golang.org/x/sync/errgroup"
|
||||
)
|
||||
|
||||
func newTableAnalyzer(db dbwrapper.DbWrapper) etl.TableAnalyzer {
|
||||
if db.GetDialect() == "postgres" {
|
||||
return table_analyzers.NewPostgresTableAnalyzer(db)
|
||||
}
|
||||
return table_analyzers.NewMssqlTableAnalyzer(db)
|
||||
}
|
||||
|
||||
func main() {
|
||||
configureLog()
|
||||
checkExpiry()
|
||||
@@ -163,8 +171,8 @@ func processMigrationJobs(
|
||||
chJobs := make(chan config.Job, len(jobs))
|
||||
var wgJobs sync.WaitGroup
|
||||
|
||||
sourceTableAnalyzer := table_analyzers.NewMssqlTableAnalyzer(sourceDb)
|
||||
targetTableAnalyzer := table_analyzers.NewPostgresTableAnalyzer(targetDb)
|
||||
sourceTableAnalyzer := newTableAnalyzer(sourceDb)
|
||||
targetTableAnalyzer := newTableAnalyzer(targetDb)
|
||||
extractor := extractors.NewExtractor(sourceDb)
|
||||
loader := loaders.NewGenericLoader(targetDb)
|
||||
|
||||
@@ -181,6 +189,7 @@ func processMigrationJobs(
|
||||
azureClient,
|
||||
loader,
|
||||
job,
|
||||
sourceDb.GetDialect(),
|
||||
targetDb.GetDialect(),
|
||||
)
|
||||
|
||||
|
||||
@@ -46,9 +46,15 @@ func processMigrationJob(
|
||||
azureClient *azure.Client,
|
||||
loader loaders.GenericLoader,
|
||||
job config.Job,
|
||||
sourceDbType string,
|
||||
targetDbType string,
|
||||
) models.JobResult {
|
||||
transformer := transformers.NewMssqlTransformer(job.ToStorage, job.SourceTable, azureClient)
|
||||
var transformer etl.Transformer
|
||||
if sourceDbType == "postgres" {
|
||||
transformer = transformers.NewPostgresTransformer(job.SourceTable)
|
||||
} else {
|
||||
transformer = transformers.NewMssqlTransformer(job.ToStorage, job.SourceTable, azureClient)
|
||||
}
|
||||
localCtx, cancel := context.WithCancel(ctx)
|
||||
defer cancel()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user