-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdatabase_schema.dbml
More file actions
63 lines (53 loc) · 1.7 KB
/
Copy pathdatabase_schema.dbml
File metadata and controls
63 lines (53 loc) · 1.7 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
Project todo_db {
database_type: 'PostgreSQL'
}
// === IDENTITY MODULE ===
Table users {
id UUID [pk] // hibernate side generation UUIDv7
first_name VARCHAR [not null]
last_name VARCHAR [not null]
email VARCHAR [unique, not null]
password_hash VARCHAR [not null]
last_password_changed_at TIMESTAMPTZ
created_at TIMESTAMPTZ [not null, default: `now()`]
updated_at TIMESTAMPTZ
}
Table user_roles {
user_id UUID [pk, not null, ref: > users.id]
role VARCHAR [pk, not null, note: "CHECK (role IN ('USER', 'ADMIN'))"]
}
// === TASKS MODULE ===
Table todo_tasks {
id UUID [pk] // hibernate side generation UUIDv7
version BIGINT [not null, default: 0]
name VARCHAR [not null]
priority VARCHAR [not null, note: "CHECK (priority IN ('LOW', 'MEDIUM', 'HIGH'))"]
priority_weight SMALLINT [not null]
state VARCHAR [not null, note: "CHECK (state IN ('TODO', 'IN_PROGRESS', 'DONE'))"]
owner_id UUID [not null]
created_at TIMESTAMPTZ [not null, default: `now()`]
updated_at TIMESTAMPTZ
indexes {
priority [name: 'idx_task_priority']
state [name: 'idx_task_state']
owner_id [name: 'idx_task_owner_id']
}
}
Table todo_task_collaborators {
task_id UUID [pk, not null, ref: > todo_tasks.id]
user_id UUID [pk, not null]
}
// === AUTH MODULE ===
Table jwt_tokens {
id UUID [pk] // jti, hibernate side generation UUIDv7
revoked BOOLEAN [not null, default: false]
expires_at TIMESTAMPTZ [not null]
issued_at TIMESTAMPTZ [not null]
user_id UUID [not null]
token_type VARCHAR [not null, note: "CHECK (token_type IN ('REFRESH', 'ACCESS'))"]
created_at TIMESTAMPTZ [not null, default: `now()`]
updated_at TIMESTAMPTZ
indexes {
user_id [name: "idx_jwt_token_user_id"]
}
}