uploaded file logic

This commit is contained in:
Robert 2024-03-03 17:53:54 +07:00
parent e9fdb7ae06
commit 10bddc2e6b
No known key found for this signature in database
GPG Key ID: F631C7FD957D5F22
3 changed files with 41 additions and 0 deletions

View File

@ -0,0 +1,6 @@
from .base import BaseMongoModel
class UploadedFile(BaseMongoModel):
file_id: int
file_url: str

View File

@ -0,0 +1,16 @@
from .database import DatabaseDependency
from chain_service.repositories.uploaded_file import UploadedFileRepository
from fastapi import Depends
from typing import Annotated
def get_uploaded_file_repository(
database: DatabaseDependency,
) -> UploadedFileRepository:
return UploadedFileRepository(database=database)
UploadedFileRepositoryDependency = Annotated[
UploadedFileRepository, Depends(get_uploaded_file_repository)
]

View File

@ -0,0 +1,19 @@
from chain_service.database.database import Database
from chain_service.database.models.uploaded_file import UploadedFile
class UploadedFileRepository:
def __init__(self, database: Database):
self.collection = database.get_collection("uploaded_files")
async def upsert(self, uploaded_file: UploadedFile) -> UploadedFile:
query = {"_id": uploaded_file.id}
payload = uploaded_file.model_dump(by_alias=True)
await self.collection.replace_one(query, payload, upsert=True)
return uploaded_file
async def get_by_file_url(self, file_url: str) -> UploadedFile | None:
query = {"fileUrl": file_url}
uploaded_file = await self.collection.find_one(query)
return UploadedFile.model_validate(uploaded_file) if uploaded_file else None