diff --git a/cmd/go_migrate/main.go b/cmd/go_migrate/main.go index c322f84..56efa9b 100644 --- a/cmd/go_migrate/main.go +++ b/cmd/go_migrate/main.go @@ -120,7 +120,7 @@ func processMigrationJobs( targetTableAnalyzer := table_analyzers.NewPostgresTableAnalyzer(targetDb) extractor := extractors.NewMssqlExtractor(sourceDb) transformer := transformers.NewMssqlTransformer() - loader := loaders.NewPostgresLoader(targetDb) + loader := loaders.NewGenericLoader(targetDb) for i := range maxParallelWorkers { wgJobs.Go(func() { diff --git a/internal/app/etl/loaders/postgres.go b/internal/app/etl/loaders/main.go similarity index 81% rename from internal/app/etl/loaders/postgres.go rename to internal/app/etl/loaders/main.go index f9ed76f..523d6c8 100644 --- a/internal/app/etl/loaders/postgres.go +++ b/internal/app/etl/loaders/main.go @@ -15,31 +15,21 @@ import ( "github.com/jackc/pgx/v5/pgconn" ) -type PostgresLoader struct { +type GenericLoader struct { db dbwrapper.DbWrapper } -func NewPostgresLoader(db dbwrapper.DbWrapper) etl.Loader { - return &PostgresLoader{db: db} +func NewGenericLoader(db dbwrapper.DbWrapper) etl.Loader { + return &GenericLoader{db: db} } -func mapSlice[T any, V any](input []T, mapper func(T) V) []V { - result := make([]V, len(input)) - - for i, v := range input { - result[i] = mapper(v) - } - - return result -} - -func (postgresLd *PostgresLoader) ProcessBatch( +func (gl *GenericLoader) ProcessBatch( ctx context.Context, tableInfo config.TargetTableInfo, colNames []string, batch models.Batch, ) (int, error) { - _, err := postgresLd.db.SaveMassive( + _, err := gl.db.SaveMassive( ctx, tableInfo.Schema, tableInfo.Table, @@ -65,7 +55,7 @@ func (postgresLd *PostgresLoader) ProcessBatch( return len(batch.Rows), nil } -func (postgresLd *PostgresLoader) Exec( +func (gl *GenericLoader) Exec( ctx context.Context, tableInfo config.TargetTableInfo, columns []models.ColumnType, @@ -92,7 +82,7 @@ func (postgresLd *PostgresLoader) Exec( return } - processedRows, err := postgresLd.ProcessBatch(ctx, tableInfo, colNames, batch) + processedRows, err := gl.ProcessBatch(ctx, tableInfo, colNames, batch) if err != nil { var ldError *custom_errors.LoaderError diff --git a/internal/app/etl/loaders/types.go b/internal/app/etl/loaders/types.go deleted file mode 100644 index c88d5fb..0000000 --- a/internal/app/etl/loaders/types.go +++ /dev/null @@ -1 +0,0 @@ -package loaders diff --git a/internal/app/etl/loaders/utils.go b/internal/app/etl/loaders/utils.go new file mode 100644 index 0000000..1a2dbf4 --- /dev/null +++ b/internal/app/etl/loaders/utils.go @@ -0,0 +1,11 @@ +package loaders + +func mapSlice[T any, V any](input []T, mapper func(T) V) []V { + result := make([]V, len(input)) + + for i, v := range input { + result[i] = mapper(v) + } + + return result +}