mirror of
https://github.com/xinnan-tech/xiaozhi-esp32-server.git
synced 2026-07-22 07:03:53 +08:00
75 lines
2.3 KiB
Python
75 lines
2.3 KiB
Python
from __future__ import annotations
|
|
|
|
from fastapi import APIRouter, Depends, Query, Request
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
|
|
from app.core.database import get_db
|
|
from app.core.responses import JavaJSONResponse, ok
|
|
from app.core.security import require_normal, require_super_admin
|
|
from app.repositories.timbre import TimbreRepository
|
|
from app.schemas.timbre import TimbreBody
|
|
from app.services.timbre import TimbreService
|
|
|
|
timbre_router = APIRouter()
|
|
|
|
|
|
def _service(session: AsyncSession) -> TimbreService:
|
|
return TimbreService(TimbreRepository(session))
|
|
|
|
|
|
@timbre_router.get("/ttsVoice")
|
|
async def timbre_page(
|
|
request: Request,
|
|
tts_model_id: str | None = Query(default=None, alias="ttsModelId"),
|
|
name: str | None = None,
|
|
page: str | None = None,
|
|
limit: str | None = None,
|
|
session: AsyncSession = Depends(get_db),
|
|
) -> JavaJSONResponse:
|
|
require_super_admin(request)
|
|
return ok(
|
|
await _service(session).page(
|
|
tts_model_id, name, page, limit, request.headers.get("Accept-Language")
|
|
)
|
|
)
|
|
|
|
|
|
@timbre_router.post("/ttsVoice")
|
|
async def timbre_save(
|
|
body: TimbreBody, request: Request, session: AsyncSession = Depends(get_db)
|
|
) -> JavaJSONResponse:
|
|
await _service(session).save(
|
|
body, require_super_admin(request), request.headers.get("Accept-Language")
|
|
)
|
|
return ok()
|
|
|
|
|
|
@timbre_router.put("/ttsVoice/{timbre_id}")
|
|
async def timbre_update(
|
|
timbre_id: str, body: TimbreBody, request: Request, session: AsyncSession = Depends(get_db)
|
|
) -> JavaJSONResponse:
|
|
await _service(session).update(
|
|
timbre_id, body, require_super_admin(request), request.headers.get("Accept-Language")
|
|
)
|
|
return ok()
|
|
|
|
|
|
@timbre_router.post("/ttsVoice/delete")
|
|
async def timbre_delete(
|
|
ids: list[str], request: Request, session: AsyncSession = Depends(get_db)
|
|
) -> JavaJSONResponse:
|
|
require_super_admin(request)
|
|
await _service(session).delete(ids)
|
|
return ok()
|
|
|
|
|
|
@timbre_router.get("/models/{model_id}/voices")
|
|
async def model_voices(
|
|
model_id: str,
|
|
request: Request,
|
|
voice_name: str | None = Query(default=None, alias="voiceName"),
|
|
session: AsyncSession = Depends(get_db),
|
|
) -> JavaJSONResponse:
|
|
user = require_normal(request)
|
|
return ok(await _service(session).voices(model_id, voice_name, user, request.headers.get("Accept-Language")))
|