59 lines
1.5 KiB
SQL
59 lines
1.5 KiB
SQL
-- description: Change set number column from INTEGER to TEXT to support alphanumeric set numbers
|
|
|
|
-- Temporarily disable foreign key constraints for this migration
|
|
-- This is necessary because we're recreating a table that other tables reference
|
|
-- We verify integrity at the end to ensure safety
|
|
PRAGMA foreign_keys=OFF;
|
|
|
|
BEGIN TRANSACTION;
|
|
|
|
-- Create new table with TEXT number column
|
|
CREATE TABLE "rebrickable_sets_new" (
|
|
"set" TEXT NOT NULL,
|
|
"number" TEXT NOT NULL,
|
|
"version" INTEGER NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"year" INTEGER NOT NULL,
|
|
"theme_id" INTEGER NOT NULL,
|
|
"number_of_parts" INTEGER NOT NULL,
|
|
"image" TEXT,
|
|
"url" TEXT,
|
|
"last_modified" TEXT,
|
|
PRIMARY KEY("set")
|
|
);
|
|
|
|
-- Copy all data from old table to new table
|
|
-- Cast INTEGER number to TEXT explicitly
|
|
INSERT INTO "rebrickable_sets_new"
|
|
SELECT
|
|
"set",
|
|
CAST("number" AS TEXT),
|
|
"version",
|
|
"name",
|
|
"year",
|
|
"theme_id",
|
|
"number_of_parts",
|
|
"image",
|
|
"url",
|
|
"last_modified"
|
|
FROM "rebrickable_sets";
|
|
|
|
-- Drop old table
|
|
DROP TABLE "rebrickable_sets";
|
|
|
|
-- Rename new table to original name
|
|
ALTER TABLE "rebrickable_sets_new" RENAME TO "rebrickable_sets";
|
|
|
|
-- Recreate the index
|
|
CREATE INDEX IF NOT EXISTS idx_rebrickable_sets_number_version
|
|
ON rebrickable_sets(number, version);
|
|
|
|
-- Verify foreign key integrity before committing
|
|
-- This ensures we haven't broken any references
|
|
PRAGMA foreign_key_check;
|
|
|
|
COMMIT;
|
|
|
|
-- Re-enable foreign key constraints
|
|
PRAGMA foreign_keys=ON;
|