Add `namespace_details.deleted_at` column

What does this MR do and why?

We're transitioning from the boolean namespace_details.pending_delete column to the new deleted_at timestamp column. This change improves clarity, as pending_delete incorrectly suggests future scheduling rather than an ongoing process.

The deleted_at column will now indicate when the background deletion process for a group has started. This will also enable us to see when the group was deleted to help in debugging if the group deletion fails.

References

See !170774 (comment 2182658405)

MR acceptance checklist

Please evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

Migration output

up
bin/rails db:migrate
main: == [advisory_lock_connection] object_id: 129380, pg_backend_pid: 70223
main: == 20241029063914 AddDeletedAtToNamespaceDetails: migrating ===================
main: -- add_column(:namespace_details, :deleted_at, :datetime_with_timezone)
main:    -> 0.0037s
main: == 20241029063914 AddDeletedAtToNamespaceDetails: migrated (0.0072s) ==========

main: == [advisory_lock_connection] object_id: 129380, pg_backend_pid: 70223
ci: == [advisory_lock_connection] object_id: 129700, pg_backend_pid: 70225
ci: == 20241029063914 AddDeletedAtToNamespaceDetails: migrating ===================
ci: -- add_column(:namespace_details, :deleted_at, :datetime_with_timezone)
ci:    -> 0.0036s
ci: == 20241029063914 AddDeletedAtToNamespaceDetails: migrated (0.0146s) ==========

ci: == [advisory_lock_connection] object_id: 129700, pg_backend_pid: 70225
down
for v in 20241029063914; do bin/rails db:migrate:down:ci VERSION=$v && bin/rails db:migrate:down:main VERSION=$v; done

ci: == [advisory_lock_connection] object_id: 128940, pg_backend_pid: 74167
ci: == 20241029063914 AddDeletedAtToNamespaceDetails: reverting ===================
ci: -- remove_column(:namespace_details, :deleted_at, :datetime_with_timezone)
ci:    -> 0.0021s
ci: == 20241029063914 AddDeletedAtToNamespaceDetails: reverted (0.0162s) ==========

ci: == [advisory_lock_connection] object_id: 128940, pg_backend_pid: 74167

main: == [advisory_lock_connection] object_id: 128940, pg_backend_pid: 74797
main: == 20241029063914 AddDeletedAtToNamespaceDetails: reverting ===================
main: -- remove_column(:namespace_details, :deleted_at, :datetime_with_timezone)
main:    -> 0.0023s
main: == 20241029063914 AddDeletedAtToNamespaceDetails: reverted (0.0080s) ==========

main: == [advisory_lock_connection] object_id: 128940, pg_backend_pid: 74797

How to set up and validate locally

Run bin/rails db:migrate.

Related to #501158 (closed)

Merge request reports

Loading