107 lines
2.2 KiB
Python
107 lines
2.2 KiB
Python
from pydantic import BaseModel, EmailStr
|
|
from typing import List, Optional
|
|
from datetime import datetime
|
|
|
|
class UserBase(BaseModel):
|
|
id: str
|
|
name: str
|
|
role: str
|
|
hue: int
|
|
initials: str
|
|
email: Optional[str] = None
|
|
phone: Optional[str] = None
|
|
photo: Optional[str] = None
|
|
account_type: str = "standard"
|
|
|
|
class UserCreate(UserBase):
|
|
password: str
|
|
|
|
class User(UserBase):
|
|
created_at: datetime
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
class TaskNoteBase(BaseModel):
|
|
body: str
|
|
|
|
class TaskNoteCreate(TaskNoteBase):
|
|
task_id: str
|
|
author_id: str
|
|
|
|
class TaskNote(TaskNoteBase):
|
|
id: int
|
|
task_id: str
|
|
author_id: str
|
|
created_at: datetime
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
class TagBase(BaseModel):
|
|
tag: str
|
|
|
|
class Tag(TagBase):
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
class TaskBase(BaseModel):
|
|
title: str
|
|
description: Optional[str] = None
|
|
assignee_id: str
|
|
added_by: str
|
|
priority: str
|
|
source: str
|
|
status: str = "open"
|
|
due_at: Optional[datetime] = None
|
|
reminder_at: Optional[datetime] = None
|
|
|
|
class TaskCreate(TaskBase):
|
|
id: Optional[str] = None
|
|
tags: List[str] = []
|
|
|
|
class TaskUpdate(BaseModel):
|
|
title: Optional[str] = None
|
|
description: Optional[str] = None
|
|
assignee_id: Optional[str] = None
|
|
priority: Optional[str] = None
|
|
status: Optional[str] = None
|
|
due_at: Optional[datetime] = None
|
|
reminder_at: Optional[datetime] = None
|
|
|
|
class Task(TaskBase):
|
|
id: str
|
|
added_at: datetime
|
|
tags: List[Tag] = []
|
|
notes: List[TaskNote] = []
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
class AuditLogBase(BaseModel):
|
|
actor: str
|
|
action: str
|
|
summary: str
|
|
target: Optional[str] = None
|
|
|
|
class AuditLog(AuditLogBase):
|
|
id: str
|
|
at: datetime
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
class SessionBase(BaseModel):
|
|
user_id: str
|
|
device: str
|
|
location: Optional[str] = None
|
|
|
|
class Session(SessionBase):
|
|
id: int
|
|
last_active: datetime
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
class Token(BaseModel):
|
|
access_token: str
|
|
token_type: str
|
|
|
|
class TokenData(BaseModel):
|
|
username: Optional[str] = None
|