satupeta-main/app/repositories/map_source_usage_repository.py

29 lines
843 B
Python
Raw Normal View History

2026-01-27 02:11:58 +00:00
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