Bases: SQLModel
Crossing table between User and ProjectV2
Source code in fractal_server/app/models/linkuserproject.py
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 | class LinkUserProjectV2(SQLModel, table=True):
"""
Crossing table between User and ProjectV2
"""
project_id: int = Field(
foreign_key="projectv2.id", primary_key=True, ondelete="CASCADE"
)
user_id: int = Field(foreign_key="user_oauth.id", primary_key=True)
is_owner: bool
is_verified: bool
permissions: str
__table_args__ = (
Index(
"ix_linkuserprojectv2_one_owner_per_project",
"project_id",
unique=True,
postgresql_where=column("is_owner").is_(True),
),
CheckConstraint(
"NOT (is_owner AND NOT is_verified)",
name="owner_is_verified",
),
CheckConstraint(
"NOT (is_owner AND permissions <> 'rwx')",
name="owner_full_permissions",
),
CheckConstraint(
"permissions IN ('r', 'rw', 'rwx')",
name="valid_permissions",
),
)
|