From ecbc4acc781ad3aa3cc19001d9165c43da6162ba Mon Sep 17 00:00:00 2001 From: Nityananda Gohain Date: Tue, 18 Feb 2025 21:41:37 +0530 Subject: [PATCH] fix: org domain (#7148) Fixes the updated_at type of org domain --- pkg/signoz/provider.go | 1 + pkg/sqlmigration/012_modify_org_domain.go | 64 +++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 pkg/sqlmigration/012_modify_org_domain.go diff --git a/pkg/signoz/provider.go b/pkg/signoz/provider.go index 04bff4b738..ed6c9b66a3 100644 --- a/pkg/signoz/provider.go +++ b/pkg/signoz/provider.go @@ -61,6 +61,7 @@ func NewProviderConfig() ProviderConfig { sqlmigration.NewAddLicensesFactory(), sqlmigration.NewAddPatsFactory(), sqlmigration.NewModifyDatetimeFactory(), + sqlmigration.NewModifyOrgDomainFactory(), ), TelemetryStoreProviderFactories: factory.MustNewNamedMap( clickhousetelemetrystore.NewFactory(telemetrystorehook.NewFactory()), diff --git a/pkg/sqlmigration/012_modify_org_domain.go b/pkg/sqlmigration/012_modify_org_domain.go new file mode 100644 index 0000000000..8c83dcb344 --- /dev/null +++ b/pkg/sqlmigration/012_modify_org_domain.go @@ -0,0 +1,64 @@ +package sqlmigration + +import ( + "context" + + "github.com/uptrace/bun" + "github.com/uptrace/bun/migrate" + "go.signoz.io/signoz/pkg/factory" +) + +type modifyOrgDomain struct{} + +func NewModifyOrgDomainFactory() factory.ProviderFactory[SQLMigration, Config] { + return factory.NewProviderFactory(factory.MustNewName("modify_org_domain"), newModifyOrgDomain) +} + +func newModifyOrgDomain(_ context.Context, _ factory.ProviderSettings, _ Config) (SQLMigration, error) { + return &modifyOrgDomain{}, nil +} + +func (migration *modifyOrgDomain) Register(migrations *migrate.Migrations) error { + if err := migrations.Register(migration.Up, migration.Down); err != nil { + return err + } + + return nil +} + +func (migration *modifyOrgDomain) Up(ctx context.Context, db *bun.DB) error { + // begin transaction + tx, err := db.BeginTx(ctx, nil) + if err != nil { + return err + } + defer tx.Rollback() + + // rename old column + if _, err := tx.ExecContext(ctx, `ALTER TABLE org_domains RENAME COLUMN updated_at TO updated_at_old`); err != nil { + return err + } + + if _, err := tx.ExecContext(ctx, `ALTER TABLE org_domains ADD COLUMN updated_at INTEGER`); err != nil { + return err + } + + if _, err := tx.ExecContext(ctx, `UPDATE org_domains SET updated_at = CAST(updated_at_old AS INTEGER)`); err != nil { + return err + } + + // drop the old column + if _, err := tx.ExecContext(ctx, `ALTER TABLE org_domains DROP COLUMN updated_at_old`); err != nil { + return err + } + + if err := tx.Commit(); err != nil { + return err + } + + return nil +} + +func (migration *modifyOrgDomain) Down(ctx context.Context, db *bun.DB) error { + return nil +}