app.bettersight.io/backend/repositories/proxy_repository.py

45 lines
1.4 KiB
Python

import uuid
from repositories.pocketbase_client import pb_client
from repositories.repo_config import USE_MOCK_REPOSITORIES
COLLECTION = 'proxy_overrides'
class ProxyRepository:
"""Data access for the `proxy_overrides` collection — used by core/proxy_service.py."""
def get_by_domain(self, domain):
safe_domain = domain.replace('"', '\\"')
return pb_client.get_first(COLLECTION, f'domain = "{safe_domain}"')
def create(self, data):
return pb_client.create(COLLECTION, data)
def update(self, override_id, data):
return pb_client.update(COLLECTION, override_id, data)
class MockProxyRepository:
"""In-memory stand-in for ProxyRepository."""
def __init__(self):
self._records = {}
def get_by_domain(self, domain):
return next((r for r in self._records.values() if r.get('domain') == domain), 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, override_id, data):
if override_id not in self._records:
return None
self._records[override_id] = {**self._records[override_id], **data}
return self._records[override_id]
proxy_repository = MockProxyRepository() if USE_MOCK_REPOSITORIES else ProxyRepository()