29 lines
843 B
Python
Executable File
29 lines
843 B
Python
Executable File
from typing import Any, Dict, List
|
|
from uuid import UUID
|
|
|
|
from fastapi_async_sqlalchemy import db
|
|
from sqlalchemy import delete
|
|
|
|
from app.models import SourceUsageModel
|
|
|
|
from . import BaseRepository
|
|
|
|
|
|
class SourceUsageRepository(BaseRepository[SourceUsageModel]):
|
|
def __init__(self, model):
|
|
super().__init__(model)
|
|
|
|
async def bulk_update(self, mapset_id: UUID, data: List[Dict[str, Any]]) -> None:
|
|
"""Update multiple records."""
|
|
try:
|
|
delete_query = delete(self.model).where(self.model.mapset_id == mapset_id)
|
|
await db.session.execute(delete_query)
|
|
|
|
new_records = [self.model(**item) for item in data]
|
|
db.session.add_all(new_records)
|
|
|
|
await db.session.commit()
|
|
except Exception as e:
|
|
await db.session.rollback()
|
|
raise e
|