diff --git a/app/controlplane/pkg/data/ent/migrate/migrations/20251007154203.sql b/app/controlplane/pkg/data/ent/migrate/migrations/20251007154203.sql new file mode 100644 index 000000000..aa8871bf3 --- /dev/null +++ b/app/controlplane/pkg/data/ent/migrate/migrations/20251007154203.sql @@ -0,0 +1,51 @@ +-- Backfill released_at field for released project versions +-- This migration populates the released_at timestamp for project versions +-- that are marked as released (prerelease = false) but don't have a released_at timestamp + +DO $$ +DECLARE + batch_size INTEGER := 100; + total_remaining INTEGER := 0; + total_updated INTEGER := 0; +BEGIN + -- Get initial count of project versions that need updating + -- (those that are released but don't have released_at set) + SELECT COUNT(*) + INTO total_remaining + FROM project_versions + WHERE prerelease = false + AND released_at IS NULL + AND deleted_at IS NULL; + + -- Loop until no more rows remain + WHILE total_remaining > 0 LOOP + -- Update a batch of project versions + -- Set released_at to created_at as a reasonable default + WITH updated AS ( + UPDATE project_versions + SET released_at = created_at + WHERE id IN ( + SELECT id + FROM project_versions + WHERE prerelease = false + AND released_at IS NULL + AND deleted_at IS NULL + LIMIT batch_size + ) + RETURNING id + ) + SELECT COUNT(*) INTO batch_size FROM updated; + + total_updated := total_updated + batch_size; + + -- Update the remaining count + SELECT COUNT(*) + INTO total_remaining + FROM project_versions + WHERE prerelease = false + AND released_at IS NULL + AND deleted_at IS NULL; + + END LOOP; + +END $$; diff --git a/app/controlplane/pkg/data/ent/migrate/migrations/atlas.sum b/app/controlplane/pkg/data/ent/migrate/migrations/atlas.sum index e0f184c23..78d02431d 100644 --- a/app/controlplane/pkg/data/ent/migrate/migrations/atlas.sum +++ b/app/controlplane/pkg/data/ent/migrate/migrations/atlas.sum @@ -1,4 +1,4 @@ -h1:SbJMyd1Na23ALCFwTq0rcVW1zSPsD4bVBvBuO1xOfuA= +h1:kHHOXwsUSBDWcPMgT0oP6T775JumT5LvJuzdq65oAzE= 20230706165452_init-schema.sql h1:VvqbNFEQnCvUVyj2iDYVQQxDM0+sSXqocpt/5H64k8M= 20230710111950-cas-backend.sql h1:A8iBuSzZIEbdsv9ipBtscZQuaBp3V5/VMw7eZH6GX+g= 20230712094107-cas-backends-workflow-runs.sql h1:a5rzxpVGyd56nLRSsKrmCFc9sebg65RWzLghKHh5xvI= @@ -115,3 +115,4 @@ h1:SbJMyd1Na23ALCFwTq0rcVW1zSPsD4bVBvBuO1xOfuA= 20250908160222.sql h1:bNjptbt2xPpSXqa4eVuWkMnovHt9LMkiakoGrFGZJ0g= 20251001215533.sql h1:+IdTm9OSW1r5nDH1fX2hpia/q0UzklPrDy3SDN3S0dg= 20251001215625.sql h1:adcp5r8CoL/JCfNgNZxBvY5pczlEHFH/IX64g/ji/4s= +20251007154203.sql h1:gRPipCNWs439gStSXVDxoSLqTw4SUPMiOe5fK1Y5V1Q=