From baa49d0a81b32d51a330820af506af8d93cc7c71 Mon Sep 17 00:00:00 2001 From: SoXX Date: Tue, 21 Jan 2025 15:03:07 +0100 Subject: [PATCH 1/4] feat: Add migration to change 'name' column type to TEXT in 'Pool' table Signed-off-by: SoXX --- pkg/database/migrations/008_pool_name_change.sql | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 pkg/database/migrations/008_pool_name_change.sql diff --git a/pkg/database/migrations/008_pool_name_change.sql b/pkg/database/migrations/008_pool_name_change.sql new file mode 100644 index 0000000..d9683cd --- /dev/null +++ b/pkg/database/migrations/008_pool_name_change.sql @@ -0,0 +1,5 @@ +-- +migrate Up + +ALTER TABLE "Pool" +ALTER +COLUMN name TYPE TEXT; \ No newline at end of file -- 2.47.1 From d52b8f7f81f074b2e4aafcf5a40209265713d83a Mon Sep 17 00:00:00 2001 From: SoXX Date: Tue, 21 Jan 2025 15:10:48 +0100 Subject: [PATCH 2/4] feat: Add new columns "enabled" and "meta" to "Source" table with defaults Signed-off-by: SoXX --- pkg/database/migrations/009_source_model_enhancements.sql | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 pkg/database/migrations/009_source_model_enhancements.sql diff --git a/pkg/database/migrations/009_source_model_enhancements.sql b/pkg/database/migrations/009_source_model_enhancements.sql new file mode 100644 index 0000000..f799982 --- /dev/null +++ b/pkg/database/migrations/009_source_model_enhancements.sql @@ -0,0 +1,5 @@ +-- +migrate Up + +ALTER TABLE "Source" + ADD COLUMN enabled BOOL DEFAULT FALSE, + ADD COLUMN meta JSON DEFAULT '{}'; -- 2.47.1 From 9669ed293db5a8279d8c730df90079001c17de49 Mon Sep 17 00:00:00 2001 From: SoXX Date: Tue, 21 Jan 2025 15:25:36 +0100 Subject: [PATCH 3/4] feat: Add CreateKnownSources function and test implementation Signed-off-by: SoXX --- pkg/database/source.go | 34 ++++++++++++++++++++++++++++++++++ pkg/database/source_test.go | 28 ++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+) diff --git a/pkg/database/source.go b/pkg/database/source.go index 6e31fc0..2a44bbe 100644 --- a/pkg/database/source.go +++ b/pkg/database/source.go @@ -245,3 +245,37 @@ func DeleteSource(ctx context.Context, id models.SourceID) error { utils.HandleEvent(span, localLogger, "Source deleted successfully") return nil } + +func CreateKnownSources(ctx context.Context) ([]models.Source, error) { + ctx, span, localLogger := utils.SetupTracing(ctx, tracer, "CreateKnownSources") + defer span.End() + + if client == nil { + return nil, utils.HandleError(ctx, span, localLogger, &otterError.Database{Reason: otterError.DatabaseIsNotConnected}) + } + + sources := []models.Source{ + { + DisplayName: "e621", + Domain: "e621.net", + Icon: "https://e621.net/safari-pinned-tab.svg", + }, + { + DisplayName: "Fur Affinity", + Domain: "furaffinity.net", + Icon: "https://www.furaffinity.net/themes/beta/img/banners/fa_logo.png", + }, + } + + result := client.WithContext(ctx).Model(models.Source{}).CreateInBatches(sources, len(sources)) + if result.Error != nil { + if errors.Is(result.Error, gorm.ErrDuplicatedKey) { + return nil, utils.HandleError(ctx, span, localLogger, &otterError.Database{Reason: otterError.DuplicateKey}) + } + return nil, utils.HandleError(ctx, span, localLogger, result.Error) + } + + utils.HandleEvent(span, localLogger, "Batch posts created successfully") + + return sources, nil +} diff --git a/pkg/database/source_test.go b/pkg/database/source_test.go index 9e23757..04fda94 100644 --- a/pkg/database/source_test.go +++ b/pkg/database/source_test.go @@ -537,6 +537,34 @@ func TestDeleteSource(t *testing.T) { } } +func TestCreateKnownSources(t *testing.T) { + // Setup trow away container + ctx := context.Background() + container, gormDB, err := test.StartPostgresContainer(ctx) + if err != nil { + logger.Fatalf("Could not start PostgreSQL container: %v", err) + } + + client = gormDB + + // Setup open telemetry + tracer = otel.Tracer(tracingName) + + hook := otellogrus.NewHook(tracingName) + logger.AddHook(hook) + + defer container.Terminate(ctx) + + // -- -- Tests + + t.Run("CreateKnownSources", func(t *testing.T) { + err, _ := CreateKnownSources(ctx) + if err != nil { + t.Errorf("DeleteSource() error = %v", err) + } + }) +} + func checkSourceID(got models.Source, want models.Source) bool { if got.ID != want.ID { return false -- 2.47.1 From 1540e5bbce67dfbea31a8fc7a6685ab06ea46947 Mon Sep 17 00:00:00 2001 From: SoXX Date: Tue, 21 Jan 2025 15:47:05 +0100 Subject: [PATCH 4/4] Fix : error assignment in CreateKnownSources test case Signed-off-by: SoXX --- pkg/database/source_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/database/source_test.go b/pkg/database/source_test.go index 04fda94..6d865fa 100644 --- a/pkg/database/source_test.go +++ b/pkg/database/source_test.go @@ -558,7 +558,7 @@ func TestCreateKnownSources(t *testing.T) { // -- -- Tests t.Run("CreateKnownSources", func(t *testing.T) { - err, _ := CreateKnownSources(ctx) + _, err := CreateKnownSources(ctx) if err != nil { t.Errorf("DeleteSource() error = %v", err) } -- 2.47.1