-- ============================================================================
-- error_lists 表と robot_error_reports.error_list_id 列を ★ローカルの dwatch_local にだけ★ 足す(指示書BD §8。D-184)
--
-- ★★ステージング・本番には絶対に流さないこと★★ — メインDBのスキーマは TeamWorks の領域(CLAUDE.md §2 / §7)。
-- 先方の DB には同じ表・列が導入済み(指示書BD §0 ⑤)。これは「ローカルの MySQL 8.4 に同じ形を作る」ためだけのもの。
-- ★`prisma db push` / `migrate` の代わりにこれを使う★(db push はローカルにだけある列を DROP する。指示書M 禁止事項3・4)。
--
-- 形は清掃ロボット監視テーブル定義書(2026-10-27 時点)と `prisma/schema.prisma` の `ErrorList` に合わせた手書き。
-- ★error_list_id は NULL 可★(定義書は必須だが、ユーザー回答③「初期は空欄」。schema.prisma と同じ)。FK・索引は張らない(定義書どおり)。
--
-- 実行方法(どちらか):
-- 1) 推奨: `npx tsx scripts/local-db/apply-error-lists.ts`
-- (DATABASE_URL が localhost / 127.0.0.1 の dwatch_local を指していなければ接続前に止まる)
-- 2) mysql CLI: `"C:\Program Files\MySQL\MySQL Server 8.4\bin\mysql.exe" -h localhost -u root -p < scripts/local-db/20261027_error_lists.sql`
-- (パスワードは -p の対話入力か MYSQL_PWD で渡す。コマンドラインに書かない)
--
-- ★何度流しても同じ結果になる★: 表は IF NOT EXISTS、列は information_schema を見て無いときだけ足す
-- (MySQL 8.4 には ADD COLUMN IF NOT EXISTS が無いため、準備済み文で分岐する)。
-- ★先頭の USE が歯止め★: dwatch_local の無いサーバーではここでエラーになり、以降の文は流れない。
-- 中身(131行)はここでは入れない — `npm run seed:local`(scripts/seed-local-db.ts)が lib/fixtures/error-lists.ts から入れ直す。
-- ============================================================================
USE dwatch_local;
CREATE TABLE IF NOT EXISTS error_lists (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
error_category_main_en VARCHAR(100) NOT NULL,
error_category_main_ja VARCHAR(200) NOT NULL,
error_category_sub_en VARCHAR(100) NOT NULL,
error_category_sub_ja VARCHAR(200) NOT NULL,
error_detail_en TEXT NOT NULL,
error_detail_ja TEXT NOT NULL,
inactive TINYINT UNSIGNED NOT NULL DEFAULT 0,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NULL DEFAULT NULL,
deleted_at TIMESTAMP NULL DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
SET @dwatch_has_error_list_id := (
SELECT COUNT(*) FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'robot_error_reports'
AND COLUMN_NAME = 'error_list_id'
);
SET @dwatch_add_error_list_id := IF(
@dwatch_has_error_list_id = 0,
'ALTER TABLE robot_error_reports ADD COLUMN error_list_id BIGINT UNSIGNED NULL DEFAULT NULL AFTER error_detail',
'DO 0'
);
PREPARE dwatch_stmt FROM @dwatch_add_error_list_id;
EXECUTE dwatch_stmt;
DEALLOCATE PREPARE dwatch_stmt;