From 4cb561d54fb00e8c3dc719ba4137e5b8f90d43b6 Mon Sep 17 00:00:00 2001 From: counterweight Date: Thu, 25 Dec 2025 18:51:24 +0100 Subject: [PATCH] Delegate price persistence to PriceRepository - Add create() method to PriceRepository - Update PriceService to use repository.create() instead of direct db operations --- backend/repositories/price.py | 15 +++++++++++++++ backend/services/price.py | 5 +---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/backend/repositories/price.py b/backend/repositories/price.py index 40b9b16..bf6a566 100644 --- a/backend/repositories/price.py +++ b/backend/repositories/price.py @@ -56,3 +56,18 @@ class PriceRepository: ) ) return result.scalar_one_or_none() + + async def create(self, record: PriceHistory) -> PriceHistory: + """ + Create a new price history record. + + Args: + record: PriceHistory instance to persist + + Returns: + Created PriceHistory record (refreshed from database) + """ + self.db.add(record) + await self.db.commit() + await self.db.refresh(record) + return record diff --git a/backend/services/price.py b/backend/services/price.py index 69901c7..4d1864e 100644 --- a/backend/services/price.py +++ b/backend/services/price.py @@ -52,12 +52,9 @@ class PriceService: price=price_value, timestamp=timestamp, ) - self.db.add(record) try: - await self.db.commit() - await self.db.refresh(record) - return record + return await self.price_repo.create(record) except IntegrityError: # Duplicate timestamp - return the existing record await self.db.rollback()