-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathschema.dbml
109 lines (86 loc) · 2.5 KB
/
schema.dbml
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
109
Project authentication {
database_type: 'PostgreSQL'
Note: 'Authentication database'
}
//// ------------------------------------------------------
////
//// Tables
////
//// ------------------------------------------------------
Table auth.accounts as a {
id UUID [pk]
created_at DateTime [default: `now()`, not null]
Note: 'Contains users sign in information'
}
Table auth.refresh_tokens as rt {
account_id String [not null]
refresh_token String [unique, not null]
created_at DateTime [default: `now()`, not null]
indexes {
(account_id, refresh_token) [pk]
}
Note: 'Contains codes to be used to refresh the access token'
}
Table auth.magic_link_codes as mlc {
account_id String [pk]
code String [not null]
is_first_access Boolean [not null]
created_at DateTime [default: `now()`, not null]
Note: 'Contains codes to be used by the users to login'
}
Table auth.sign_in_providers as sip {
account_id String [not null]
provider SignInProviderEnum [not null]
provider_id String [not null]
access_token String [not null]
refresh_token String
expires_at DateTime [not null]
created_at DateTime [default: `now()`, not null]
indexes {
(account_id, provider, provider_id) [pk]
}
Note: 'Contains user\'s link to sign in providers, like google, discord, etc'
}
Table auth.email_addresses as ea {
account_id String [not null]
email_address String [not null]
created_at DateTime [default: `now()`, not null]
verified_at DateTime
indexes {
(account_id, email_address) [pk]
(email_address) [unique]
}
Note: 'Contains user\'s email addresses'
}
Table auth.phone_numbers as pn {
account_id String [not null]
country_code String [not null]
phone_number String [not null]
created_at DateTime [default: `now()`, not null]
verified_at DateTime
indexes {
(account_id, country_code, phone_number) [pk]
(country_code, phone_number) [unique]
}
Note: 'Contains user\'s phone numbers'
}
//// ------------------------------------------------------
////
//// Enums
////
//// ------------------------------------------------------
Enum SignInProviderEnum {
FACEBOOK
GOOGLE
DISCORD
}
//// ------------------------------------------------------
////
//// Relationships
////
//// ------------------------------------------------------
Ref: rt.account_id > a.id [delete: Cascade]
Ref: mlc.account_id > a.id [delete: Cascade]
Ref: sip.account_id > a.id [delete: Cascade]
Ref: ea.account_id > a.id [delete: Cascade]
Ref: pn.account_id > a.id [delete: Cascade]