33 lines
1.1 KiB
Python
33 lines
1.1 KiB
Python
from __future__ import annotations
|
|
|
|
import uuid
|
|
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
|
|
from cpv3.modules.files.models import File
|
|
from cpv3.modules.files.repository import FileRepository
|
|
from cpv3.modules.files.schemas import FileCreate, FileUpdate
|
|
from cpv3.modules.users.models import User
|
|
|
|
|
|
class FileService:
|
|
"""Service for file business logic and orchestration."""
|
|
|
|
def __init__(self, session: AsyncSession) -> None:
|
|
self._repo = FileRepository(session)
|
|
|
|
async def list_files(self, *, requester: User) -> list[File]:
|
|
return await self._repo.list_all(requester=requester)
|
|
|
|
async def get_file(self, file_id: uuid.UUID) -> File | None:
|
|
return await self._repo.get_by_id(file_id)
|
|
|
|
async def create_file(self, *, requester: User, data: FileCreate) -> File:
|
|
return await self._repo.create(requester=requester, data=data)
|
|
|
|
async def update_file(self, file: File, data: FileUpdate) -> File:
|
|
return await self._repo.update(file, data)
|
|
|
|
async def delete_file(self, file: File) -> None:
|
|
await self._repo.mark_deleted(file)
|