Passed
Push — main ( ff306b...3f60e2 )
by Jochen
07:37
created

byceps.services.language.service.get_languages()   A

Complexity

Conditions 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 3
nop 0
dl 0
loc 5
ccs 0
cts 3
cp 0
crap 2
rs 10
c 0
b 0
f 0
1
"""
2
byceps.services.language.service
3
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4
5
:Copyright: 2014-2022 Jochen Kupperschmidt
6
:License: Revised BSD (see `LICENSE` file for details)
7
"""
8
9
from __future__ import annotations
10
11
from sqlalchemy import select
12
13
from ...database import db
14
15
from .dbmodels import Language as DbLanguage
16
from .transfer.models import Language
17
18
19
def create_language(code: str) -> Language:
20
    """Create a language."""
21
    db_language = DbLanguage(code)
22
    db.session.add(db_language)
23
    db.session.commit()
24
25
    return _db_entity_to_language(db_language)
26
27
28
def get_languages() -> list[Language]:
29
    """Return all languages."""
30
    db_languages = db.session.scalars(select(DbLanguage)).all()
31
32
    return [_db_entity_to_language(db_language) for db_language in db_languages]
33
34
35
def _db_entity_to_language(db_language: DbLanguage) -> Language:
36
    return Language(code=db_language.code)
37