feat(tasks): add archived status support in API and schema
This commit is contained in:
@@ -349,6 +349,37 @@ const MIGRATIONS_SQL = {
|
|||||||
17: `
|
17: `
|
||||||
UPDATE calendar_events SET icon = 'tooth' WHERE icon = 'drill';
|
UPDATE calendar_events SET icon = 'tooth' WHERE icon = 'drill';
|
||||||
`,
|
`,
|
||||||
|
18: `
|
||||||
|
CREATE TABLE tasks_new (
|
||||||
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
title TEXT NOT NULL,
|
||||||
|
description TEXT,
|
||||||
|
category TEXT NOT NULL DEFAULT 'Sonstiges',
|
||||||
|
priority TEXT NOT NULL DEFAULT 'none'
|
||||||
|
CHECK(priority IN ('none', 'low', 'medium', 'high', 'urgent')),
|
||||||
|
status TEXT NOT NULL DEFAULT 'open'
|
||||||
|
CHECK(status IN ('open', 'in_progress', 'done', 'archived')),
|
||||||
|
due_date TEXT,
|
||||||
|
due_time TEXT,
|
||||||
|
assigned_to INTEGER REFERENCES users(id) ON DELETE SET NULL,
|
||||||
|
created_by INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||||
|
is_recurring INTEGER NOT NULL DEFAULT 0,
|
||||||
|
recurrence_rule TEXT,
|
||||||
|
parent_task_id INTEGER REFERENCES tasks(id) ON DELETE CASCADE,
|
||||||
|
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')),
|
||||||
|
updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ', 'now'))
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO tasks_new
|
||||||
|
SELECT * FROM tasks;
|
||||||
|
|
||||||
|
DROP TABLE tasks;
|
||||||
|
ALTER TABLE tasks_new RENAME TO tasks;
|
||||||
|
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_tasks_status ON tasks(status);
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_tasks_assigned ON tasks(assigned_to);
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_tasks_parent ON tasks(parent_task_id);
|
||||||
|
`,
|
||||||
};
|
};
|
||||||
|
|
||||||
export { MIGRATIONS_SQL };
|
export { MIGRATIONS_SQL };
|
||||||
|
|||||||
@@ -775,6 +775,41 @@ const MIGRATIONS = [
|
|||||||
UPDATE calendar_events SET icon = 'tooth' WHERE icon = 'drill';
|
UPDATE calendar_events SET icon = 'tooth' WHERE icon = 'drill';
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
version: 25,
|
||||||
|
description: 'Allow archived status for tasks',
|
||||||
|
up: `
|
||||||
|
CREATE TABLE tasks_new (
|
||||||
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
title TEXT NOT NULL,
|
||||||
|
description TEXT,
|
||||||
|
category TEXT NOT NULL DEFAULT 'Sonstiges',
|
||||||
|
priority TEXT NOT NULL DEFAULT 'none'
|
||||||
|
CHECK(priority IN ('none', 'low', 'medium', 'high', 'urgent')),
|
||||||
|
status TEXT NOT NULL DEFAULT 'open'
|
||||||
|
CHECK(status IN ('open', 'in_progress', 'done', 'archived')),
|
||||||
|
due_date TEXT,
|
||||||
|
due_time TEXT,
|
||||||
|
assigned_to INTEGER REFERENCES users(id) ON DELETE SET NULL,
|
||||||
|
created_by INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||||
|
is_recurring INTEGER NOT NULL DEFAULT 0,
|
||||||
|
recurrence_rule TEXT,
|
||||||
|
parent_task_id INTEGER REFERENCES tasks(id) ON DELETE CASCADE,
|
||||||
|
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')),
|
||||||
|
updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ', 'now'))
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO tasks_new
|
||||||
|
SELECT * FROM tasks;
|
||||||
|
|
||||||
|
DROP TABLE tasks;
|
||||||
|
ALTER TABLE tasks_new RENAME TO tasks;
|
||||||
|
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_tasks_status ON tasks(status);
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_tasks_assigned ON tasks(assigned_to);
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_tasks_parent ON tasks(parent_task_id);
|
||||||
|
`,
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ const router = express.Router();
|
|||||||
// --------------------------------------------------------
|
// --------------------------------------------------------
|
||||||
|
|
||||||
const VALID_PRIORITIES = ['none', 'low', 'medium', 'high', 'urgent'];
|
const VALID_PRIORITIES = ['none', 'low', 'medium', 'high', 'urgent'];
|
||||||
const VALID_STATUSES = ['open', 'in_progress', 'done'];
|
const VALID_STATUSES = ['open', 'in_progress', 'done', 'archived'];
|
||||||
const VALID_CATEGORIES = ['household', 'school', 'shopping', 'repair',
|
const VALID_CATEGORIES = ['household', 'school', 'shopping', 'repair',
|
||||||
'health', 'finance', 'leisure', 'misc'];
|
'health', 'finance', 'leisure', 'misc'];
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user