diff --git a/core/app.py b/core/app.py index 8a18c079e..aa384e684 100644 --- a/core/app.py +++ b/core/app.py @@ -69,7 +69,11 @@ def init_lexicon(): term_dict["definition"], term_dict["category"], ) - except DatabaseError: + except DatabaseError as e: + print( + f"Failed to add term {term_dict['term']}: {term_dict['definition']} error: {e}" + ) + session.rollback() diff --git a/services/lexicon.py b/services/lexicon.py index 335e0c5a4..e567b8112 100644 --- a/services/lexicon.py +++ b/services/lexicon.py @@ -25,39 +25,36 @@ def add_lexicon_term( Add a term to the lexicon with its definition and category. """ - with session.no_autoflush: - if isinstance(category, str): - sql = select(Category).where(Category.name == category) - dbcategory = session.scalars(sql).one_or_none() - if dbcategory is None: - # Create a new category if it does not exist - dbcategory = Category(name=category) - session.add(dbcategory) - session.commit() - session.flush() - else: - dbcategory = session.get(Category, category) - - # Check if the term already exists - sql = select(Lexicon).where(Lexicon.term == term) - existing_term = session.scalars(sql).one_or_none() - if existing_term is not None: - return existing_term - - term = Lexicon(term=term, definition=definition) - session.add(term) - - if dbcategory is not None: - link = TermCategoryAssociation() - - link.category = dbcategory - link.term = term - - session.add(link) - - session.commit() - - return term + if isinstance(category, str): + sql = select(Category).where(Category.name == category) + dbcategory = session.scalars(sql).one_or_none() + if dbcategory is None: + # Create a new category if it does not exist + dbcategory = Category(name=category) + session.add(dbcategory) + session.commit() + session.flush() + else: + dbcategory = session.get(Category, category) + + # Check if the term already exists + sql = select(Lexicon).where(Lexicon.term == term) + dbterm = session.scalars(sql).one_or_none() + if dbterm is None: + dbterm = Lexicon(term=term, definition=definition) + session.add(dbterm) + + if dbcategory is not None: + link = TermCategoryAssociation() + + link.category = dbcategory + link.term = dbterm + + session.add(link) + + session.commit() + + return dbterm # ============= EOF =============================================