learnhouse/apps/api/src/db/organizations.py

64 lines
1.7 KiB
Python

from typing import Optional
from pydantic import BaseModel
from sqlmodel import Field, SQLModel, JSON, Column
from src.db.roles import RoleRead
from src.db.organization_config import OrganizationConfig
class OrganizationBase(SQLModel):
name: str
description: Optional[str]
about: Optional[str]
socials: Optional[dict] = Field(default={}, sa_column=Column(JSON))
links: Optional[dict] = Field(default={}, sa_column=Column(JSON))
logo_image: Optional[str]
thumbnail_image: Optional[str]
previews: Optional[dict] = Field(default={}, sa_column=Column(JSON))
explore: Optional[bool] = Field(default=False)
label: Optional[str]
slug: str
email: str
class Organization(OrganizationBase, table=True):
id: Optional[int] = Field(default=None, primary_key=True)
org_uuid: str = ""
creation_date: str = ""
update_date: str = ""
class OrganizationWithConfig(BaseModel):
org: Organization
config: OrganizationConfig
class OrganizationUpdate(SQLModel):
name: Optional[str] = None
description: Optional[str] = None
about: Optional[str] = None
socials: Optional[dict] = None
links: Optional[dict] = None
logo_image: Optional[str] = None
thumbnail_image: Optional[str] = None
previews: Optional[dict] = None
label: Optional[str] = None
slug: Optional[str] = None
email: Optional[str] = None
explore: Optional[bool] = None
class OrganizationCreate(OrganizationBase):
pass
class OrganizationRead(OrganizationBase):
id: int
org_uuid: str
config: Optional[OrganizationConfig | dict]
creation_date: str
update_date: str
class OrganizationUser(BaseModel):
from src.db.users import UserRead
user: UserRead
role: RoleRead