[
  {
    "type": "alter_table",
    "description": "Ensure startDate column exists on tasks table (prerequisite from scheduling migration that may have failed on some stores)",
    "database": "{{store}}",
    "check_query": "SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'tasks' AND COLUMN_NAME = 'startDate'",
    "sql": "ALTER TABLE `tasks` ADD COLUMN `startDate` DATE DEFAULT NULL COMMENT 'When task should start appearing' AFTER `sortOrder`"
  },
  {
    "type": "alter_table",
    "description": "Ensure endDate column exists on tasks table (prerequisite from scheduling migration that may have failed on some stores)",
    "database": "{{store}}",
    "check_query": "SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'tasks' AND COLUMN_NAME = 'endDate'",
    "sql": "ALTER TABLE `tasks` ADD COLUMN `endDate` DATE DEFAULT NULL COMMENT 'When task should stop appearing' AFTER `startDate`"
  },
  {
    "type": "alter_table",
    "description": "Ensure timeOfDay column exists on tasks table (prerequisite from scheduling migration that may have failed on some stores)",
    "database": "{{store}}",
    "check_query": "SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'tasks' AND COLUMN_NAME = 'timeOfDay'",
    "sql": "ALTER TABLE `tasks` ADD COLUMN `timeOfDay` TIME DEFAULT NULL COMMENT 'Recommended time for task completion' AFTER `endDate`"
  },
  {
    "type": "alter_table",
    "description": "Add taskMode column to tasks table - distinguishes floor plan tasks from daily checklists",
    "database": "{{store}}",
    "check_query": "SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'tasks' AND COLUMN_NAME = 'taskMode'",
    "sql": "ALTER TABLE `tasks` ADD COLUMN `taskMode` ENUM('recurring','one_time') NOT NULL DEFAULT 'recurring' COMMENT 'recurring=daily checklist, one_time=floor plan or ad-hoc' AFTER `timeOfDay`"
  },
  {
    "type": "alter_table",
    "description": "Add sourceType column to tasks table - origin of the task",
    "database": "{{store}}",
    "check_query": "SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'tasks' AND COLUMN_NAME = 'sourceType'",
    "sql": "ALTER TABLE `tasks` ADD COLUMN `sourceType` VARCHAR(50) NULL COMMENT 'Origin: floor_plan, event, manual, etc.' AFTER `taskMode`"
  },
  {
    "type": "alter_table",
    "description": "Add sourceId column to tasks table - references source record",
    "database": "{{store}}",
    "check_query": "SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'tasks' AND COLUMN_NAME = 'sourceId'",
    "sql": "ALTER TABLE `tasks` ADD COLUMN `sourceId` INT UNSIGNED NULL COMMENT 'References source record (e.g., layout ID)' AFTER `sourceType`"
  },
  {
    "type": "alter_table",
    "description": "Add metadata JSON column to tasks table - type-specific structured data",
    "database": "{{store}}",
    "check_query": "SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'tasks' AND COLUMN_NAME = 'metadata'",
    "sql": "ALTER TABLE `tasks` ADD COLUMN `metadata` JSON NULL COMMENT 'Type-specific data (socket IDs, subcategory codes, disposition, etc.)' AFTER `sourceId`"
  },
  {
    "type": "alter_table",
    "description": "Add index on taskMode for efficient filtering of one-time vs recurring tasks",
    "database": "{{store}}",
    "check_query": "SELECT INDEX_NAME FROM information_schema.STATISTICS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'tasks' AND INDEX_NAME = 'idx_taskMode'",
    "sql": "ALTER TABLE `tasks` ADD INDEX `idx_taskMode` (`taskMode`)"
  },
  {
    "type": "alter_table",
    "description": "Add index on sourceType and sourceId for querying tasks by origin",
    "database": "{{store}}",
    "check_query": "SELECT INDEX_NAME FROM information_schema.STATISTICS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'tasks' AND INDEX_NAME = 'idx_source'",
    "sql": "ALTER TABLE `tasks` ADD INDEX `idx_source` (`sourceType`, `sourceId`)"
  }
]
