initial commit
This commit is contained in:
86
backend/app/schemas.py
Normal file
86
backend/app/schemas.py
Normal file
@@ -0,0 +1,86 @@
|
||||
"""FluentGerman.ai — Pydantic request/response schemas."""
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
from pydantic import BaseModel, EmailStr
|
||||
|
||||
|
||||
# ── Auth ──────────────────────────────────────────────────────────────
|
||||
class Token(BaseModel):
|
||||
access_token: str
|
||||
token_type: str = "bearer"
|
||||
|
||||
|
||||
class LoginRequest(BaseModel):
|
||||
username: str
|
||||
password: str
|
||||
|
||||
|
||||
# ── User ──────────────────────────────────────────────────────────────
|
||||
class UserCreate(BaseModel):
|
||||
username: str
|
||||
email: EmailStr
|
||||
password: str
|
||||
|
||||
|
||||
class UserUpdate(BaseModel):
|
||||
username: str | None = None
|
||||
email: EmailStr | None = None
|
||||
password: str | None = None
|
||||
is_active: bool | None = None
|
||||
|
||||
|
||||
class UserOut(BaseModel):
|
||||
id: int
|
||||
username: str
|
||||
email: str
|
||||
is_admin: bool
|
||||
is_active: bool
|
||||
created_at: datetime
|
||||
|
||||
model_config = {"from_attributes": True}
|
||||
|
||||
|
||||
# ── Instruction ───────────────────────────────────────────────────────
|
||||
class InstructionCreate(BaseModel):
|
||||
user_id: int | None = None
|
||||
title: str
|
||||
content: str
|
||||
type: str = "personal" # global | personal | homework
|
||||
|
||||
|
||||
class InstructionUpdate(BaseModel):
|
||||
title: str | None = None
|
||||
content: str | None = None
|
||||
type: str | None = None
|
||||
|
||||
|
||||
class InstructionOut(BaseModel):
|
||||
id: int
|
||||
user_id: int | None
|
||||
title: str
|
||||
content: str
|
||||
type: str
|
||||
created_at: datetime
|
||||
|
||||
model_config = {"from_attributes": True}
|
||||
|
||||
|
||||
# ── Chat ──────────────────────────────────────────────────────────────
|
||||
class ChatMessage(BaseModel):
|
||||
role: str # "user" | "assistant"
|
||||
content: str
|
||||
|
||||
|
||||
class ChatRequest(BaseModel):
|
||||
message: str
|
||||
history: list[ChatMessage] = []
|
||||
|
||||
|
||||
# ── Voice / Admin ────────────────────────────────────────────────────
|
||||
class VoiceInstructionRequest(BaseModel):
|
||||
raw_text: str
|
||||
|
||||
|
||||
class VoiceConfigOut(BaseModel):
|
||||
voice_mode: str # "api" | "browser"
|
||||
Reference in New Issue
Block a user