102 lines
2.7 KiB
JavaScript
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
|
|
}
|
|
}
|