18 lines
712 B
MySQL
18 lines
712 B
MySQL
|
|
CREATE TABLE IF NOT EXISTS tasks (
|
||
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
|
|
title TEXT NOT NULL CHECK (length(trim(title)) > 0),
|
||
|
|
description TEXT NOT NULL DEFAULT '',
|
||
|
|
due_date TEXT NOT NULL CHECK (due_date GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]'),
|
||
|
|
topic TEXT NOT NULL CHECK (length(trim(topic)) > 0),
|
||
|
|
status TEXT NOT NULL DEFAULT 'Todo' CHECK (status IN ('Todo', 'In-Progress', 'Complete')),
|
||
|
|
archived_at TEXT,
|
||
|
|
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||
|
|
);
|
||
|
|
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_tasks_active_status
|
||
|
|
ON tasks (archived_at, status, due_date);
|
||
|
|
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_tasks_topic
|
||
|
|
ON tasks (topic COLLATE NOCASE);
|