37748-vm/db/migrations/20260123_init.sql
2026-01-23 13:40:12 +00:00

78 lines
2.6 KiB
SQL

-- Initial Schema for Repairs Multi-tenant App
CREATE TABLE IF NOT EXISTS companies (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
uprn_required BOOLEAN DEFAULT FALSE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
company_id INT NOT NULL,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
role ENUM('admin', 'standard') DEFAULT 'standard',
FOREIGN KEY (company_id) REFERENCES companies(id)
);
CREATE TABLE IF NOT EXISTS clients (
id INT AUTO_INCREMENT PRIMARY KEY,
company_id INT NOT NULL,
name VARCHAR(255) NOT NULL,
is_active BOOLEAN DEFAULT TRUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (company_id) REFERENCES companies(id)
);
CREATE TABLE IF NOT EXISTS job_statuses (
id INT AUTO_INCREMENT PRIMARY KEY,
company_id INT NOT NULL,
name VARCHAR(255) NOT NULL,
is_default BOOLEAN DEFAULT FALSE,
FOREIGN KEY (company_id) REFERENCES companies(id)
);
CREATE TABLE IF NOT EXISTS jobs (
id INT AUTO_INCREMENT PRIMARY KEY,
company_id INT NOT NULL,
job_ref VARCHAR(100) NOT NULL,
uprn VARCHAR(100),
address_1 VARCHAR(255),
address_2 VARCHAR(255),
address_3 VARCHAR(255),
postcode VARCHAR(20),
description TEXT,
status_id INT,
client_id INT,
works_approved BOOLEAN DEFAULT FALSE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE(company_id, job_ref),
FOREIGN KEY (company_id) REFERENCES companies(id),
FOREIGN KEY (status_id) REFERENCES job_statuses(id),
FOREIGN KEY (client_id) REFERENCES clients(id)
);
CREATE TABLE IF NOT EXISTS activity_logs (
id INT AUTO_INCREMENT PRIMARY KEY,
job_id INT NOT NULL,
company_id INT NOT NULL,
user_id INT NOT NULL,
user_name VARCHAR(255),
event_type VARCHAR(100),
field_name VARCHAR(100),
old_value TEXT,
new_value TEXT,
metadata JSON,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (job_id) REFERENCES jobs(id),
FOREIGN KEY (company_id) REFERENCES companies(id)
);
-- Seed Initial Demo Company
INSERT INTO companies (name) VALUES ('Repairs Pro Ltd');
SET @company_id = LAST_INSERT_ID();
INSERT INTO users (company_id, name, email, role) VALUES (@company_id, 'Admin User', 'admin@repairspro.com', 'admin');
INSERT INTO job_statuses (company_id, name, is_default) VALUES (@company_id, 'To Be Surveyed', 1), (@company_id, 'Booking Required', 0), (@company_id, 'Completed', 0);
INSERT INTO clients (company_id, name) VALUES (@company_id, 'Main Housing Assoc');