1- # This is based on fastapi_users_db_sqlmodel
2- # <https://github.com/fastapi-users/fastapi-users-db-sqlmodel>
3- # Original Copyright
4- # Copyright 2022 François Voron
5- # License: MIT
6- #
7- # Modified by:
8- # Tommaso Comparin <[email protected] > 9- #
10- # Copyright 2022 (C) Friedrich Miescher Institute for Biomedical Research and
11- # University of Zurich
121from datetime import datetime
132from typing import Optional
143
154from pydantic import ConfigDict
165from pydantic import EmailStr
176from sqlalchemy import Column
7+ from sqlalchemy import String
8+ from sqlalchemy .dialects .postgresql import ARRAY
189from sqlalchemy .dialects .postgresql import JSONB
1910from sqlalchemy .types import DateTime
2011from sqlmodel import Field
2112from sqlmodel import Relationship
2213from sqlmodel import SQLModel
2314
24- from .user_settings import UserSettings
2515from fractal_server .utils import get_timestamp
2616
2717
@@ -74,17 +64,20 @@ class UserOAuth(SQLModel, table=True):
7464 is_superuser:
7565 is_verified:
7666 oauth_accounts:
77- user_settings_id:
7867 profile_id:
79- settings:
68+ project_dir:
69+ slurm_accounts:
8070 """
8171
72+ model_config = ConfigDict (from_attributes = True )
73+
8274 __tablename__ = "user_oauth"
8375
8476 id : int | None = Field (default = None , primary_key = True )
8577
8678 email : EmailStr = Field (
87- sa_column_kwargs = {"unique" : True , "index" : True }, nullable = False
79+ sa_column_kwargs = {"unique" : True , "index" : True },
80+ nullable = False ,
8881 )
8982 hashed_password : str
9083 is_active : bool = Field (default = True , nullable = False )
@@ -96,18 +89,23 @@ class UserOAuth(SQLModel, table=True):
9689 sa_relationship_kwargs = {"lazy" : "joined" , "cascade" : "all, delete" },
9790 )
9891
99- user_settings_id : int | None = Field (
100- foreign_key = "user_settings.id" , default = None
101- )
10292 profile_id : int | None = Field (
10393 foreign_key = "profile.id" ,
10494 default = None ,
10595 ondelete = "SET NULL" ,
10696 )
107- settings : UserSettings | None = Relationship (
108- sa_relationship_kwargs = dict (lazy = "selectin" , cascade = "all, delete" )
97+
98+ # TODO-2.17.1: update to `project_dir: str`
99+ project_dir : str = Field (
100+ sa_column = Column (
101+ String ,
102+ server_default = "/PLACEHOLDER" ,
103+ nullable = False ,
104+ )
105+ )
106+ slurm_accounts : list [str ] = Field (
107+ sa_column = Column (ARRAY (String ), server_default = "{}" ),
109108 )
110- model_config = ConfigDict (from_attributes = True )
111109
112110
113111class UserGroup (SQLModel , table = True ):
0 commit comments