Skip to content

Commit 634b1e6

Browse files
committed
Add 'active' as default value for the status column
Signed-off-by: Radoslav Dimitrov <[email protected]>
1 parent 9f1e2cc commit 634b1e6

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

internal/database/migrations/008_separate_official_metadata.sql

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ BEGIN;
66
-- Add new columns for official metadata and core identifiers
77
ALTER TABLE servers ADD COLUMN server_name VARCHAR(255);
88
ALTER TABLE servers ADD COLUMN version VARCHAR(255);
9-
ALTER TABLE servers ADD COLUMN status VARCHAR(50);
9+
ALTER TABLE servers ADD COLUMN status VARCHAR(50) DEFAULT 'active';
1010
ALTER TABLE servers ADD COLUMN published_at TIMESTAMP WITH TIME ZONE;
1111
ALTER TABLE servers ADD COLUMN updated_at TIMESTAMP WITH TIME ZONE;
1212
ALTER TABLE servers ADD COLUMN is_latest BOOLEAN;
@@ -38,7 +38,7 @@ BEGIN
3838
-- Note: status is at top level in old format, not in official_meta
3939
UPDATE servers
4040
SET
41-
status = COALESCE(NULLIF(NULLIF(rec.value->>'status', 'null'), ''), 'active'),
41+
status = rec.value->>'status',
4242
published_at = COALESCE((official_meta->>'publishedAt')::TIMESTAMP WITH TIME ZONE, NOW()),
4343
updated_at = (official_meta->>'updatedAt')::TIMESTAMP WITH TIME ZONE,
4444
is_latest = COALESCE((official_meta->>'isLatest')::BOOLEAN, true)
@@ -47,7 +47,7 @@ BEGIN
4747
-- Handle records without official metadata (set defaults)
4848
UPDATE servers
4949
SET
50-
status = COALESCE(NULLIF(NULLIF(rec.value->>'status', 'null'), ''), 'active'),
50+
status = rec.value->>'status',
5151
published_at = NOW(),
5252
updated_at = NOW(),
5353
is_latest = true
@@ -82,11 +82,14 @@ SELECT migrate_official_metadata();
8282
-- Drop the migration function
8383
DROP FUNCTION migrate_official_metadata();
8484

85-
-- Safety check: Update any remaining NULL values with defaults before adding NOT NULL constraints
86-
-- Also normalize any invalid status values to ensure check constraint will pass
85+
-- Safety check: Normalize invalid status values before adding NOT NULL constraints
86+
-- This handles: NULL (missing field), empty string, string "null", and any invalid values
8787
UPDATE servers
8888
SET status = 'active'
89-
WHERE status IS NULL OR status NOT IN ('active', 'deprecated', 'deleted');
89+
WHERE status IS NULL
90+
OR status = ''
91+
OR status = 'null'
92+
OR status NOT IN ('active', 'deprecated', 'deleted');
9093

9194
UPDATE servers SET published_at = NOW() WHERE published_at IS NULL;
9295

0 commit comments

Comments
 (0)