Passed
Pull Request — develop (#812)
by
unknown
01:18
created

create_provider()   A

Complexity

Conditions 2

Size

Total Lines 13
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 9
nop 2
dl 0
loc 13
rs 9.95
c 0
b 0
f 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