Code cleanup and documentation

This commit is contained in:
Landon Wark
2024-02-09 14:03:35 -06:00
parent eda62fba5a
commit a534d229a8
30 changed files with 1558 additions and 1347 deletions

View File

@@ -2,7 +2,7 @@
Contains all models for sqlalchemy
'''
import sys
from sqlalchemy.orm import DeclarativeMeta, declarative_base
from sqlalchemy.orm import DeclarativeMeta, declarative_base, Query
from sqlalchemy.ext.declarative import declared_attr
if 'pytest' in sys.modules:
from pathlib import Path
@@ -23,10 +23,16 @@ class BaseClass(Base):
@declared_attr
def __tablename__(cls):
"""
Set tablename to lowercase class name
"""
return f"_{cls.__name__.lower()}"
@declared_attr
def __database_session__(cls):
"""
Pull db session from ctx
"""
if not 'pytest' in sys.modules:
from tools import ctx
else:
@@ -35,6 +41,9 @@ class BaseClass(Base):
@declared_attr
def __directory_path__(cls):
"""
Pull submission directory from ctx
"""
if not 'pytest' in sys.modules:
from tools import ctx
else:
@@ -43,14 +52,39 @@ class BaseClass(Base):
@declared_attr
def __backup_path__(cls):
"""
Pull backup directory from ctx
"""
if not 'pytest' in sys.modules:
from tools import ctx
else:
from test_settings import ctx
return ctx.backup_path
def query_return(query:Query, limit:int=0):
"""
Execute sqlalchemy query.
Args:
query (Query): Query object
limit (int, optional): Maximum number of results to return (0 = all). Defaults to 0.
Returns:
_type_: Query result.
"""
with query.session.no_autoflush:
match limit:
case 0:
return query.all()
case 1:
return query.first()
case _:
return query.limit(limit).all()
def save(self):
# logger.debug(f"Saving {self}")
"""
Add the object to the database and commit
"""
try:
self.__database_session__.add(self)
self.__database_session__.commit()