Files
panel/src/lib/init-db.js

102 lines
2.7 KiB
JavaScript

import db from "./db";
export default function initializeDatabase() {
db.exec(`
-- Table: contracts
CREATE TABLE IF NOT EXISTS contracts (
contract_id INTEGER PRIMARY KEY AUTOINCREMENT,
contract_number TEXT NOT NULL,
contract_name TEXT,
customer_contract_number TEXT,
customer TEXT,
investor TEXT,
date_signed TEXT,
finish_date TEXT
);
-- Table: projects
CREATE TABLE IF NOT EXISTS projects (
project_id INTEGER PRIMARY KEY AUTOINCREMENT,
contract_id INTEGER,
project_name TEXT NOT NULL,
project_number TEXT NOT NULL,
address TEXT,
plot TEXT,
district TEXT,
unit TEXT,
city TEXT,
investment_number TEXT,
finish_date TEXT,
wp TEXT,
contact TEXT,
notes TEXT,
FOREIGN KEY (contract_id) REFERENCES contracts(contract_id)
);
-- Table: tasks
CREATE TABLE IF NOT EXISTS tasks (
task_id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
max_wait_days INTEGER DEFAULT 0,
is_standard INTEGER NOT NULL DEFAULT 0
); -- Table: project_tasks
CREATE TABLE IF NOT EXISTS project_tasks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
project_id INTEGER NOT NULL,
task_template_id INTEGER,
custom_task_name TEXT,
custom_max_wait_days INTEGER DEFAULT 0,
status TEXT NOT NULL DEFAULT 'pending',
date_added TEXT DEFAULT CURRENT_TIMESTAMP,
priority TEXT DEFAULT 'normal',
FOREIGN KEY (project_id) REFERENCES projects(project_id),
FOREIGN KEY (task_template_id) REFERENCES tasks(task_id)
);
-- Table: notes
CREATE TABLE IF NOT EXISTS notes (
note_id INTEGER PRIMARY KEY AUTOINCREMENT,
project_id INTEGER,
task_id INTEGER,
note TEXT NOT NULL,
note_date TEXT DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (project_id) REFERENCES projects(project_id),
FOREIGN KEY (task_id) REFERENCES project_tasks(id)
);
`);
// Migration: Add custom task columns if they don't exist
try {
db.exec(`
ALTER TABLE project_tasks ADD COLUMN custom_task_name TEXT;
`);
} catch (e) {
// Column already exists, ignore error
}
try {
db.exec(`
ALTER TABLE project_tasks ADD COLUMN custom_max_wait_days INTEGER DEFAULT 0;
`);
} catch (e) {
// Column already exists, ignore error
}
// Migration: Add description column to tasks table
try {
db.exec(`
ALTER TABLE tasks ADD COLUMN description TEXT;
`);
} catch (e) {
// Column already exists, ignore error
}
// Migration: Add description column to project_tasks table
try {
db.exec(`
ALTER TABLE project_tasks ADD COLUMN custom_description TEXT;
`);
} catch (e) {
// Column already exists, ignore error
}
}