diff --git a/backend/migrations/20251023043152_create_projects.down.sql b/backend/migrations/20251023043152_create_projects.down.sql new file mode 100644 index 0000000..3b74f50 --- /dev/null +++ b/backend/migrations/20251023043152_create_projects.down.sql @@ -0,0 +1,17 @@ +ALTER TABLE tasks RENAME TO tasks_old; + +CREATE TABLE tasks ( + id UUID PRIMARY KEY NOT NULL, + title VARCHAR NOT NULL, + description TEXT, + status TEXT CHECK(status IN ('todo', 'done', 'backlog')) DEFAULT 'todo', + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + completed_at TIMESTAMP +); + +INSERT INTO tasks SELECT id, title, description, status, created_at, updated_at, completed_at FROM tasks_old; + +DROP TABLE tasks_old; +DROP TABLE projects; +DROP TABLE folders; diff --git a/backend/migrations/20251023043152_create_projects.up.sql b/backend/migrations/20251023043152_create_projects.up.sql new file mode 100644 index 0000000..81c8aa1 --- /dev/null +++ b/backend/migrations/20251023043152_create_projects.up.sql @@ -0,0 +1,39 @@ +CREATE TABLE folders ( + id UUID PRIMARY KEY NOT NULL, + title VARCHAR NOT NULL, + sort_order INTEGER NOT NULL UNIQUE, + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +CREATE TABLE projects ( + id UUID PRIMARY KEY NOT NULL, + title VARCHAR NOT NULL, + color VARCHAR(7) NOT NULL, -- hex code + folder_id UUID, + sort_order INTEGER NOT NULL UNIQUE, + status TEXT CHECK(status IN ('active', 'done', 'backlog')) DEFAULT 'active', + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + completed_at TIMESTAMP, + FOREIGN KEY(folder_id) REFERENCES folders(id) +); + +ALTER TABLE tasks RENAME TO tasks_old; + +-- Add up migration script here +CREATE TABLE tasks ( + id UUID PRIMARY KEY NOT NULL, + title VARCHAR NOT NULL, + description TEXT, + status TEXT CHECK(status IN ('todo', 'done', 'backlog')) DEFAULT 'todo', + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + completed_at TIMESTAMP, + project_id UUID, + FOREIGN KEY(project_id) REFERENCES projects(id) +); + +INSERT INTO tasks SELECT *, NULL as project_id FROM tasks_old; + +DROP TABLE tasks_old;