60 lines
1.5 KiB
Python
60 lines
1.5 KiB
Python
from pydantic import BaseModel
|
|
from typing import Optional, Dict, List
|
|
from datetime import datetime
|
|
from app.models.models import (
|
|
ModelConfigBase, ProjectBase, CharacterBase, StoryboardItemBase, GlobalConfigBase, TaskBase,
|
|
ModelConfig, Project, Character, StoryboardItem, GlobalConfig, Task
|
|
)
|
|
|
|
# ModelConfig
|
|
class ModelConfigCreate(ModelConfigBase):
|
|
pass
|
|
|
|
class ModelConfigUpdate(BaseModel):
|
|
provider: Optional[str] = None
|
|
api_key: Optional[str] = None
|
|
base_url: Optional[str] = None
|
|
model_name: Optional[str] = None
|
|
model_type: Optional[str] = None
|
|
is_active: Optional[bool] = None
|
|
|
|
# Read Models for nested response
|
|
class CharacterRead(CharacterBase):
|
|
id: int
|
|
project_id: str
|
|
|
|
class StoryboardItemRead(StoryboardItemBase):
|
|
id: int
|
|
project_id: str
|
|
|
|
class GlobalConfigRead(GlobalConfigBase):
|
|
id: int
|
|
project_id: str
|
|
|
|
class TaskRead(TaskBase):
|
|
id: str
|
|
project_id: str
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
# Project
|
|
class ProjectCreate(ProjectBase):
|
|
pass
|
|
|
|
class ProjectUpdate(BaseModel):
|
|
title: Optional[str] = None
|
|
description: Optional[str] = None
|
|
story_input: Optional[str] = None
|
|
theme: Optional[str] = None
|
|
language: Optional[str] = None
|
|
panel_count: Optional[int] = None
|
|
aspect_ratio: Optional[str] = None
|
|
|
|
class ProjectRead(ProjectBase):
|
|
id: str
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
characters: List[CharacterRead] = []
|
|
storyboard_items: List[StoryboardItemRead] = []
|
|
global_config: Optional[GlobalConfigRead] = None
|