diff --git a/investigation/01_create_tables.json b/investigation/01_create_tables.json new file mode 100644 index 000000000..230e3dcfa --- /dev/null +++ b/investigation/01_create_tables.json @@ -0,0 +1,42 @@ +{ + "name": "01_create_tables", + "operations": [ + { + "create_table": { + "name": "employees", + "columns": [ + { + "name": "id", + "type": "serial", + "pk": true + }, + { + "name": "name", + "type": "varchar(255)" + }, + { + "name": "department_id", + "type": "integer", + "nullable": true + } + ] + } + }, + { + "create_table": { + "name": "departments", + "columns": [ + { + "name": "id", + "type": "serial", + "pk": true + }, + { + "name": "name", + "type": "varchar(255)" + } + ] + } + } + ] +} diff --git a/investigation/02_add_fk.json b/investigation/02_add_fk.json new file mode 100644 index 000000000..b4427bfd1 --- /dev/null +++ b/investigation/02_add_fk.json @@ -0,0 +1,18 @@ +{ + "name": "02_add_fk", + "operations": [ + { + "alter_column": { + "table": "employees", + "column": "department_id", + "references": { + "name": "fk_employees_department_id", + "table": "departments", + "column": "id" + }, + "up": "''", + "down": "''" + } + } + ] +} diff --git a/investigation/03_set_fk_not_null.json b/investigation/03_set_fk_not_null.json new file mode 100644 index 000000000..1b0b46849 --- /dev/null +++ b/investigation/03_set_fk_not_null.json @@ -0,0 +1,14 @@ +{ + "name": "03_set_fk_not_null", + "operations": [ + { + "alter_column": { + "table": "employees", + "column": "department_id", + "nullable": false, + "up": "(SELECT CASE WHEN department_id IS NULL THEN 1 ELSE department_id END)", + "down": "" + } + } + ] +} diff --git a/investigation/insert.sql b/investigation/insert.sql new file mode 100644 index 000000000..87bf2d4f4 --- /dev/null +++ b/investigation/insert.sql @@ -0,0 +1,2 @@ +insert into departments (name) values ('engineering'), ('marketing'); +insert into employees (name, department_id) values ('alice', 1), ('bob', 2);