initializer service deployed and tested
This commit is contained in:
110
api_services/schemas/others/enums.py
Normal file
110
api_services/schemas/others/enums.py
Normal file
@@ -0,0 +1,110 @@
|
||||
from schemas.base_imports import (
|
||||
CrudCollection,
|
||||
UUID,
|
||||
String,
|
||||
text,
|
||||
mapped_column,
|
||||
Mapped,
|
||||
)
|
||||
|
||||
|
||||
class ApiEnumDropdown(CrudCollection):
|
||||
__tablename__ = "api_enum_dropdown"
|
||||
__exclude__fields__ = ["enum_class"]
|
||||
__language_model__ = None
|
||||
|
||||
id: Mapped[int] = mapped_column(primary_key=True)
|
||||
uu_id: Mapped[str] = mapped_column(
|
||||
UUID, server_default=text("gen_random_uuid()"), index=True, unique=True
|
||||
)
|
||||
enum_class: Mapped[str] = mapped_column(
|
||||
String, nullable=False, comment="Enum Constant Name"
|
||||
)
|
||||
key: Mapped[str] = mapped_column(String, nullable=False, comment="Enum Key")
|
||||
value: Mapped[str] = mapped_column(String, nullable=False, comment="Enum Value")
|
||||
description: Mapped[str] = mapped_column(String, nullable=True)
|
||||
|
||||
__table_args__ = ({"comment": "Enum objets that are linked to tables"},)
|
||||
|
||||
@classmethod
|
||||
def get_by_uuid(cls, uuid: str):
|
||||
with cls.new_session() as db_session:
|
||||
return cls.filter_by_one(uu_id=str(uuid), db=db_session).data
|
||||
|
||||
@classmethod
|
||||
def get_debit_search(cls, search_debit: str = None, search_uu_id: str = None):
|
||||
with cls.new_session() as db_session:
|
||||
if search_uu_id:
|
||||
if search := cls.filter_one_system(
|
||||
cls.enum_class.in_(["DebitTypes"]),
|
||||
cls.uu_id == search_uu_id,
|
||||
db=db_session,
|
||||
).data:
|
||||
return search
|
||||
elif search_debit:
|
||||
if search := cls.filter_one(
|
||||
cls.enum_class.in_(["DebitTypes"]),
|
||||
cls.key == search_debit,
|
||||
db=db_session,
|
||||
).data:
|
||||
return search
|
||||
return cls.filter_all_system(
|
||||
cls.enum_class.in_(["DebitTypes"]), db=db_session
|
||||
).data
|
||||
|
||||
@classmethod
|
||||
def get_due_types(cls):
|
||||
with cls.new_session() as db_session:
|
||||
if due_list := cls.filter_all_system(
|
||||
cls.enum_class == "BuildDuesTypes",
|
||||
cls.key.in_(["BDT-A", "BDT-D"]),
|
||||
db=db_session,
|
||||
).data:
|
||||
return [due.uu_id.__str__() for due in due_list]
|
||||
# raise HTTPException(
|
||||
# status_code=404,
|
||||
# detail="No dues types found",
|
||||
# )
|
||||
|
||||
@classmethod
|
||||
def due_type_search(cls, search_management: str = None, search_uu_id: str = None):
|
||||
with cls.new_session() as db_session:
|
||||
if search_uu_id:
|
||||
if search := cls.filter_one_system(
|
||||
cls.enum_class.in_(["BuildDuesTypes"]),
|
||||
cls.uu_id == search_uu_id,
|
||||
db=db_session,
|
||||
).data:
|
||||
return search
|
||||
elif search_management:
|
||||
if search := cls.filter_one_system(
|
||||
cls.enum_class.in_(["BuildDuesTypes"]),
|
||||
cls.key == search_management,
|
||||
db=db_session,
|
||||
).data:
|
||||
return search
|
||||
return cls.filter_all_system(
|
||||
cls.enum_class.in_(["BuildDuesTypes"]), db=db_session
|
||||
).data
|
||||
|
||||
def get_enum_dict(self):
|
||||
return {
|
||||
"uu_id": str(self.uu_id),
|
||||
"enum_class": self.enum_class,
|
||||
"key": self.key,
|
||||
"value": self.value,
|
||||
"description": self.description,
|
||||
}
|
||||
|
||||
@classmethod
|
||||
def uuid_of_enum(cls, enum_class: str, key: str):
|
||||
with cls.new_session() as db_session:
|
||||
return str(
|
||||
getattr(
|
||||
cls.filter_one_system(
|
||||
cls.enum_class == enum_class, cls.key == key, db=db_session
|
||||
).data,
|
||||
"uu_id",
|
||||
None,
|
||||
)
|
||||
)
|
||||
Reference in New Issue
Block a user