Files
fm_be/migrations/20260626_helicopters_deleted_at_nullable.sql
2026-07-16 22:16:45 +07:00

44 lines
1.3 KiB
SQL

-- Add deleted_at to helicopters so takeover and usage queries can safely filter active rows.
SET @schema_name := DATABASE();
SET @has_helicopters := (
SELECT COUNT(*)
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = @schema_name
AND TABLE_NAME = 'helicopters'
);
SET @has_deleted_at := (
SELECT COUNT(*)
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = @schema_name
AND TABLE_NAME = 'helicopters'
AND COLUMN_NAME = 'deleted_at'
);
SET @sql_add_deleted_at := IF(
@has_helicopters > 0 AND @has_deleted_at = 0,
'ALTER TABLE helicopters ADD COLUMN deleted_at DATETIME(6) NULL AFTER updated_at',
'SELECT 1'
);
PREPARE stmt_add_deleted_at FROM @sql_add_deleted_at;
EXECUTE stmt_add_deleted_at;
DEALLOCATE PREPARE stmt_add_deleted_at;
SET @idx_deleted_at_exists := (
SELECT COUNT(*)
FROM information_schema.STATISTICS
WHERE TABLE_SCHEMA = @schema_name
AND TABLE_NAME = 'helicopters'
AND INDEX_NAME = 'idx_helicopters_deleted_at'
);
SET @sql_add_deleted_at_idx := IF(
@has_helicopters > 0 AND @has_deleted_at > 0 AND @idx_deleted_at_exists = 0,
'ALTER TABLE helicopters ADD INDEX idx_helicopters_deleted_at (deleted_at)',
'SELECT 1'
);
PREPARE stmt_add_deleted_at_idx FROM @sql_add_deleted_at_idx;
EXECUTE stmt_add_deleted_at_idx;
DEALLOCATE PREPARE stmt_add_deleted_at_idx;