-- Create projects table
CREATE TABLE projects (
tenant_id UUID,
project_id UUID DEFAULT gen_random_uuid(),
user_id UUID,
project_name VARCHAR(100) NOT NULL,
project_description TEXT,
start_date DATE,
end_date DATE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (tenant_id, project_id),
FOREIGN KEY (tenant_id, user_id) REFERENCES tenant_users(tenant_id, user_id)
);
-- Create tasks table linked to projects
CREATE TABLE tasks (
tenant_id UUID,
task_id UUID DEFAULT gen_random_uuid(),
project_id UUID,
user_id UUID,
task_name VARCHAR(100) NOT NULL,
task_description TEXT,
task_status VARCHAR(50) NOT NULL,
due_date DATE,
vector_embedding VECTOR(768), -- Adjust the dimensions as needed
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (tenant_id, task_id),
FOREIGN KEY (tenant_id, project_id) REFERENCES projects(tenant_id, project_id),
FOREIGN KEY (tenant_id, user_id) REFERENCES tenant_users(tenant_id, user_id)
);
-- Create task_status_history table
CREATE TABLE task_status_history (
tenant_id UUID,
history_id UUID DEFAULT gen_random_uuid(),
task_id UUID,
old_status VARCHAR(50) NOT NULL,
new_status VARCHAR(50) NOT NULL,
changed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
changed_by UUID,
PRIMARY KEY (tenant_id, history_id),
FOREIGN KEY (tenant_id, task_id) REFERENCES tasks(tenant_id, task_id),
FOREIGN KEY (tenant_id, changed_by) REFERENCES tenant_users(tenant_id, user_id)
);
-- Create task_comments table
CREATE TABLE task_comments (
tenant_id UUID,
comment_id UUID DEFAULT gen_random_uuid(),
task_id UUID,
user_id UUID,
comment_text TEXT NOT NULL,
vector_embedding VECTOR(768), -- Adjust the dimensions as needed
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (tenant_id, comment_id),
FOREIGN KEY (tenant_id, task_id) REFERENCES tasks(tenant_id, task_id),
FOREIGN KEY (tenant_id, user_id) REFERENCES tenant_users(tenant_id, user_id)
);
-- Create roadmap table for global planning
CREATE TABLE roadmap (
tenant_id UUID,
roadmap_id UUID DEFAULT gen_random_uuid(),
task_id UUID,
user_id UUID,
milestone_date DATE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (tenant_id, roadmap_id),
FOREIGN KEY (tenant_id, task_id) REFERENCES tasks(tenant_id, task_id),
FOREIGN KEY (tenant_id, user_id) REFERENCES tenant_users(tenant_id, user_id)
);