48 lines
1.1 KiB
Python
48 lines
1.1 KiB
Python
"""Organization schemas."""
|
|
from datetime import datetime
|
|
from typing import Optional, List
|
|
from pydantic import BaseModel, EmailStr
|
|
from app.models.organization import MemberRole
|
|
|
|
class OrganizationBase(BaseModel):
|
|
name: str
|
|
description: Optional[str] = None
|
|
|
|
class OrganizationCreate(OrganizationBase):
|
|
slug: str
|
|
|
|
class OrganizationUpdate(BaseModel):
|
|
name: Optional[str] = None
|
|
description: Optional[str] = None
|
|
logo_url: Optional[str] = None
|
|
slack_webhook_url: Optional[str] = None
|
|
teams_webhook_url: Optional[str] = None
|
|
|
|
class OrganizationRead(OrganizationBase):
|
|
id: int
|
|
slug: str
|
|
logo_url: Optional[str] = None
|
|
plan: str
|
|
is_active: bool
|
|
created_at: datetime
|
|
member_count: Optional[int] = None
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
class MemberCreate(BaseModel):
|
|
email: EmailStr
|
|
role: MemberRole = MemberRole.ANALYST
|
|
|
|
class MemberRead(BaseModel):
|
|
id: int
|
|
user_id: int
|
|
role: MemberRole
|
|
joined_at: datetime
|
|
user_email: Optional[str] = None
|
|
user_name: Optional[str] = None
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|