| Total Complexity | 4 |
| Total Lines | 38 |
| Duplicated Lines | 0 % |
| Changes | 0 | ||
| 1 | from typing import Mapping |
||
| 2 | |||
| 3 | from sqlalchemy.orm import Session |
||
| 4 | |||
| 5 | from atramhasis import mappers |
||
| 6 | from atramhasis.data.datamanagers import ProviderDataManager |
||
| 7 | from atramhasis.data.models import Provider |
||
| 8 | |||
| 9 | |||
| 10 | def create_provider(json_data: Mapping, session: Session) -> Provider: |
||
| 11 | """Process a provider JSON into a newly stored Provider.""" |
||
| 12 | db_provider = mappers.map_provider(json_data) |
||
| 13 | if not db_provider.id: |
||
| 14 | # Store conceptscheme first so we can copy its id |
||
| 15 | session.add(db_provider.conceptscheme) |
||
| 16 | session.flush() |
||
| 17 | db_provider.id = str(db_provider.conceptscheme.id) |
||
| 18 | |||
| 19 | session.add(db_provider) |
||
| 20 | session.flush() |
||
| 21 | |||
| 22 | return db_provider |
||
| 23 | |||
| 24 | |||
| 25 | def update_provider(provider_id: str, json_data: Mapping, session: Session) -> Provider: |
||
| 26 | """Process a JSON into to update an existing provider.""" |
||
| 27 | manager = ProviderDataManager(session) |
||
| 28 | db_provider = manager.get_provider_by_id(provider_id) |
||
| 29 | db_provider = mappers.map_provider(json_data, provider=db_provider) |
||
| 30 | session.flush() |
||
| 31 | return db_provider |
||
| 32 | |||
| 33 | |||
| 34 | def delete_provider(provider_id, session: Session) -> None: |
||
| 35 | manager = ProviderDataManager(session) |
||
| 36 | db_provider = manager.get_provider_by_id(provider_id) |
||
| 37 | session.delete(db_provider) |
||
| 38 |