Spaces:
Sleeping
Sleeping
Download app/api/notes.py from osina/voice-notes: direct link, hf CLI and curl.
- Browser
- Download file 2 kB
-
https://huggingface.co/spaces/osina/voice-notes/resolve/main/app/api/notes.py
- Command line
-
hf download hf://spaces/osina/voice-notes/app/api/notes.py
-
curl -L -o notes.py https://huggingface.co/spaces/osina/voice-notes/resolve/main/app/api/notes.py
2 kB
| from __future__ import annotations | |
| from datetime import datetime | |
| from fastapi import APIRouter, Query | |
| from app.api.deps import IntentExtractorDep, SessionDep | |
| from app.domain import Source | |
| from app.errors import InvalidRequestError, NotFoundError | |
| from app.repositories import NoteRepository | |
| from app.schemas.common import Page | |
| from app.schemas.notes import NoteCreate, NoteDetailOut, NoteOut, NoteProcessResponse | |
| from app.services.pipeline import NotePipeline | |
| router = APIRouter(prefix="/api/notes", tags=["notes"]) | |
| def create_note( | |
| payload: NoteCreate, | |
| session: SessionDep, | |
| extractor: IntentExtractorDep, | |
| ) -> NoteProcessResponse: | |
| pipeline = NotePipeline(session, extractor) | |
| return pipeline.process(payload.text, Source.TEXT) | |
| def list_notes( | |
| session: SessionDep, | |
| source: Source | None = None, | |
| created_from: datetime | None = None, | |
| created_to: datetime | None = None, | |
| task_id: str | None = None, | |
| limit: int = Query(default=20, ge=1, le=100), | |
| offset: int = Query(default=0, ge=0), | |
| ) -> Page[NoteOut]: | |
| if created_from and created_to and created_from > created_to: | |
| raise InvalidRequestError("created_from must be on or before created_to") | |
| notes, total = NoteRepository(session).list( | |
| source=source, | |
| created_from=created_from, | |
| created_to=created_to, | |
| task_id=task_id, | |
| limit=limit, | |
| offset=offset, | |
| ) | |
| return Page( | |
| items=[NoteOut.model_validate(note) for note in notes], | |
| total=total, | |
| limit=limit, | |
| offset=offset, | |
| ) | |
| def get_note(note_id: str, session: SessionDep) -> NoteDetailOut: | |
| note = NoteRepository(session).get(note_id, with_task=True) | |
| if note is None: | |
| raise NotFoundError(f"Note {note_id!r} not found") | |
| return NoteDetailOut.model_validate(note) | |