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 get_file_by_path(self, path: str) -> File | None: return await self._repo.get_by_path(path) 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)