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

atramhasis.json_processors.provider   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 25
dl 0
loc 38
rs 10
c 0
b 0
f 0
wmc 4

3 Functions

Rating   Name   Duplication   Size   Complexity  
A create_provider() 0 13 2
A delete_provider() 0 4 1
A update_provider() 0 7 1
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