44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
import uuid
|
|
from repositories.pocketbase_client import pb_client
|
|
from repositories.repo_config import USE_MOCK_REPOSITORIES
|
|
|
|
COLLECTION = 'products_ngs_meta'
|
|
|
|
|
|
class NgsMetaRepository:
|
|
"""Data access for the `products_ngs_meta` collection — NGS-only extraction fields (exclusive_access, group_leader, sustainability) keyed by product_id."""
|
|
|
|
def get_by_product_id(self, product_id):
|
|
return pb_client.get_first(COLLECTION, f'product_id = "{product_id}"')
|
|
|
|
def create(self, data):
|
|
return pb_client.create(COLLECTION, data)
|
|
|
|
def update(self, record_id, data):
|
|
return pb_client.update(COLLECTION, record_id, data)
|
|
|
|
|
|
class MockNgsMetaRepository:
|
|
"""In-memory stand-in for NgsMetaRepository."""
|
|
|
|
def __init__(self):
|
|
self._records = {}
|
|
|
|
def get_by_product_id(self, product_id):
|
|
return next((r for r in self._records.values() if r.get('product_id') == product_id), None)
|
|
|
|
def create(self, data):
|
|
record_id = data.get('id') or str(uuid.uuid4())
|
|
record = {'id': record_id, **data}
|
|
self._records[record_id] = record
|
|
return record
|
|
|
|
def update(self, record_id, data):
|
|
if record_id not in self._records:
|
|
return None
|
|
self._records[record_id] = {**self._records[record_id], **data}
|
|
return self._records[record_id]
|
|
|
|
|
|
ngs_meta_repository = MockNgsMetaRepository() if USE_MOCK_REPOSITORIES else NgsMetaRepository()
|