11from typing import List , Optional
2- from fastapi .encoders import jsonable_encoder
32
4- from .models import Definition , DefinitionCreate , DefinitionUpdate
53from dispatch .project import service as project_service
64from dispatch .term import service as term_service
75
6+ from .models import Definition , DefinitionCreate , DefinitionUpdate
7+
88
99def get (* , db_session , definition_id : int ) -> Optional [Definition ]:
10+ """Gets a definition by its id."""
1011 return db_session .query (Definition ).filter (Definition .id == definition_id ).first ()
1112
1213
1314def get_by_text (* , db_session , text : str ) -> Optional [Definition ]:
15+ """Gets a definition by its text."""
1416 return db_session .query (Definition ).filter (Definition .text == text ).first ()
1517
1618
1719def get_all (* , db_session ) -> List [Optional [Definition ]]:
20+ """Gets all definitions."""
1821 return db_session .query (Definition )
1922
2023
2124def create (* , db_session , definition_in : DefinitionCreate ) -> Definition :
25+ """Creates a new definition."""
2226 terms = [
2327 term_service .get_or_create (db_session = db_session , term_in = t ) for t in definition_in .terms
2428 ]
@@ -33,6 +37,7 @@ def create(*, db_session, definition_in: DefinitionCreate) -> Definition:
3337
3438
3539def create_all (* , db_session , definitions_in : List [DefinitionCreate ]) -> List [Definition ]:
40+ """Creates a definitions in bulk."""
3641 definitions = [Definition (text = d .text ) for d in definitions_in ]
3742 db_session .bulk_save_insert (definitions )
3843 db_session .commit ()
@@ -41,7 +46,8 @@ def create_all(*, db_session, definitions_in: List[DefinitionCreate]) -> List[De
4146
4247
4348def update (* , db_session , definition : Definition , definition_in : DefinitionUpdate ) -> Definition :
44- definition_data = jsonable_encoder (definition )
49+ """Updates a definition."""
50+ definition_data = definition .dict ()
4551
4652 terms = [
4753 term_service .get_or_create (db_session = db_session , term_in = t ) for t in definition_in .terms
@@ -53,19 +59,21 @@ def update(*, db_session, definition: Definition, definition_in: DefinitionUpdat
5359 setattr (definition , field , update_data [field ])
5460
5561 definition .terms = terms
56- db_session . add ( definition )
62+
5763 db_session .commit ()
5864 return definition
5965
6066
6167def delete (* , db_session , definition_id : int ):
68+ """Deletes a definition."""
6269 definition = db_session .query (Definition ).filter (Definition .id == definition_id ).first ()
6370 definition .terms = []
6471 db_session .delete (definition )
6572 db_session .commit ()
6673
6774
6875def upsert (* , db_session , definition_in : DefinitionCreate ) -> Definition :
76+ """Gets or creates a new definition."""
6977 # we only care about unique columns
7078 q = db_session .query (Definition ).filter (Definition .text == definition_in .text )
7179 instance = q .first ()
0 commit comments