From e37c061488631d37192a15ab26e83fc9748f3bb1 Mon Sep 17 00:00:00 2001 From: Dery Rahman Ahaddienata Date: Tue, 1 Oct 2024 15:12:27 +0700 Subject: [PATCH] feat: add merge and replace merge without partition --- max2max/internal/loader/factory.go | 8 ++++---- max2max/internal/loader/merge.go | 12 ++++++------ max2max/internal/loader/merge_replace.go | 23 ----------------------- max2max/internal/loader/replace_merge.go | 24 ++++++++++++++++++++++++ 4 files changed, 34 insertions(+), 33 deletions(-) delete mode 100644 max2max/internal/loader/merge_replace.go create mode 100644 max2max/internal/loader/replace_merge.go diff --git a/max2max/internal/loader/factory.go b/max2max/internal/loader/factory.go index 673bb26..ab7350c 100644 --- a/max2max/internal/loader/factory.go +++ b/max2max/internal/loader/factory.go @@ -20,10 +20,10 @@ func GetLoader(name string, logger *slog.Logger) (Loader, error) { // return NewReplaceLoader(logger), nil // case REPLACE_ALL: // return NewReplaceAllLoader(logger), nil - // case MERGE: - // return NewMergeLoader(logger), nil - // case MERGE_REPLACE: - // return NewMergeReplaceLoader(logger), nil + case MERGE: + return NewMergeLoader(logger) + case MERGE_REPLACE: + return NewReplaceMergeLoader(logger) default: err := fmt.Errorf("loader %s not found", name) return nil, errors.WithStack(err) diff --git a/max2max/internal/loader/merge.go b/max2max/internal/loader/merge.go index f9ef4bb..1e28cda 100644 --- a/max2max/internal/loader/merge.go +++ b/max2max/internal/loader/merge.go @@ -8,16 +8,16 @@ type mergeLoader struct { logger *slog.Logger } -func NewMergeLoader(logger *slog.Logger) *mergeLoader { +func NewMergeLoader(logger *slog.Logger) (*mergeLoader, error) { return &mergeLoader{ logger: logger, - } + }, nil } -func (l *mergeLoader) GetQuery(tableID, query string) string { - return "-- TODO merge loader" +func (l *mergeLoader) GetQuery(_, query string) string { + return query } -func (l *mergeLoader) GetPartitionedQuery(tableID, query string, partitionName []string) string { - return "-- TODO merge loader" +func (l *mergeLoader) GetPartitionedQuery(_, query string, _ []string) string { + return query } diff --git a/max2max/internal/loader/merge_replace.go b/max2max/internal/loader/merge_replace.go deleted file mode 100644 index e28c6a2..0000000 --- a/max2max/internal/loader/merge_replace.go +++ /dev/null @@ -1,23 +0,0 @@ -package loader - -import ( - "log/slog" -) - -type mergeReplaceLoader struct { - logger *slog.Logger -} - -func NewMergeReplaceLoader(logger *slog.Logger) *mergeReplaceLoader { - return &mergeReplaceLoader{ - logger: logger, - } -} - -func (l *mergeReplaceLoader) GetQuery(tableID, query string) string { - return "-- TODO merge replace loader" -} - -func (l *mergeReplaceLoader) GetPartitionedQuery(tableID, query string, partitionName []string) string { - return "-- TODO merge replace loader" -} diff --git a/max2max/internal/loader/replace_merge.go b/max2max/internal/loader/replace_merge.go new file mode 100644 index 0000000..c19e840 --- /dev/null +++ b/max2max/internal/loader/replace_merge.go @@ -0,0 +1,24 @@ +package loader + +import ( + "fmt" + "log/slog" +) + +type replaceMergeLoader struct { + logger *slog.Logger +} + +func NewReplaceMergeLoader(logger *slog.Logger) (*replaceMergeLoader, error) { + return &replaceMergeLoader{ + logger: logger, + }, nil +} + +func (l *replaceMergeLoader) GetQuery(tableID, query string) string { + return fmt.Sprintf("INSERT OVERWRITE TABLE %s %s", tableID, query) +} + +func (l *replaceMergeLoader) GetPartitionedQuery(tableID, query string, partitionName []string) string { + return "-- TODO merge replace loader" +}