140 lines
4.9 KiB
Python
140 lines
4.9 KiB
Python
from typing import Any
|
|
|
|
from Initializer.event_clusters import Event
|
|
from Validations.response import (
|
|
PaginateOnly,
|
|
Pagination,
|
|
PaginationResult,
|
|
PostgresResponseSingle,
|
|
PostgresResponse,
|
|
EndpointResponse
|
|
)
|
|
from Validations.defaults.validations import CommonHeaders
|
|
from Schemas import (
|
|
Addresses,
|
|
# BuildTypes,
|
|
Build,
|
|
BuildSites,
|
|
BuildParts,
|
|
Companies,
|
|
# AccountRecords,
|
|
)
|
|
|
|
|
|
# List all endpoint FL-REP
|
|
SuperBuildListEvent = Event(
|
|
name="build_list",
|
|
key="e8586858-db39-4520-bb1a-338ab9c5f043",
|
|
request_validator=None, # TODO: Add request validator
|
|
response_validator=None, # TODO: Add response validator
|
|
description="Super Build List all endpoint",
|
|
)
|
|
|
|
SuperBuildCreateEvent = Event(
|
|
name="build_create",
|
|
key="79519e0f-c4a6-4afc-a494-d0e547ba39bc",
|
|
request_validator=None, # TODO: Add request validator
|
|
response_validator=None, # TODO: Add response validator
|
|
description="Super Build Create endpoint",
|
|
)
|
|
|
|
SuperBuildUpdateEvent = Event(
|
|
name="build_update",
|
|
key="ca51080e-11f2-46f7-a1ba-caa1c40b3fd6",
|
|
request_validator=None, # TODO: Add request validator
|
|
response_validator=None, # TODO: Add response validator
|
|
description="Super Build Update endpoint",
|
|
)
|
|
|
|
SuperBuildDeleteEvent = Event(
|
|
name="build_delete",
|
|
key="a30d32cc-c931-41d6-8a66-d6c04479098f",
|
|
request_validator=None, # TODO: Add request validator
|
|
response_validator=None, # TODO: Add response validator
|
|
description="Super Build Delete endpoint",
|
|
)
|
|
|
|
|
|
def super_build_list_callable(list_options: PaginateOnly, headers: CommonHeaders):
|
|
list_options = PaginateOnly(**list_options.model_dump())
|
|
# TODO: Pydantic Model must be implemnted for list_options.query
|
|
with Build.new_session() as db_session:
|
|
Build.set_session(db_session)
|
|
base_query = Build.query.filter()
|
|
build_records_query = base_query
|
|
if list_options.query:
|
|
build_records_query = Build.query.filter(*Build.convert(list_options.query))
|
|
pagination = Pagination(data=build_records_query, base_query=base_query)
|
|
pagination.change(**list_options.model_dump())
|
|
pagination_result = PaginationResult(data=build_records_query, pagination=pagination, response_model=None)
|
|
return EndpointResponse(message="MSG0003-LIST", pagination_result=pagination_result).response
|
|
|
|
|
|
SuperBuildListEvent.event_callable = super_build_list_callable
|
|
|
|
|
|
def super_build_create_callable(data, headers: CommonHeaders):
|
|
|
|
with Build.new_session() as db_session:
|
|
|
|
Build.set_session(db_session)
|
|
Addresses.set_session(db_session)
|
|
ApiEnumDropdown.set_session(db_session)
|
|
BuildSites.set_session(db_session)
|
|
|
|
address_id = Addresses.query.filter(Addresses.uu_id == data.address_uu_id).first()
|
|
build_types_id = ApiEnumDropdown.query.filter(ApiEnumDropdown.uu_id == data.build_types_uu_id).first()
|
|
sites_id = BuildSites.query.filter(BuildSites.uu_id == data.site_uu_id).first()
|
|
build = Build.create(**data.model_dump(), address_id=getattr(address_id, "id", None), build_types_id=getattr(build_types_id, "id", None), site_id=getattr(sites_id, "id", None))
|
|
build.save()
|
|
return {
|
|
"message": "MSG0001-INSERT",
|
|
"data": None,
|
|
"completed": True,
|
|
}
|
|
|
|
|
|
SuperBuildCreateEvent.event_callable = super_build_create_callable
|
|
|
|
|
|
def super_build_update_callable(uu_id: str, data, headers: CommonHeaders):
|
|
data_dict = data.model_dump(exclude_unset=True, exclude_none=True)
|
|
data_dict.pop("uu_id", None)
|
|
data_dict.pop("uuid", None)
|
|
with Build.new_session() as db_session:
|
|
Build.set_session(db_session)
|
|
Addresses.set_session(db_session)
|
|
ApiEnumDropdown.set_session(db_session)
|
|
BuildSites.set_session(db_session)
|
|
|
|
address_id = Addresses.query.filter(Addresses.uu_id == data.address_uu_id).first()
|
|
build_types_id = ApiEnumDropdown.query.filter(ApiEnumDropdown.uu_id == data.build_types_uu_id).first()
|
|
sites_id = BuildSites.query.filter(BuildSites.uu_id == data.site_uu_id).first()
|
|
|
|
build = Build.query.filter(Build.uu_id == uu_id).first()
|
|
build.update(**data_dict, address_id=getattr(address_id, "id", None), build_types_id=getattr(build_types_id, "id", None), site_id=getattr(sites_id, "id", None))
|
|
build.save()
|
|
return {
|
|
"message": "MSG0002-UPDATE",
|
|
"data": None,
|
|
"completed": True,
|
|
}
|
|
|
|
|
|
SuperBuildUpdateEvent.event_callable = super_build_update_callable
|
|
|
|
|
|
def super_build_delete_callable(uu_id: str, headers: CommonHeaders):
|
|
with Build.new_session() as db_session:
|
|
Build.set_session(db_session)
|
|
build = Build.query.filter(Build.uu_id == uu_id).first()
|
|
build.delete()
|
|
return {
|
|
"message": "MSG0003-DELETE",
|
|
"data": None,
|
|
"completed": True,
|
|
}
|
|
|
|
|
|
SuperBuildDeleteEvent.event_callable = super_build_delete_callable
|