-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathschema.sql
More file actions
108 lines (98 loc) · 3.51 KB
/
schema.sql
File metadata and controls
108 lines (98 loc) · 3.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
CREATE TABLE IF NOT EXISTS users (
id SERIAL PRIMARY KEY,
username VARCHAR(255) UNIQUE NOT NULL,
password VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS roadmaps (
id SERIAL PRIMARY KEY,
title VARCHAR(255) NOT NULL,
description TEXT,
owner_id INTEGER REFERENCES users(id) ON DELETE CASCADE,
is_public BOOLEAN DEFAULT false,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS roadmap_collaborators (
roadmap_id INTEGER REFERENCES roadmaps(id) ON DELETE CASCADE,
user_id INTEGER REFERENCES users(id) ON DELETE CASCADE,
added_at TIMESTAMP DEFAULT NOW(),
PRIMARY KEY (roadmap_id, user_id)
);
CREATE TABLE IF NOT EXISTS milestones (
id SERIAL PRIMARY KEY,
roadmap_id INTEGER REFERENCES roadmaps(id) ON DELETE CASCADE,
title VARCHAR(255) NOT NULL,
description TEXT,
date DATE NOT NULL,
x INTEGER DEFAULT 50,
y INTEGER DEFAULT 50,
priority VARCHAR(20) DEFAULT 'medium',
status VARCHAR(20) DEFAULT 'not_started',
created_at TIMESTAMP DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS notes (
id SERIAL PRIMARY KEY,
roadmap_id INTEGER REFERENCES roadmaps(id) ON DELETE CASCADE,
content TEXT NOT NULL,
x INTEGER DEFAULT 50,
y INTEGER DEFAULT 50,
width INTEGER DEFAULT 200,
height INTEGER DEFAULT 150,
color VARCHAR(20) DEFAULT 'yellow',
created_at TIMESTAMP DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS connections (
id SERIAL PRIMARY KEY,
roadmap_id INTEGER REFERENCES roadmaps(id) ON DELETE CASCADE,
from_type VARCHAR(20) NOT NULL,
from_id INTEGER NOT NULL,
to_type VARCHAR(20) NOT NULL,
to_id INTEGER NOT NULL,
style VARCHAR(20) DEFAULT 'solid',
created_at TIMESTAMP DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS risk_markers (
id SERIAL PRIMARY KEY,
roadmap_id INTEGER REFERENCES roadmaps(id) ON DELETE CASCADE,
milestone_id INTEGER REFERENCES milestones(id) ON DELETE CASCADE,
title VARCHAR(255) NOT NULL,
description TEXT,
severity VARCHAR(20) DEFAULT 'medium',
created_at TIMESTAMP DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS comments (
id SERIAL PRIMARY KEY,
roadmap_id INTEGER REFERENCES roadmaps(id) ON DELETE CASCADE,
user_id INTEGER REFERENCES users(id) ON DELETE CASCADE,
content TEXT NOT NULL,
created_at TIMESTAMP DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS activity_log (
id SERIAL PRIMARY KEY,
roadmap_id INTEGER REFERENCES roadmaps(id) ON DELETE CASCADE,
user_id INTEGER REFERENCES users(id) ON DELETE CASCADE,
action VARCHAR(255) NOT NULL,
details TEXT,
created_at TIMESTAMP DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS webhooks (
id SERIAL PRIMARY KEY,
roadmap_id INTEGER REFERENCES roadmaps(id) ON DELETE CASCADE,
service VARCHAR(50) NOT NULL,
webhook_url TEXT NOT NULL,
events TEXT[] DEFAULT '{}',
is_active BOOLEAN DEFAULT true,
created_at TIMESTAMP DEFAULT NOW()
);
CREATE INDEX idx_roadmaps_owner ON roadmaps(owner_id);
CREATE INDEX idx_roadmaps_public ON roadmaps(is_public);
CREATE INDEX idx_milestones_roadmap ON milestones(roadmap_id);
CREATE INDEX idx_notes_roadmap ON notes(roadmap_id);
CREATE INDEX idx_connections_roadmap ON connections(roadmap_id);
CREATE INDEX idx_risk_markers_roadmap ON risk_markers(roadmap_id);
CREATE INDEX idx_comments_roadmap ON comments(roadmap_id);
CREATE INDEX idx_activity_log_roadmap ON activity_log(roadmap_id);
CREATE INDEX idx_webhooks_roadmap ON webhooks(roadmap_id);
CREATE INDEX idx_collaborators_roadmap ON roadmap_collaborators(roadmap_id);
CREATE INDEX idx_collaborators_user ON roadmap_collaborators(user_id);