more services added
This commit is contained in:
31
api_services/api_builds/account_service/Dockerfile
Normal file
31
api_services/api_builds/account_service/Dockerfile
Normal file
@@ -0,0 +1,31 @@
|
||||
FROM python:3.12-slim
|
||||
|
||||
WORKDIR /
|
||||
|
||||
# Install system dependencies and Poetry
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends gcc && rm -rf /var/lib/apt/lists/* && pip install --no-cache-dir poetry
|
||||
|
||||
# Copy Poetry configuration
|
||||
COPY /pyproject.toml ./pyproject.toml
|
||||
|
||||
# Configure Poetry and install dependencies with optimizations
|
||||
RUN poetry config virtualenvs.create false && poetry install --no-interaction --no-ansi --no-root --only main && pip cache purge && rm -rf ~/.cache/pypoetry
|
||||
|
||||
# Copy application code
|
||||
COPY /api_services/api_initializer /api_initializer
|
||||
COPY /api_services/api_controllers /api_controllers
|
||||
COPY /api_services/api_validations /api_validations
|
||||
COPY /api_services/schemas /schemas
|
||||
COPY /api_services/api_modules /api_modules
|
||||
|
||||
COPY /api_services/api_middlewares /api_middlewares
|
||||
COPY /api_services/api_builds/account_service/endpoints /api_initializer/endpoints
|
||||
COPY /api_services/api_builds/account_service/events /api_initializer/events
|
||||
COPY /api_services/api_builds/account_service/validations /api_initializer/validations
|
||||
COPY /api_services/api_builds/account_service/index.py /api_initializer/index.py
|
||||
|
||||
# Set Python path to include app directory
|
||||
ENV PYTHONPATH=/ PYTHONUNBUFFERED=1 PYTHONDONTWRITEBYTECODE=1
|
||||
|
||||
# Run the application using the configured uvicorn server
|
||||
CMD ["poetry", "run", "python", "/api_initializer/app.py"]
|
||||
@@ -0,0 +1,72 @@
|
||||
from typing import Any
|
||||
from fastapi import APIRouter, Depends
|
||||
|
||||
from index import endpoints_index
|
||||
from events.account_records.cluster import AccountRecordsRouterCluster
|
||||
|
||||
from api_validations.defaults.validations import CommonHeaders
|
||||
from api_validations.response.pagination import PaginateOnly
|
||||
from api_middlewares.token_provider import TokenProvider
|
||||
|
||||
|
||||
account_records_router = APIRouter(prefix="/account/records", tags=["Account Cluster"])
|
||||
|
||||
|
||||
account_records_list = "AccountRecordsList"
|
||||
@account_records_router.post(
|
||||
path="/list",
|
||||
description="List all account records endpoint",
|
||||
operation_id=endpoints_index[account_records_list],
|
||||
)
|
||||
def people_list_route(data: PaginateOnly, headers: CommonHeaders = Depends(CommonHeaders.as_dependency)):
|
||||
token_object = TokenProvider.get_dict_from_redis(token=headers.token)
|
||||
event_founder_dict = dict(endpoint_code=headers.operation_id, token=token_object)
|
||||
event_key = TokenProvider.retrieve_event_codes(**event_founder_dict)
|
||||
FoundCluster = AccountRecordsRouterCluster.get_event_cluster(account_records_list)
|
||||
event_cluster_matched = FoundCluster.match_event(event_key=event_key)
|
||||
return event_cluster_matched.event_callable(list_options=data, header=headers)
|
||||
|
||||
|
||||
account_records_create = "AccountRecordsCreate"
|
||||
@account_records_router.post(
|
||||
path="/create",
|
||||
description="Create account records endpoint",
|
||||
operation_id=endpoints_index[account_records_create],
|
||||
)
|
||||
def account_records_create_route(data, headers: CommonHeaders = Depends(CommonHeaders.as_dependency)):
|
||||
token_object = TokenProvider.get_dict_from_redis(token=headers.token)
|
||||
event_founder_dict = dict(endpoint_code=headers.operation_id, token=token_object)
|
||||
event_key = TokenProvider.retrieve_event_codes(**event_founder_dict)
|
||||
FoundCluster = AccountRecordsRouterCluster.get_event_cluster(account_records_create)
|
||||
event_cluster_matched = FoundCluster.match_event(event_key=event_key)
|
||||
return event_cluster_matched.event_callable(data=data, header=headers)
|
||||
|
||||
|
||||
account_records_update = "AccountRecordsUpdate"
|
||||
@account_records_router.post(
|
||||
path="/update/{uu_id}",
|
||||
description="Update account records endpoint",
|
||||
operation_id=endpoints_index[account_records_update],
|
||||
)
|
||||
def account_records_update_route(uu_id: str, data, headers: CommonHeaders = Depends(CommonHeaders.as_dependency)):
|
||||
token_object = TokenProvider.get_dict_from_redis(token=headers.token)
|
||||
event_founder_dict = dict(endpoint_code=headers.operation_id, token=token_object)
|
||||
event_key = TokenProvider.retrieve_event_codes(**event_founder_dict)
|
||||
FoundCluster = AccountRecordsRouterCluster.get_event_cluster(account_records_update)
|
||||
event_cluster_matched = FoundCluster.match_event(event_key=event_key)
|
||||
return event_cluster_matched.event_callable(uu_id=uu_id, data=data, header=headers)
|
||||
|
||||
|
||||
account_records_delete = "AccountRecordsDelete"
|
||||
@account_records_router.post(
|
||||
path="/delete/{uu_id}",
|
||||
description="Delete account records endpoint",
|
||||
operation_id=endpoints_index[account_records_delete],
|
||||
)
|
||||
def account_records_delete_route(uu_id: str, headers: CommonHeaders = Depends(CommonHeaders.as_dependency)):
|
||||
token_object = TokenProvider.get_dict_from_redis(token=headers.token)
|
||||
event_founder_dict = dict(endpoint_code=headers.operation_id, token=token_object)
|
||||
event_key = TokenProvider.retrieve_event_codes(**event_founder_dict)
|
||||
FoundCluster = AccountRecordsRouterCluster.get_event_cluster(account_records_delete)
|
||||
event_cluster_matched = FoundCluster.match_event(event_key=event_key)
|
||||
return event_cluster_matched.event_callable(uu_id=uu_id, header=headers)
|
||||
15
api_services/api_builds/account_service/endpoints/routes.py
Normal file
15
api_services/api_builds/account_service/endpoints/routes.py
Normal file
@@ -0,0 +1,15 @@
|
||||
from fastapi import APIRouter
|
||||
from .account_records.router import account_records_router
|
||||
|
||||
def get_routes() -> list[APIRouter]:
|
||||
return [account_records_router]
|
||||
|
||||
|
||||
def get_safe_endpoint_urls() -> list[tuple[str, str]]:
|
||||
return [
|
||||
("/", "GET"),
|
||||
("/docs", "GET"),
|
||||
("/redoc", "GET"),
|
||||
("/openapi.json", "GET"),
|
||||
("/metrics", "GET"),
|
||||
]
|
||||
@@ -0,0 +1,5 @@
|
||||
from .account_records.cluster import AccountRecordsRouterCluster
|
||||
|
||||
__all__ = [
|
||||
"AccountRecordsRouterCluster",
|
||||
]
|
||||
@@ -0,0 +1,27 @@
|
||||
from api_initializer.event_clusters import EventCluster, RouterCluster
|
||||
from index import endpoints_index
|
||||
from .supers_events import (
|
||||
SuperAccountRecordsListEvent,
|
||||
SuperAccountRecordsCreateEvent,
|
||||
SuperAccountRecordsUpdateEvent,
|
||||
SuperAccountRecordsDeleteEvent,
|
||||
)
|
||||
|
||||
AccountRecordsRouterCluster = RouterCluster(name="AccountRecordsRouterCluster")
|
||||
|
||||
AccountRecordsListEventCluster = EventCluster(name="AccountRecordsListEventCluster", endpoint_uu_id=endpoints_index["AccountRecordsList"])
|
||||
AccountRecordsListEventCluster.add_event(SuperAccountRecordsListEvent)
|
||||
|
||||
AccountRecordsCreateEventCluster = EventCluster(name="AccountRecordsCreateEventCluster", endpoint_uu_id=endpoints_index["AccountRecordsCreate"])
|
||||
AccountRecordsCreateEventCluster.add_event(SuperAccountRecordsCreateEvent)
|
||||
|
||||
AccountRecordsUpdateEventCluster = EventCluster(name="AccountRecordsUpdateEventCluster", endpoint_uu_id=endpoints_index["AccountRecordsUpdate"])
|
||||
AccountRecordsUpdateEventCluster.add_event(SuperAccountRecordsUpdateEvent)
|
||||
|
||||
AccountRecordsDeleteEventCluster = EventCluster(name="AccountRecordsDeleteEventCluster", endpoint_uu_id=endpoints_index["AccountRecordsDelete"])
|
||||
AccountRecordsDeleteEventCluster.add_event(SuperAccountRecordsDeleteEvent)
|
||||
|
||||
AccountRecordsRouterCluster.set_event_cluster(AccountRecordsListEventCluster)
|
||||
AccountRecordsRouterCluster.set_event_cluster(AccountRecordsCreateEventCluster)
|
||||
AccountRecordsRouterCluster.set_event_cluster(AccountRecordsUpdateEventCluster)
|
||||
AccountRecordsRouterCluster.set_event_cluster(AccountRecordsDeleteEventCluster)
|
||||
@@ -0,0 +1,93 @@
|
||||
from typing import Any
|
||||
|
||||
from api_initializer.event_clusters import Event
|
||||
from api_validations.response import (
|
||||
PaginateOnly,
|
||||
Pagination,
|
||||
PaginationResult,
|
||||
PostgresResponseSingle,
|
||||
PostgresResponse,
|
||||
EndpointResponse
|
||||
)
|
||||
from api_validations.defaults.validations import CommonHeaders
|
||||
from schemas import AccountRecords
|
||||
|
||||
# List all account records endpoint Super Users
|
||||
SuperAccountRecordsListEvent = Event(
|
||||
name="super_account_records_list",
|
||||
key="c5b6d9c7-9115-4825-bcc1-16f409a7004a",
|
||||
request_validator=None, # TODO: Add request validator
|
||||
response_validator=None, # TODO: Add response validator
|
||||
description="Super Account Records List all flat representative users endpoint",
|
||||
)
|
||||
|
||||
# Create account records endpoint Super Users
|
||||
SuperAccountRecordsCreateEvent = Event(
|
||||
name="super_account_records_create",
|
||||
key="1ab5c778-5a25-49d0-8bf8-799a74f430ad",
|
||||
request_validator=None, # TODO: Add request validator
|
||||
response_validator=None, # TODO: Add response validator
|
||||
description="Super Account Records Create endpoint",
|
||||
)
|
||||
|
||||
# Update account records endpoint Super Users
|
||||
SuperAccountRecordsUpdateEvent = Event(
|
||||
name="super_account_records_update",
|
||||
key="137fca9b-110a-4a28-bddd-36fde7380e89",
|
||||
request_validator=None, # TODO: Add request validator
|
||||
response_validator=None, # TODO: Add response validator
|
||||
description="Super Account Records Update endpoint",
|
||||
)
|
||||
|
||||
# Delete account records endpoint Super Users
|
||||
SuperAccountRecordsDeleteEvent = Event(
|
||||
name="super_account_records_delete",
|
||||
key="8bf399a7-f79e-49d2-b481-f5974676599f",
|
||||
request_validator=None, # TODO: Add request validator
|
||||
response_validator=None, # TODO: Add response validator
|
||||
description="Super Account Records Delete endpoint",
|
||||
)
|
||||
|
||||
|
||||
def super_account_records_list_callable(list_options: PaginateOnly, header: CommonHeaders):
|
||||
return {
|
||||
"message": "MSG0003-LIST",
|
||||
"data": None,
|
||||
"completed": True,
|
||||
}
|
||||
|
||||
|
||||
SuperAccountRecordsListEvent.event_callable = super_account_records_list_callable
|
||||
|
||||
|
||||
def super_account_records_create_callable(data: AccountRecords, header: CommonHeaders):
|
||||
return {
|
||||
"message": "MSG0003-CREATE",
|
||||
"data": None,
|
||||
"completed": True,
|
||||
}
|
||||
|
||||
|
||||
SuperAccountRecordsCreateEvent.event_callable = super_account_records_create_callable
|
||||
|
||||
|
||||
def super_account_records_update_callable(data: AccountRecords, header: CommonHeaders):
|
||||
return {
|
||||
"message": "MSG0003-UPDATE",
|
||||
"data": None,
|
||||
"completed": True,
|
||||
}
|
||||
|
||||
|
||||
SuperAccountRecordsUpdateEvent.event_callable = super_account_records_update_callable
|
||||
|
||||
|
||||
def super_account_records_delete_callable(data: AccountRecords, header: CommonHeaders):
|
||||
return {
|
||||
"message": "MSG0003-DELETE",
|
||||
"data": None,
|
||||
"completed": True,
|
||||
}
|
||||
|
||||
|
||||
SuperAccountRecordsDeleteEvent.event_callable = super_account_records_delete_callable
|
||||
8
api_services/api_builds/account_service/index.py
Normal file
8
api_services/api_builds/account_service/index.py
Normal file
@@ -0,0 +1,8 @@
|
||||
|
||||
|
||||
endpoints_index: dict = {
|
||||
"AccountRecordsList": "7552d270-0e2a-4a40-bfd5-ec3493bc63ab",
|
||||
"AccountRecordsCreate": "ddb956fb-73ef-4eec-a51b-ff54c3d65552",
|
||||
"AccountRecordsUpdate": "6f120aca-b5a7-43ea-8214-9c17f9333c8a",
|
||||
"AccountRecordsDelete": "5cc1de2d-de11-4bbe-9c19-5b8eec69e4a1",
|
||||
}
|
||||
@@ -20,6 +20,8 @@ from schemas import (
|
||||
Event2Occupant,
|
||||
Application2Employee,
|
||||
RelationshipEmployee2Build,
|
||||
Events,
|
||||
EndpointRestriction,
|
||||
)
|
||||
from api_modules.token.password_module import PasswordModule
|
||||
from api_controllers.mongo.database import mongo_handler
|
||||
@@ -331,7 +333,11 @@ class LoginHandler:
|
||||
ValueError("EYS_0010")
|
||||
|
||||
# Get reachable events
|
||||
reachable_event_codes = Event2Employee.get_event_codes(employee_id=int(result_with_keys_dict['Employees.id']), db=db_session)
|
||||
# reachable_event_codes = Event2Employee.get_event_codes(employee_id=int(result_with_keys_dict['Employees.id']), db=db_session)
|
||||
# TODO: erase this bypass later
|
||||
filter_endpoints_and_events = db_session.query(EndpointRestriction.operation_uu_id, Events.function_code
|
||||
).join(EndpointRestriction, EndpointRestriction.id == Events.endpoint_id).filter().all()
|
||||
reachable_event_codes = {endpoint_name: function_code for endpoint_name, function_code in filter_endpoints_and_events}
|
||||
# Get reachable applications
|
||||
reachable_app_codes = Application2Employee.get_application_codes(employee_id=int(result_with_keys_dict['Employees.id']), db=db_session)
|
||||
|
||||
|
||||
31
api_services/api_builds/building_service/Dockerfile
Normal file
31
api_services/api_builds/building_service/Dockerfile
Normal file
@@ -0,0 +1,31 @@
|
||||
FROM python:3.12-slim
|
||||
|
||||
WORKDIR /
|
||||
|
||||
# Install system dependencies and Poetry
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends gcc && rm -rf /var/lib/apt/lists/* && pip install --no-cache-dir poetry
|
||||
|
||||
# Copy Poetry configuration
|
||||
COPY /pyproject.toml ./pyproject.toml
|
||||
|
||||
# Configure Poetry and install dependencies with optimizations
|
||||
RUN poetry config virtualenvs.create false && poetry install --no-interaction --no-ansi --no-root --only main && pip cache purge && rm -rf ~/.cache/pypoetry
|
||||
|
||||
# Copy application code
|
||||
COPY /api_services/api_initializer /api_initializer
|
||||
COPY /api_services/api_controllers /api_controllers
|
||||
COPY /api_services/api_validations /api_validations
|
||||
COPY /api_services/schemas /schemas
|
||||
COPY /api_services/api_modules /api_modules
|
||||
|
||||
COPY /api_services/api_middlewares /api_middlewares
|
||||
COPY /api_services/api_builds/building_service/endpoints /api_initializer/endpoints
|
||||
COPY /api_services/api_builds/building_service/events /api_initializer/events
|
||||
COPY /api_services/api_builds/building_service/validations /api_initializer/validations
|
||||
COPY /api_services/api_builds/building_service/index.py /api_initializer/index.py
|
||||
|
||||
# Set Python path to include app directory
|
||||
ENV PYTHONPATH=/ PYTHONUNBUFFERED=1 PYTHONDONTWRITEBYTECODE=1
|
||||
|
||||
# Run the application using the configured uvicorn server
|
||||
CMD ["poetry", "run", "python", "/api_initializer/app.py"]
|
||||
@@ -0,0 +1,71 @@
|
||||
from typing import Any
|
||||
from fastapi import APIRouter, Depends
|
||||
|
||||
from index import endpoints_index
|
||||
from events.areas.cluster import AreaRouterCluster
|
||||
|
||||
from api_validations.defaults.validations import CommonHeaders
|
||||
from api_validations.response.pagination import PaginateOnly
|
||||
from api_middlewares.token_provider import TokenProvider
|
||||
|
||||
|
||||
area_endpoint_route = APIRouter(prefix="/areas", tags=["Areas Cluster"])
|
||||
|
||||
area_list = "AreaList"
|
||||
@area_endpoint_route.post(
|
||||
path="/list",
|
||||
description="List all areas endpoint",
|
||||
operation_id=endpoints_index[area_list],
|
||||
)
|
||||
def area_list_route(data: PaginateOnly, headers: CommonHeaders = Depends(CommonHeaders.as_dependency)):
|
||||
token_object = TokenProvider.get_dict_from_redis(token=headers.token)
|
||||
event_founder_dict = dict(endpoint_code=headers.operation_id, token=token_object)
|
||||
event_key = TokenProvider.retrieve_event_codes(**event_founder_dict)
|
||||
FoundCluster = AreaRouterCluster.get_event_cluster(area_list)
|
||||
event_cluster_matched = FoundCluster.match_event(event_key=event_key)
|
||||
return event_cluster_matched.event_callable(list_options=data, headers=headers)
|
||||
|
||||
|
||||
area_create = "AreaCreate"
|
||||
@area_endpoint_route.post(
|
||||
path="/create",
|
||||
description="Create area endpoint",
|
||||
operation_id=endpoints_index[area_create],
|
||||
)
|
||||
def area_create_route(data, headers: CommonHeaders = Depends(CommonHeaders.as_dependency)):
|
||||
token_object = TokenProvider.get_dict_from_redis(token=headers.token)
|
||||
event_founder_dict = dict(endpoint_code=headers.operation_id, token=token_object)
|
||||
event_key = TokenProvider.retrieve_event_codes(**event_founder_dict)
|
||||
FoundCluster = AreaRouterCluster.get_event_cluster(area_create)
|
||||
event_cluster_matched = FoundCluster.match_event(event_key=event_key)
|
||||
return event_cluster_matched.event_callable(data=data, headers=headers)
|
||||
|
||||
|
||||
area_update = "AreaUpdate"
|
||||
@area_endpoint_route.post(
|
||||
path="/update/{uu_id}",
|
||||
description="Update area endpoint",
|
||||
operation_id=endpoints_index[area_update],
|
||||
)
|
||||
def area_update_route(uu_id: str, data, headers: CommonHeaders = Depends(CommonHeaders.as_dependency)):
|
||||
token_object = TokenProvider.get_dict_from_redis(token=headers.token)
|
||||
event_founder_dict = dict(endpoint_code=headers.operation_id, token=token_object)
|
||||
event_key = TokenProvider.retrieve_event_codes(**event_founder_dict)
|
||||
FoundCluster = AreaRouterCluster.get_event_cluster(area_update)
|
||||
event_cluster_matched = FoundCluster.match_event(event_key=event_key)
|
||||
return event_cluster_matched.event_callable(uu_id=uu_id, data=data, headers=headers)
|
||||
|
||||
|
||||
area_delete = "AreaDelete"
|
||||
@area_endpoint_route.post(
|
||||
path="/delete/{uu_id}",
|
||||
description="Delete area endpoint",
|
||||
operation_id=endpoints_index[area_delete],
|
||||
)
|
||||
def area_delete_route(uu_id: str, headers: CommonHeaders = Depends(CommonHeaders.as_dependency)):
|
||||
token_object = TokenProvider.get_dict_from_redis(token=headers.token)
|
||||
event_founder_dict = dict(endpoint_code=headers.operation_id, token=token_object)
|
||||
event_key = TokenProvider.retrieve_event_codes(**event_founder_dict)
|
||||
FoundCluster = AreaRouterCluster.get_event_cluster(area_delete)
|
||||
event_cluster_matched = FoundCluster.match_event(event_key=event_key)
|
||||
return event_cluster_matched.event_callable(uu_id=uu_id, headers=headers)
|
||||
@@ -0,0 +1,72 @@
|
||||
from typing import Any
|
||||
from fastapi import APIRouter, Depends
|
||||
|
||||
from index import endpoints_index
|
||||
from events.building_parts.cluster import PartsRouterCluster
|
||||
|
||||
from api_validations.defaults.validations import CommonHeaders
|
||||
from api_validations.response.pagination import PaginateOnly
|
||||
from api_middlewares.token_provider import TokenProvider
|
||||
|
||||
|
||||
parts_endpoint_route = APIRouter(prefix="/parts", tags=["Parts Cluster"])
|
||||
|
||||
|
||||
parts_list = "PartsList"
|
||||
@parts_endpoint_route.post(
|
||||
path="/list",
|
||||
description="List all parts endpoint",
|
||||
operation_id=endpoints_index[parts_list],
|
||||
)
|
||||
def parts_list_route(data: PaginateOnly, headers: CommonHeaders = Depends(CommonHeaders.as_dependency)):
|
||||
token_object = TokenProvider.get_dict_from_redis(token=headers.token)
|
||||
event_founder_dict = dict(endpoint_code=headers.operation_id, token=token_object)
|
||||
event_key = TokenProvider.retrieve_event_codes(**event_founder_dict)
|
||||
FoundCluster = PartsRouterCluster.get_event_cluster(parts_list)
|
||||
event_cluster_matched = FoundCluster.match_event(event_key=event_key)
|
||||
return event_cluster_matched.event_callable(list_options=data, headers=headers)
|
||||
|
||||
|
||||
parts_create = "PartsCreate"
|
||||
@parts_endpoint_route.post(
|
||||
path="/create",
|
||||
description="Create part endpoint",
|
||||
operation_id=endpoints_index[parts_create],
|
||||
)
|
||||
def parts_create_route(data, headers: CommonHeaders = Depends(CommonHeaders.as_dependency)):
|
||||
token_object = TokenProvider.get_dict_from_redis(token=headers.token)
|
||||
event_founder_dict = dict(endpoint_code=headers.operation_id, token=token_object)
|
||||
event_key = TokenProvider.retrieve_event_codes(**event_founder_dict)
|
||||
FoundCluster = PartsRouterCluster.get_event_cluster(parts_create)
|
||||
event_cluster_matched = FoundCluster.match_event(event_key=event_key)
|
||||
return event_cluster_matched.event_callable(data=data, headers=headers)
|
||||
|
||||
|
||||
parts_update = "PartsUpdate"
|
||||
@parts_endpoint_route.post(
|
||||
path="/update/{uu_id}",
|
||||
description="Update part endpoint",
|
||||
operation_id=endpoints_index[parts_update],
|
||||
)
|
||||
def parts_update_route(uu_id: str, data, headers: CommonHeaders = Depends(CommonHeaders.as_dependency)):
|
||||
token_object = TokenProvider.get_dict_from_redis(token=headers.token)
|
||||
event_founder_dict = dict(endpoint_code=headers.operation_id, token=token_object)
|
||||
event_key = TokenProvider.retrieve_event_codes(**event_founder_dict)
|
||||
FoundCluster = PartsRouterCluster.get_event_cluster(parts_update)
|
||||
event_cluster_matched = FoundCluster.match_event(event_key=event_key)
|
||||
return event_cluster_matched.event_callable(uu_id=uu_id, data=data, headers=headers)
|
||||
|
||||
|
||||
parts_delete = "PartsDelete"
|
||||
@parts_endpoint_route.post(
|
||||
path="/delete/{uu_id}",
|
||||
description="Delete part endpoint",
|
||||
operation_id=endpoints_index[parts_delete],
|
||||
)
|
||||
def parts_delete_route(uu_id: str, headers: CommonHeaders = Depends(CommonHeaders.as_dependency)):
|
||||
token_object = TokenProvider.get_dict_from_redis(token=headers.token)
|
||||
event_founder_dict = dict(endpoint_code=headers.operation_id, token=token_object)
|
||||
event_key = TokenProvider.retrieve_event_codes(**event_founder_dict)
|
||||
FoundCluster = PartsRouterCluster.get_event_cluster(parts_delete)
|
||||
event_cluster_matched = FoundCluster.match_event(event_key=event_key)
|
||||
return event_cluster_matched.event_callable(uu_id=uu_id, headers=headers)
|
||||
@@ -0,0 +1,71 @@
|
||||
from typing import Any
|
||||
from fastapi import APIRouter, Depends
|
||||
|
||||
from index import endpoints_index
|
||||
from events.builds.cluster import BuildRouterCluster
|
||||
|
||||
from api_validations.defaults.validations import CommonHeaders
|
||||
from api_validations.response.pagination import PaginateOnly
|
||||
from api_middlewares.token_provider import TokenProvider
|
||||
|
||||
|
||||
build_endpoint_route = APIRouter(prefix="/builds", tags=["Builds Cluster"])
|
||||
|
||||
build_list = "BuildList"
|
||||
@build_endpoint_route.post(
|
||||
path="/list",
|
||||
description="List all builds endpoint",
|
||||
operation_id=endpoints_index[build_list],
|
||||
)
|
||||
def build_list_route(data: PaginateOnly, headers: CommonHeaders = Depends(CommonHeaders.as_dependency)):
|
||||
token_object = TokenProvider.get_dict_from_redis(token=headers.token)
|
||||
event_founder_dict = dict(endpoint_code=headers.operation_id, token=token_object)
|
||||
event_key = TokenProvider.retrieve_event_codes(**event_founder_dict)
|
||||
FoundCluster = BuildRouterCluster.get_event_cluster(build_list)
|
||||
event_cluster_matched = FoundCluster.match_event(event_key=event_key)
|
||||
return event_cluster_matched.event_callable(list_options=data, headers=headers)
|
||||
|
||||
|
||||
build_create = "BuildCreate"
|
||||
@build_endpoint_route.post(
|
||||
path="/create",
|
||||
description="Create build endpoint",
|
||||
operation_id=endpoints_index[build_create],
|
||||
)
|
||||
def build_create_route(data, headers: CommonHeaders = Depends(CommonHeaders.as_dependency)):
|
||||
token_object = TokenProvider.get_dict_from_redis(token=headers.token)
|
||||
event_founder_dict = dict(endpoint_code=headers.operation_id, token=token_object)
|
||||
event_key = TokenProvider.retrieve_event_codes(**event_founder_dict)
|
||||
FoundCluster = BuildRouterCluster.get_event_cluster(build_create)
|
||||
event_cluster_matched = FoundCluster.match_event(event_key=event_key)
|
||||
return event_cluster_matched.event_callable(data=data, headers=headers)
|
||||
|
||||
|
||||
build_update = "BuildUpdate"
|
||||
@build_endpoint_route.post(
|
||||
path="/update/{uu_id}",
|
||||
description="Update build endpoint",
|
||||
operation_id=endpoints_index[build_update],
|
||||
)
|
||||
def build_update_route(uu_id: str, data, headers: CommonHeaders = Depends(CommonHeaders.as_dependency)):
|
||||
token_object = TokenProvider.get_dict_from_redis(token=headers.token)
|
||||
event_founder_dict = dict(endpoint_code=headers.operation_id, token=token_object)
|
||||
event_key = TokenProvider.retrieve_event_codes(**event_founder_dict)
|
||||
FoundCluster = BuildRouterCluster.get_event_cluster(build_update)
|
||||
event_cluster_matched = FoundCluster.match_event(event_key=event_key)
|
||||
return event_cluster_matched.event_callable(uu_id=uu_id, data=data, headers=headers)
|
||||
|
||||
|
||||
build_delete = "BuildDelete"
|
||||
@build_endpoint_route.post(
|
||||
path="/delete/{uu_id}",
|
||||
description="Delete build endpoint",
|
||||
operation_id=endpoints_index[build_delete],
|
||||
)
|
||||
def build_delete_route(uu_id: str, headers: CommonHeaders = Depends(CommonHeaders.as_dependency)):
|
||||
token_object = TokenProvider.get_dict_from_redis(token=headers.token)
|
||||
event_founder_dict = dict(endpoint_code=headers.operation_id, token=token_object)
|
||||
event_key = TokenProvider.retrieve_event_codes(**event_founder_dict)
|
||||
FoundCluster = BuildRouterCluster.get_event_cluster(build_delete)
|
||||
event_cluster_matched = FoundCluster.match_event(event_key=event_key)
|
||||
return event_cluster_matched.event_callable(uu_id=uu_id, headers=headers)
|
||||
@@ -0,0 +1,72 @@
|
||||
from typing import Any
|
||||
from fastapi import APIRouter, Depends
|
||||
|
||||
from index import endpoints_index
|
||||
from events.living_space.cluster import LivingSpaceRouterCluster
|
||||
|
||||
from api_validations.defaults.validations import CommonHeaders
|
||||
from api_validations.response.pagination import PaginateOnly
|
||||
from api_middlewares.token_provider import TokenProvider
|
||||
|
||||
|
||||
living_space_endpoint_route = APIRouter(prefix="/living-space", tags=["Living Space Cluster"])
|
||||
|
||||
|
||||
living_space_list = "LivingSpaceList"
|
||||
@living_space_endpoint_route.post(
|
||||
path="/list",
|
||||
description="List all living spaces endpoint",
|
||||
operation_id=endpoints_index[living_space_list],
|
||||
)
|
||||
def living_space_list_route(data: PaginateOnly, headers: CommonHeaders = Depends(CommonHeaders.as_dependency)):
|
||||
token_object = TokenProvider.get_dict_from_redis(token=headers.token)
|
||||
event_founder_dict = dict(endpoint_code=headers.operation_id, token=token_object)
|
||||
event_key = TokenProvider.retrieve_event_codes(**event_founder_dict)
|
||||
FoundCluster = LivingSpaceRouterCluster.get_event_cluster(living_space_list)
|
||||
event_cluster_matched = FoundCluster.match_event(event_key=event_key)
|
||||
return event_cluster_matched.event_callable(list_options=data, headers=headers)
|
||||
|
||||
|
||||
living_space_create = "LivingSpaceCreate"
|
||||
@living_space_endpoint_route.post(
|
||||
path="/create",
|
||||
description="Create living space endpoint",
|
||||
operation_id=endpoints_index[living_space_create],
|
||||
)
|
||||
def living_space_create_route(data, headers: CommonHeaders = Depends(CommonHeaders.as_dependency)):
|
||||
token_object = TokenProvider.get_dict_from_redis(token=headers.token)
|
||||
event_founder_dict = dict(endpoint_code=headers.operation_id, token=token_object)
|
||||
event_key = TokenProvider.retrieve_event_codes(**event_founder_dict)
|
||||
FoundCluster = LivingSpaceRouterCluster.get_event_cluster(living_space_create)
|
||||
event_cluster_matched = FoundCluster.match_event(event_key=event_key)
|
||||
return event_cluster_matched.event_callable(data=data, headers=headers)
|
||||
|
||||
|
||||
living_space_update = "LivingSpaceUpdate"
|
||||
@living_space_endpoint_route.post(
|
||||
path="/update/{uu_id}",
|
||||
description="Update living space endpoint",
|
||||
operation_id=endpoints_index[living_space_update],
|
||||
)
|
||||
def living_space_update_route(uu_id: str, data, headers: CommonHeaders = Depends(CommonHeaders.as_dependency)):
|
||||
token_object = TokenProvider.get_dict_from_redis(token=headers.token)
|
||||
event_founder_dict = dict(endpoint_code=headers.operation_id, token=token_object)
|
||||
event_key = TokenProvider.retrieve_event_codes(**event_founder_dict)
|
||||
FoundCluster = LivingSpaceRouterCluster.get_event_cluster(living_space_update)
|
||||
event_cluster_matched = FoundCluster.match_event(event_key=event_key)
|
||||
return event_cluster_matched.event_callable(uu_id=uu_id, data=data, headers=headers)
|
||||
|
||||
|
||||
living_space_delete = "LivingSpaceDelete"
|
||||
@living_space_endpoint_route.post(
|
||||
path="/delete/{uu_id}",
|
||||
description="Delete living space endpoint",
|
||||
operation_id=endpoints_index[living_space_delete],
|
||||
)
|
||||
def living_space_delete_route(uu_id: str, headers: CommonHeaders = Depends(CommonHeaders.as_dependency)):
|
||||
token_object = TokenProvider.get_dict_from_redis(token=headers.token)
|
||||
event_founder_dict = dict(endpoint_code=headers.operation_id, token=token_object)
|
||||
event_key = TokenProvider.retrieve_event_codes(**event_founder_dict)
|
||||
FoundCluster = LivingSpaceRouterCluster.get_event_cluster(living_space_delete)
|
||||
event_cluster_matched = FoundCluster.match_event(event_key=event_key)
|
||||
return event_cluster_matched.event_callable(uu_id=uu_id, headers=headers)
|
||||
19
api_services/api_builds/building_service/endpoints/routes.py
Normal file
19
api_services/api_builds/building_service/endpoints/routes.py
Normal file
@@ -0,0 +1,19 @@
|
||||
from fastapi import APIRouter
|
||||
from .builds.router import build_endpoint_route
|
||||
from .building_parts.router import parts_endpoint_route
|
||||
from .areas.router import area_endpoint_route
|
||||
from .living_space.router import living_space_endpoint_route
|
||||
|
||||
|
||||
def get_routes() -> list[APIRouter]:
|
||||
return [build_endpoint_route, parts_endpoint_route, area_endpoint_route, living_space_endpoint_route]
|
||||
|
||||
|
||||
def get_safe_endpoint_urls() -> list[tuple[str, str]]:
|
||||
return [
|
||||
("/", "GET"),
|
||||
("/docs", "GET"),
|
||||
("/redoc", "GET"),
|
||||
("/openapi.json", "GET"),
|
||||
("/metrics", "GET"),
|
||||
]
|
||||
11
api_services/api_builds/building_service/events/__init__.py
Normal file
11
api_services/api_builds/building_service/events/__init__.py
Normal file
@@ -0,0 +1,11 @@
|
||||
from .builds.cluster import BuildRouterCluster
|
||||
from .areas.cluster import AreaRouterCluster
|
||||
from .living_space.cluster import LivingSpaceRouterCluster
|
||||
from .building_parts.cluster import PartsRouterCluster
|
||||
|
||||
__all__ = [
|
||||
"BuildRouterCluster",
|
||||
"AreaRouterCluster",
|
||||
"LivingSpaceRouterCluster",
|
||||
"PartsRouterCluster",
|
||||
]
|
||||
@@ -0,0 +1,27 @@
|
||||
from api_initializer.event_clusters import EventCluster, RouterCluster
|
||||
from index import endpoints_index
|
||||
from .supers_events import (
|
||||
SuperAreaListEvent,
|
||||
SuperAreaCreateEvent,
|
||||
SuperAreaUpdateEvent,
|
||||
SuperAreaDeleteEvent,
|
||||
)
|
||||
|
||||
AreaRouterCluster = RouterCluster(name="AreaRouterCluster")
|
||||
|
||||
AreaListEventCluster = EventCluster(name="AreaListEventCluster", endpoint_uu_id=endpoints_index["AreaList"])
|
||||
AreaListEventCluster.add_event(SuperAreaListEvent)
|
||||
|
||||
AreaCreateEventCluster = EventCluster(name="AreaCreateEventCluster", endpoint_uu_id=endpoints_index["AreaCreate"])
|
||||
AreaCreateEventCluster.add_event(SuperAreaCreateEvent)
|
||||
|
||||
AreaUpdateEventCluster = EventCluster(name="AreaUpdateEventCluster", endpoint_uu_id=endpoints_index["AreaUpdate"])
|
||||
AreaUpdateEventCluster.add_event(SuperAreaUpdateEvent)
|
||||
|
||||
AreaDeleteEventCluster = EventCluster(name="AreaDeleteEventCluster", endpoint_uu_id=endpoints_index["AreaDelete"])
|
||||
AreaDeleteEventCluster.add_event(SuperAreaDeleteEvent)
|
||||
|
||||
AreaRouterCluster.set_event_cluster(AreaListEventCluster)
|
||||
AreaRouterCluster.set_event_cluster(AreaCreateEventCluster)
|
||||
AreaRouterCluster.set_event_cluster(AreaUpdateEventCluster)
|
||||
AreaRouterCluster.set_event_cluster(AreaDeleteEventCluster)
|
||||
@@ -0,0 +1,122 @@
|
||||
from typing import Any
|
||||
|
||||
from api_initializer.event_clusters import Event
|
||||
from api_validations.response import (
|
||||
PaginateOnly,
|
||||
Pagination,
|
||||
PaginationResult,
|
||||
PostgresResponseSingle,
|
||||
PostgresResponse,
|
||||
EndpointResponse
|
||||
)
|
||||
from schemas import (
|
||||
BuildArea,
|
||||
Build,
|
||||
BuildParts,
|
||||
AccountRecords,
|
||||
)
|
||||
from api_validations.defaults.validations import CommonHeaders
|
||||
|
||||
|
||||
# List all area Super User
|
||||
SuperAreaListEvent = Event(
|
||||
name="super_area_list",
|
||||
key="0d5ba7be-028c-43ce-9a99-f495f812a835",
|
||||
request_validator=None, # TODO: Add request validator
|
||||
response_validator=None, # TODO: Add response validator
|
||||
description="Super Area List all endpoint",
|
||||
)
|
||||
|
||||
# Create area Super User
|
||||
SuperAreaCreateEvent = Event(
|
||||
name="super_area_create",
|
||||
key="0ba2a06d-f4fa-47b9-a305-2225414ffc4a",
|
||||
request_validator=None, # TODO: Add request validator
|
||||
response_validator=None, # TODO: Add response validator
|
||||
description="Super Area Create endpoint",
|
||||
)
|
||||
|
||||
# Update area Super User
|
||||
SuperAreaUpdateEvent = Event(
|
||||
name="super_area_update",
|
||||
key="ecec956a-eadf-4556-b4e1-4ee81a6b8fb2",
|
||||
request_validator=None, # TODO: Add request validator
|
||||
response_validator=None, # TODO: Add response validator
|
||||
description="Super Area Update endpoint",
|
||||
)
|
||||
|
||||
# Delete area Super User
|
||||
SuperAreaDeleteEvent = Event(
|
||||
name="super_area_delete",
|
||||
key="4b2ca548-4113-4942-8a76-1f4337fba98a",
|
||||
request_validator=None, # TODO: Add request validator
|
||||
response_validator=None, # TODO: Add response validator
|
||||
description="Super Area Delete endpoint",
|
||||
)
|
||||
|
||||
|
||||
def super_area_list_callable(list_options: PaginateOnly, headers: CommonHeaders):
|
||||
list_options = PaginateOnly(**list_options.model_dump())
|
||||
if token.is_employee:
|
||||
raise Exception("Forbidden for employees")
|
||||
|
||||
# TODO: Pydantic Model must be implemnted for list_options.query
|
||||
with AccountRecords.new_session() as db_session:
|
||||
AccountRecords.set_session(db_session)
|
||||
list_of_fields = [
|
||||
AccountRecords.iban,
|
||||
AccountRecords.bank_date,
|
||||
AccountRecords.currency,
|
||||
AccountRecords.currency_value,
|
||||
AccountRecords.process_comment,
|
||||
AccountRecords.add_comment_note,
|
||||
AccountRecords.receive_debit,
|
||||
AccountRecords.is_email_send,
|
||||
AccountRecords.is_notification_send,
|
||||
]
|
||||
account_records_query = db_session.query(*list_of_fields
|
||||
).join(BuildParts, BuildParts.id == AccountRecords.build_parts_id
|
||||
).filter(BuildParts.id == token.selected_occupant.build_part_id)
|
||||
if list_options.query:
|
||||
account_records_query = account_records_query.filter(*AccountRecords.convert(list_options.query))
|
||||
|
||||
pagination = Pagination(data=account_records_query)
|
||||
pagination.change(**list_options.model_dump())
|
||||
pagination_result = PaginationResult(data=account_records_query, pagination=pagination)
|
||||
return EndpointResponse(message="MSG0003-LIST", pagination_result=pagination_result).response
|
||||
|
||||
|
||||
SuperAreaListEvent.event_callable = super_area_list_callable
|
||||
|
||||
|
||||
def super_area_create_callable(data, headers: CommonHeaders):
|
||||
return {
|
||||
"message": "MSG0001-INSERT",
|
||||
"data": data,
|
||||
"completed": True,
|
||||
}
|
||||
|
||||
|
||||
SuperAreaCreateEvent.event_callable = super_area_create_callable
|
||||
|
||||
|
||||
def super_area_update_callable(data, headers: CommonHeaders):
|
||||
return {
|
||||
"message": "MSG0002-UPDATE",
|
||||
"data": data,
|
||||
"completed": True,
|
||||
}
|
||||
|
||||
|
||||
SuperAreaUpdateEvent.event_callable = super_area_update_callable
|
||||
|
||||
|
||||
def super_area_delete_callable(uu_id: str, headers: CommonHeaders):
|
||||
return {
|
||||
"message": "MSG0003-DELETE",
|
||||
"data": data,
|
||||
"completed": True,
|
||||
}
|
||||
|
||||
|
||||
SuperAreaDeleteEvent.event_callable = super_area_delete_callable
|
||||
@@ -0,0 +1,27 @@
|
||||
from api_initializer.event_clusters import EventCluster, RouterCluster
|
||||
from index import endpoints_index
|
||||
from .supers_events import (
|
||||
SuperPartsListEvent,
|
||||
SuperPartsCreateEvent,
|
||||
SuperPartsUpdateEvent,
|
||||
SuperPartsDeleteEvent,
|
||||
)
|
||||
|
||||
PartsRouterCluster = RouterCluster(name="PartsRouterCluster")
|
||||
|
||||
PartsListEventCluster = EventCluster(name="PartsListEventCluster", endpoint_uu_id=endpoints_index["PartsList"])
|
||||
PartsListEventCluster.add_event(SuperPartsListEvent)
|
||||
|
||||
PartsCreateEventCluster = EventCluster(name="PartsCreateEventCluster", endpoint_uu_id=endpoints_index["PartsCreate"])
|
||||
PartsCreateEventCluster.add_event(SuperPartsCreateEvent)
|
||||
|
||||
PartsUpdateEventCluster = EventCluster(name="PartsUpdateEventCluster", endpoint_uu_id=endpoints_index["PartsUpdate"])
|
||||
PartsUpdateEventCluster.add_event(SuperPartsUpdateEvent)
|
||||
|
||||
PartsDeleteEventCluster = EventCluster(name="PartsDeleteEventCluster", endpoint_uu_id=endpoints_index["PartsDelete"])
|
||||
PartsDeleteEventCluster.add_event(SuperPartsDeleteEvent)
|
||||
|
||||
PartsRouterCluster.set_event_cluster(PartsListEventCluster)
|
||||
PartsRouterCluster.set_event_cluster(PartsCreateEventCluster)
|
||||
PartsRouterCluster.set_event_cluster(PartsUpdateEventCluster)
|
||||
PartsRouterCluster.set_event_cluster(PartsDeleteEventCluster)
|
||||
@@ -0,0 +1,98 @@
|
||||
from typing import Any
|
||||
|
||||
from api_initializer.event_clusters import Event
|
||||
from api_validations.response import (
|
||||
PaginateOnly,
|
||||
Pagination,
|
||||
PaginationResult,
|
||||
PostgresResponseSingle,
|
||||
PostgresResponse,
|
||||
EndpointResponse
|
||||
)
|
||||
from schemas import (
|
||||
Build,
|
||||
BuildParts,
|
||||
AccountRecords,
|
||||
)
|
||||
from api_validations.defaults.validations import CommonHeaders
|
||||
|
||||
|
||||
# List all endpoint Super Parts
|
||||
SuperPartsListEvent = Event(
|
||||
name="super_parts_list",
|
||||
key="018e659d-380d-4b2a-b5a4-d77530cb8de0",
|
||||
request_validator=None, # TODO: Add request validator
|
||||
response_validator=None, # TODO: Add response validator
|
||||
description="Super Parts List all endpoint",
|
||||
)
|
||||
|
||||
# Create endpoint Super Parts
|
||||
SuperPartsCreateEvent = Event(
|
||||
name="super_parts_create",
|
||||
key="fdfede54-f0e7-4d48-8eae-269479ad9abb",
|
||||
request_validator=None, # TODO: Add request validator
|
||||
response_validator=None, # TODO: Add response validator
|
||||
description="Super Parts Create endpoint",
|
||||
)
|
||||
|
||||
# Update endpoint Super Parts
|
||||
SuperPartsUpdateEvent = Event(
|
||||
name="super_parts_update",
|
||||
key="ace6137c-fe8e-45bd-ae51-bc1c293f8373",
|
||||
request_validator=None, # TODO: Add request validator
|
||||
response_validator=None, # TODO: Add response validator
|
||||
description="Super Parts Update endpoint",
|
||||
)
|
||||
|
||||
# Delete endpoint Super Parts
|
||||
SuperPartsDeleteEvent = Event(
|
||||
name="super_parts_delete",
|
||||
key="8fb7f505-7a3a-4260-9959-ae0e5c8f9bfe",
|
||||
request_validator=None, # TODO: Add request validator
|
||||
response_validator=None, # TODO: Add response validator
|
||||
description="Super Parts Delete endpoint",
|
||||
)
|
||||
|
||||
|
||||
def super_parts_list_callable(list_options: PaginateOnly, headers: CommonHeaders):
|
||||
return {
|
||||
"message": "MSG0003-LIST",
|
||||
"data": None,
|
||||
"completed": True,
|
||||
}
|
||||
|
||||
|
||||
SuperPartsListEvent.event_callable = super_parts_list_callable
|
||||
|
||||
|
||||
def super_parts_create_callable(data, headers: CommonHeaders):
|
||||
return {
|
||||
"message": "MSG0001-INSERT",
|
||||
"data": None,
|
||||
"completed": True,
|
||||
}
|
||||
|
||||
|
||||
SuperPartsCreateEvent.event_callable = super_parts_create_callable
|
||||
|
||||
|
||||
def super_parts_update_callable(data, headers: CommonHeaders):
|
||||
return {
|
||||
"message": "MSG0002-UPDATE",
|
||||
"data": None,
|
||||
"completed": True,
|
||||
}
|
||||
|
||||
|
||||
SuperPartsUpdateEvent.event_callable = super_parts_update_callable
|
||||
|
||||
|
||||
def super_parts_delete_callable(uu_id: str, headers: CommonHeaders):
|
||||
return {
|
||||
"message": "MSG0003-DELETE",
|
||||
"data": None,
|
||||
"completed": True,
|
||||
}
|
||||
|
||||
|
||||
SuperPartsDeleteEvent.event_callable = super_parts_delete_callable
|
||||
@@ -0,0 +1,27 @@
|
||||
from api_initializer.event_clusters import EventCluster, RouterCluster
|
||||
from index import endpoints_index
|
||||
from .supers_events import (
|
||||
SuperBuildListEvent,
|
||||
SuperBuildCreateEvent,
|
||||
SuperBuildUpdateEvent,
|
||||
SuperBuildDeleteEvent,
|
||||
)
|
||||
|
||||
BuildRouterCluster = RouterCluster(name="BuildRouterCluster")
|
||||
|
||||
BuildListEventCluster = EventCluster(name="BuildListEventCluster", endpoint_uu_id=endpoints_index["BuildList"])
|
||||
BuildListEventCluster.add_event(SuperBuildListEvent)
|
||||
|
||||
BuildCreateEventCluster = EventCluster(name="BuildCreateEventCluster", endpoint_uu_id=endpoints_index["BuildCreate"])
|
||||
BuildCreateEventCluster.add_event(SuperBuildCreateEvent)
|
||||
|
||||
BuildUpdateEventCluster = EventCluster(name="BuildUpdateEventCluster", endpoint_uu_id=endpoints_index["BuildUpdate"])
|
||||
BuildUpdateEventCluster.add_event(SuperBuildUpdateEvent)
|
||||
|
||||
BuildDeleteEventCluster = EventCluster(name="BuildDeleteEventCluster", endpoint_uu_id=endpoints_index["BuildDelete"])
|
||||
BuildDeleteEventCluster.add_event(SuperBuildDeleteEvent)
|
||||
|
||||
BuildRouterCluster.set_event_cluster(BuildListEventCluster)
|
||||
BuildRouterCluster.set_event_cluster(BuildCreateEventCluster)
|
||||
BuildRouterCluster.set_event_cluster(BuildUpdateEventCluster)
|
||||
BuildRouterCluster.set_event_cluster(BuildDeleteEventCluster)
|
||||
@@ -0,0 +1,118 @@
|
||||
from typing import Any
|
||||
|
||||
from api_initializer.event_clusters import Event
|
||||
from api_validations.response import (
|
||||
PaginateOnly,
|
||||
Pagination,
|
||||
PaginationResult,
|
||||
PostgresResponseSingle,
|
||||
PostgresResponse,
|
||||
EndpointResponse
|
||||
)
|
||||
from schemas import (
|
||||
Build,
|
||||
BuildParts,
|
||||
AccountRecords,
|
||||
)
|
||||
from api_validations.defaults.validations import CommonHeaders
|
||||
|
||||
|
||||
# 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())
|
||||
if token.is_employee:
|
||||
raise Exception("Forbidden for employees")
|
||||
|
||||
# TODO: Pydantic Model must be implemnted for list_options.query
|
||||
with AccountRecords.new_session() as db_session:
|
||||
AccountRecords.set_session(db_session)
|
||||
list_of_fields = [
|
||||
AccountRecords.iban,
|
||||
AccountRecords.bank_date,
|
||||
AccountRecords.currency,
|
||||
AccountRecords.currency_value,
|
||||
AccountRecords.process_comment,
|
||||
AccountRecords.add_comment_note,
|
||||
AccountRecords.receive_debit,
|
||||
AccountRecords.is_email_send,
|
||||
AccountRecords.is_notification_send,
|
||||
]
|
||||
account_records_query = db_session.query(*list_of_fields
|
||||
).join(BuildParts, BuildParts.id == AccountRecords.build_parts_id
|
||||
).filter(BuildParts.id == token.selected_occupant.build_part_id)
|
||||
if list_options.query:
|
||||
account_records_query = account_records_query.filter(*AccountRecords.convert(list_options.query))
|
||||
|
||||
pagination = Pagination(data=account_records_query)
|
||||
pagination.change(**list_options.model_dump())
|
||||
pagination_result = PaginationResult(data=account_records_query, pagination=pagination)
|
||||
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):
|
||||
return {
|
||||
"message": "MSG0001-INSERT",
|
||||
"data": None,
|
||||
"completed": True,
|
||||
}
|
||||
|
||||
|
||||
SuperBuildCreateEvent.event_callable = super_build_create_callable
|
||||
|
||||
|
||||
def super_build_update_callable(data, headers: CommonHeaders):
|
||||
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):
|
||||
return {
|
||||
"message": "MSG0003-DELETE",
|
||||
"data": None,
|
||||
"completed": True,
|
||||
}
|
||||
|
||||
|
||||
SuperBuildDeleteEvent.event_callable = super_build_delete_callable
|
||||
@@ -0,0 +1,27 @@
|
||||
from api_initializer.event_clusters import EventCluster, RouterCluster
|
||||
from index import endpoints_index
|
||||
from .supers_events import (
|
||||
SuperLivingSpaceListEvent,
|
||||
SuperLivingSpaceCreateEvent,
|
||||
SuperLivingSpaceUpdateEvent,
|
||||
SuperLivingSpaceDeleteEvent,
|
||||
)
|
||||
|
||||
LivingSpaceRouterCluster = RouterCluster(name="LivingSpaceRouterCluster")
|
||||
|
||||
LivingSpaceListEventCluster = EventCluster(name="LivingSpaceListEventCluster", endpoint_uu_id=endpoints_index["LivingSpaceList"])
|
||||
LivingSpaceListEventCluster.add_event(SuperLivingSpaceListEvent)
|
||||
|
||||
LivingSpaceCreateEventCluster = EventCluster(name="LivingSpaceCreateEventCluster", endpoint_uu_id=endpoints_index["LivingSpaceCreate"])
|
||||
LivingSpaceCreateEventCluster.add_event(SuperLivingSpaceCreateEvent)
|
||||
|
||||
LivingSpaceUpdateEventCluster = EventCluster(name="LivingSpaceUpdateEventCluster", endpoint_uu_id=endpoints_index["LivingSpaceUpdate"])
|
||||
LivingSpaceUpdateEventCluster.add_event(SuperLivingSpaceUpdateEvent)
|
||||
|
||||
LivingSpaceDeleteEventCluster = EventCluster(name="LivingSpaceDeleteEventCluster", endpoint_uu_id=endpoints_index["LivingSpaceDelete"])
|
||||
LivingSpaceDeleteEventCluster.add_event(SuperLivingSpaceDeleteEvent)
|
||||
|
||||
LivingSpaceRouterCluster.set_event_cluster(LivingSpaceListEventCluster)
|
||||
LivingSpaceRouterCluster.set_event_cluster(LivingSpaceCreateEventCluster)
|
||||
LivingSpaceRouterCluster.set_event_cluster(LivingSpaceUpdateEventCluster)
|
||||
LivingSpaceRouterCluster.set_event_cluster(LivingSpaceDeleteEventCluster)
|
||||
@@ -0,0 +1,95 @@
|
||||
from typing import Any
|
||||
|
||||
from api_initializer.event_clusters import Event
|
||||
from api_validations.response import (
|
||||
PaginateOnly,
|
||||
Pagination,
|
||||
PaginationResult,
|
||||
PostgresResponseSingle,
|
||||
PostgresResponse,
|
||||
EndpointResponse
|
||||
)
|
||||
from schemas import (
|
||||
Build,
|
||||
BuildParts,
|
||||
AccountRecords,
|
||||
)
|
||||
from api_validations.defaults.validations import CommonHeaders
|
||||
|
||||
|
||||
# List all endpoint FL-REP
|
||||
SuperLivingSpaceListEvent = Event(
|
||||
name="super_living_space_list",
|
||||
key="e3eced11-c464-4893-8b49-d2858c160ed0",
|
||||
request_validator=None, # TODO: Add request validator
|
||||
response_validator=None, # TODO: Add response validator
|
||||
description="Super Living Space List all endpoint",
|
||||
)
|
||||
|
||||
SuperLivingSpaceCreateEvent = Event(
|
||||
name="super_living_space_create",
|
||||
key="9e26f770-3475-4831-9da9-4684119b13ae",
|
||||
request_validator=None, # TODO: Add request validator
|
||||
response_validator=None, # TODO: Add response validator
|
||||
description="Super Living Space Create endpoint",
|
||||
)
|
||||
|
||||
SuperLivingSpaceUpdateEvent = Event(
|
||||
name="super_living_space_update",
|
||||
key="ecd15d27-e5e8-4bd1-972b-9b4508cfac77",
|
||||
request_validator=None, # TODO: Add request validator
|
||||
response_validator=None, # TODO: Add response validator
|
||||
description="Super Living Space Update endpoint",
|
||||
)
|
||||
|
||||
SuperLivingSpaceDeleteEvent = Event(
|
||||
name="super_living_space_delete",
|
||||
key="4fcadb8c-2e26-4af3-acb5-bcbf87cae0c0",
|
||||
request_validator=None, # TODO: Add request validator
|
||||
response_validator=None, # TODO: Add response validator
|
||||
description="Super Living Space Delete endpoint",
|
||||
)
|
||||
|
||||
|
||||
def super_living_space_list_callable(list_options: PaginateOnly, headers: CommonHeaders):
|
||||
return {
|
||||
"message": "MSG0003-LIST",
|
||||
"data": None,
|
||||
"completed": True,
|
||||
}
|
||||
|
||||
|
||||
SuperLivingSpaceListEvent.event_callable = super_living_space_list_callable
|
||||
|
||||
|
||||
def super_living_space_create_callable(data, headers: CommonHeaders):
|
||||
return {
|
||||
"message": "MSG0001-INSERT",
|
||||
"data": None,
|
||||
"completed": True,
|
||||
}
|
||||
|
||||
|
||||
SuperLivingSpaceCreateEvent.event_callable = super_living_space_create_callable
|
||||
|
||||
|
||||
def super_living_space_update_callable(data, headers: CommonHeaders):
|
||||
return {
|
||||
"message": "MSG0002-UPDATE",
|
||||
"data": None,
|
||||
"completed": True,
|
||||
}
|
||||
|
||||
|
||||
SuperLivingSpaceUpdateEvent.event_callable = super_living_space_update_callable
|
||||
|
||||
|
||||
def super_living_space_delete_callable(uu_id: str, headers: CommonHeaders):
|
||||
return {
|
||||
"message": "MSG0003-DELETE",
|
||||
"data": None,
|
||||
"completed": True,
|
||||
}
|
||||
|
||||
|
||||
SuperLivingSpaceDeleteEvent.event_callable = super_living_space_delete_callable
|
||||
20
api_services/api_builds/building_service/index.py
Normal file
20
api_services/api_builds/building_service/index.py
Normal file
@@ -0,0 +1,20 @@
|
||||
|
||||
|
||||
endpoints_index: dict = {
|
||||
"AreaList": "31382497-e0fd-4574-9684-072a85ce8f29",
|
||||
"AreaCreate": "e8b1c9ee-a25a-4434-a018-31866826f1ed",
|
||||
"AreaUpdate": "c57093e1-0e0b-459b-bedf-87280c040ab1",
|
||||
"AreaDelete": "e5239349-99c8-4fe1-8db9-4876abf25686",
|
||||
"BuildList": "b34319e8-1829-426e-b0ab-9c6a1a3a8cbd",
|
||||
"BuildCreate": "66c3ed83-ce3c-4c3c-a158-aa5bef20a3e8",
|
||||
"BuildUpdate": "d0587d29-da23-4c11-a861-c27fe7f81761",
|
||||
"BuildDelete": "13382948-d259-484e-b30f-3b42f9e20a42",
|
||||
"LivingSpaceList": "98d9ac9e-fca4-4b0a-bf1e-ba2b3348c873",
|
||||
"LivingSpaceCreate": "319e3777-4a19-4f32-b7bd-e7af3a9e541c",
|
||||
"LivingSpaceUpdate": "e4873948-7aa5-46cd-9c41-42c33339f4d6",
|
||||
"LivingSpaceDelete": "ead99b10-efad-4ddb-8b7c-3c9474238a20",
|
||||
"PartsList": "d8bb7636-b768-4083-9313-af63fea1d1c3",
|
||||
"PartsCreate": "755588f0-aabb-4be0-9a49-2be47ea4aaee",
|
||||
"PartsUpdate": "44493fe1-367c-4eb9-afbf-bc7f7daca158",
|
||||
"PartsDelete": "f2cea40b-295b-4a55-9b13-02c82979c53e",
|
||||
}
|
||||
31
api_services/api_builds/identity_service/Dockerfile
Normal file
31
api_services/api_builds/identity_service/Dockerfile
Normal file
@@ -0,0 +1,31 @@
|
||||
FROM python:3.12-slim
|
||||
|
||||
WORKDIR /
|
||||
|
||||
# Install system dependencies and Poetry
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends gcc && rm -rf /var/lib/apt/lists/* && pip install --no-cache-dir poetry
|
||||
|
||||
# Copy Poetry configuration
|
||||
COPY /pyproject.toml ./pyproject.toml
|
||||
|
||||
# Configure Poetry and install dependencies with optimizations
|
||||
RUN poetry config virtualenvs.create false && poetry install --no-interaction --no-ansi --no-root --only main && pip cache purge && rm -rf ~/.cache/pypoetry
|
||||
|
||||
# Copy application code
|
||||
COPY /api_services/api_initializer /api_initializer
|
||||
COPY /api_services/api_controllers /api_controllers
|
||||
COPY /api_services/api_validations /api_validations
|
||||
COPY /api_services/schemas /schemas
|
||||
COPY /api_services/api_modules /api_modules
|
||||
|
||||
COPY /api_services/api_middlewares /api_middlewares
|
||||
COPY /api_services/api_builds/identity_service/endpoints /api_initializer/endpoints
|
||||
COPY /api_services/api_builds/identity_service/events /api_initializer/events
|
||||
COPY /api_services/api_builds/identity_service/validations /api_initializer/validations
|
||||
COPY /api_services/api_builds/identity_service/index.py /api_initializer/index.py
|
||||
|
||||
# Set Python path to include app directory
|
||||
ENV PYTHONPATH=/ PYTHONUNBUFFERED=1 PYTHONDONTWRITEBYTECODE=1
|
||||
|
||||
# Run the application using the configured uvicorn server
|
||||
CMD ["poetry", "run", "python", "/api_initializer/app.py"]
|
||||
@@ -0,0 +1,72 @@
|
||||
from typing import Any
|
||||
from fastapi import APIRouter, Depends
|
||||
|
||||
from index import endpoints_index
|
||||
from events.people.cluster import PeopleRouterCluster
|
||||
|
||||
from api_validations.defaults.validations import CommonHeaders
|
||||
from api_validations.response.pagination import PaginateOnly
|
||||
from api_middlewares.token_provider import TokenProvider
|
||||
|
||||
|
||||
people_endpoint_route = APIRouter(prefix="/people", tags=["People Cluster"])
|
||||
|
||||
|
||||
people_list = "PeopleList"
|
||||
@people_endpoint_route.post(
|
||||
path="/list",
|
||||
description="List all people endpoint",
|
||||
operation_id=endpoints_index[people_list],
|
||||
)
|
||||
def people_list_route(data: PaginateOnly, headers: CommonHeaders = Depends(CommonHeaders.as_dependency)):
|
||||
token_object = TokenProvider.get_dict_from_redis(token=headers.token)
|
||||
event_founder_dict = dict(endpoint_code=headers.operation_id, token=token_object)
|
||||
event_key = TokenProvider.retrieve_event_codes(**event_founder_dict)
|
||||
FoundCluster = PeopleRouterCluster.get_event_cluster(people_list)
|
||||
event_cluster_matched = FoundCluster.match_event(event_key=event_key)
|
||||
return event_cluster_matched.event_callable(list_options=data, headers=headers)
|
||||
|
||||
|
||||
people_create = "PeopleCreate"
|
||||
@people_endpoint_route.post(
|
||||
path="/create",
|
||||
description="Create people endpoint",
|
||||
operation_id=endpoints_index[people_create],
|
||||
)
|
||||
def people_create_route(data, headers: CommonHeaders = Depends(CommonHeaders.as_dependency)):
|
||||
token_object = TokenProvider.get_dict_from_redis(token=headers.token)
|
||||
event_founder_dict = dict(endpoint_code=headers.operation_id, token=token_object)
|
||||
event_key = TokenProvider.retrieve_event_codes(**event_founder_dict)
|
||||
FoundCluster = PeopleRouterCluster.get_event_cluster(people_create)
|
||||
event_cluster_matched = FoundCluster.match_event(event_key=event_key)
|
||||
return event_cluster_matched.event_callable(data=data, headers=headers)
|
||||
|
||||
|
||||
people_update = "PeopleUpdate"
|
||||
@people_endpoint_route.post(
|
||||
path="/update/{uu_id}",
|
||||
description="Update people endpoint",
|
||||
operation_id=endpoints_index[people_update],
|
||||
)
|
||||
def people_update_route(uu_id: str, data, headers: CommonHeaders = Depends(CommonHeaders.as_dependency)):
|
||||
token_object = TokenProvider.get_dict_from_redis(token=headers.token)
|
||||
event_founder_dict = dict(endpoint_code=headers.operation_id, token=token_object)
|
||||
event_key = TokenProvider.retrieve_event_codes(**event_founder_dict)
|
||||
FoundCluster = PeopleRouterCluster.get_event_cluster(people_update)
|
||||
event_cluster_matched = FoundCluster.match_event(event_key=event_key)
|
||||
return event_cluster_matched.event_callable(uu_id=uu_id, data=data, header=headers)
|
||||
|
||||
|
||||
people_delete = "PeopleDelete"
|
||||
@people_endpoint_route.delete(
|
||||
path="/delete/{uu_id}",
|
||||
description="Delete people endpoint",
|
||||
operation_id=endpoints_index[people_delete],
|
||||
)
|
||||
def people_delete_route(uu_id: str, headers: CommonHeaders = Depends(CommonHeaders.as_dependency)):
|
||||
token_object = TokenProvider.get_dict_from_redis(token=headers.token)
|
||||
event_founder_dict = dict(endpoint_code=headers.operation_id, token=token_object)
|
||||
event_key = TokenProvider.retrieve_event_codes(**event_founder_dict)
|
||||
FoundCluster = PeopleRouterCluster.get_event_cluster(people_delete)
|
||||
event_cluster_matched = FoundCluster.match_event(event_key=event_key)
|
||||
return event_cluster_matched.event_callable(uu_id=uu_id, headers=headers)
|
||||
17
api_services/api_builds/identity_service/endpoints/routes.py
Normal file
17
api_services/api_builds/identity_service/endpoints/routes.py
Normal file
@@ -0,0 +1,17 @@
|
||||
from fastapi import APIRouter
|
||||
from .people.router import people_endpoint_route
|
||||
from .user.router import user_endpoint_route
|
||||
|
||||
|
||||
def get_routes() -> list[APIRouter]:
|
||||
return [people_endpoint_route, user_endpoint_route]
|
||||
|
||||
|
||||
def get_safe_endpoint_urls() -> list[tuple[str, str]]:
|
||||
return [
|
||||
("/", "GET"),
|
||||
("/docs", "GET"),
|
||||
("/redoc", "GET"),
|
||||
("/openapi.json", "GET"),
|
||||
("/metrics", "GET"),
|
||||
]
|
||||
@@ -0,0 +1,73 @@
|
||||
from typing import Any
|
||||
from fastapi import APIRouter, Depends
|
||||
|
||||
from index import endpoints_index
|
||||
from events.user.cluster import UserRouterCluster
|
||||
|
||||
from api_validations.defaults.validations import CommonHeaders
|
||||
from api_validations.response.pagination import PaginateOnly
|
||||
from api_middlewares.token_provider import TokenProvider
|
||||
|
||||
|
||||
user_endpoint_route = APIRouter(prefix="/users", tags=["User Cluster"])
|
||||
|
||||
|
||||
user_list = "UserList"
|
||||
@user_endpoint_route.post(
|
||||
path="/list",
|
||||
description="List all users endpoint",
|
||||
operation_id=endpoints_index[user_list],
|
||||
)
|
||||
def user_list_route(data: PaginateOnly, headers: CommonHeaders = Depends(CommonHeaders.as_dependency)):
|
||||
token_object = TokenProvider.get_dict_from_redis(token=headers.token)
|
||||
event_founder_dict = dict(endpoint_code=headers.operation_id, token=token_object)
|
||||
event_key = TokenProvider.retrieve_event_codes(**event_founder_dict)
|
||||
FoundCluster = UserRouterCluster.get_event_cluster(user_list)
|
||||
event_cluster_matched = FoundCluster.match_event(event_key=event_key)
|
||||
return event_cluster_matched.event_callable(list_options=data, headers=headers)
|
||||
|
||||
|
||||
user_create = "UserCreate"
|
||||
@user_endpoint_route.post(
|
||||
path="/create",
|
||||
description="Create user endpoint",
|
||||
operation_id=endpoints_index[user_create],
|
||||
)
|
||||
def user_create_route(data, headers: CommonHeaders = Depends(CommonHeaders.as_dependency)):
|
||||
token_object = TokenProvider.get_dict_from_redis(token=headers.token)
|
||||
event_founder_dict = dict(endpoint_code=headers.operation_id, token=token_object)
|
||||
event_key = TokenProvider.retrieve_event_codes(**event_founder_dict)
|
||||
FoundCluster = UserRouterCluster.get_event_cluster(user_create)
|
||||
event_cluster_matched = FoundCluster.match_event(event_key=event_key)
|
||||
return event_cluster_matched.event_callable(data=data, headers=headers)
|
||||
|
||||
|
||||
user_update = "UserUpdate"
|
||||
@user_endpoint_route.post(
|
||||
path="/update/{uu_id}",
|
||||
description="Update user endpoint",
|
||||
operation_id=endpoints_index[user_update],
|
||||
)
|
||||
def user_update_route(uu_id: str, data, headers: CommonHeaders = Depends(CommonHeaders.as_dependency)):
|
||||
token_object = TokenProvider.get_dict_from_redis(token=headers.token)
|
||||
event_founder_dict = dict(endpoint_code=headers.operation_id, token=token_object)
|
||||
event_key = TokenProvider.retrieve_event_codes(**event_founder_dict)
|
||||
FoundCluster = UserRouterCluster.get_event_cluster(user_update)
|
||||
event_cluster_matched = FoundCluster.match_event(event_key=event_key)
|
||||
return event_cluster_matched.event_callable(uu_id=uu_id, data=data, headers=headers)
|
||||
|
||||
|
||||
user_delete = "UserDelete"
|
||||
@user_endpoint_route.delete(
|
||||
path="/delete/{uu_id}",
|
||||
description="Delete user endpoint",
|
||||
operation_id=endpoints_index[user_delete],
|
||||
)
|
||||
def user_delete_route(uu_id: str, headers: CommonHeaders = Depends(CommonHeaders.as_dependency)):
|
||||
token_object = TokenProvider.get_dict_from_redis(token=headers.token)
|
||||
event_founder_dict = dict(endpoint_code=headers.operation_id, token=token_object)
|
||||
event_key = TokenProvider.retrieve_event_codes(**event_founder_dict)
|
||||
FoundCluster = UserRouterCluster.get_event_cluster(user_delete)
|
||||
event_cluster_matched = FoundCluster.match_event(event_key=event_key)
|
||||
return event_cluster_matched.event_callable(uu_id=uu_id, headers=headers)
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
from .people.cluster import PeopleRouterCluster
|
||||
from .user.cluster import UserRouterCluster
|
||||
|
||||
__all__ = [
|
||||
"PeopleRouterCluster",
|
||||
"UserRouterCluster",
|
||||
]
|
||||
@@ -0,0 +1,27 @@
|
||||
from api_initializer.event_clusters import EventCluster, RouterCluster
|
||||
from index import endpoints_index
|
||||
from .supers_events import (
|
||||
SuperPeopleListEvent,
|
||||
SuperPeopleCreateEvent,
|
||||
SuperPeopleUpdateEvent,
|
||||
SuperPeopleDeleteEvent,
|
||||
)
|
||||
|
||||
PeopleRouterCluster = RouterCluster(name="PeopleRouterCluster")
|
||||
|
||||
PeopleListEventCluster = EventCluster(name="PeopleListEventCluster", endpoint_uu_id=endpoints_index["PeopleList"])
|
||||
PeopleListEventCluster.add_event(SuperPeopleListEvent)
|
||||
|
||||
PeopleCreateEventCluster = EventCluster(name="PeopleCreateEventCluster", endpoint_uu_id=endpoints_index["PeopleCreate"])
|
||||
PeopleCreateEventCluster.add_event(SuperPeopleCreateEvent)
|
||||
|
||||
PeopleUpdateEventCluster = EventCluster(name="PeopleUpdateEventCluster", endpoint_uu_id=endpoints_index["PeopleUpdate"])
|
||||
PeopleUpdateEventCluster.add_event(SuperPeopleUpdateEvent)
|
||||
|
||||
PeopleDeleteEventCluster = EventCluster(name="PeopleDeleteEventCluster", endpoint_uu_id=endpoints_index["PeopleDelete"])
|
||||
PeopleDeleteEventCluster.add_event(SuperPeopleDeleteEvent)
|
||||
|
||||
PeopleRouterCluster.set_event_cluster(PeopleListEventCluster)
|
||||
PeopleRouterCluster.set_event_cluster(PeopleCreateEventCluster)
|
||||
PeopleRouterCluster.set_event_cluster(PeopleUpdateEventCluster)
|
||||
PeopleRouterCluster.set_event_cluster(PeopleDeleteEventCluster)
|
||||
@@ -0,0 +1,114 @@
|
||||
from typing import Any
|
||||
|
||||
from api_initializer.event_clusters import Event
|
||||
from api_validations.response import (
|
||||
PaginateOnly,
|
||||
Pagination,
|
||||
PaginationResult,
|
||||
PostgresResponseSingle,
|
||||
PostgresResponse,
|
||||
EndpointResponse
|
||||
)
|
||||
from api_validations.token.validations import TokenDictType
|
||||
from schemas import (
|
||||
Build,
|
||||
BuildLivingSpace,
|
||||
BuildParts,
|
||||
People,
|
||||
)
|
||||
|
||||
|
||||
# List all endpoint Super User
|
||||
SuperPeopleListEvent = Event(
|
||||
name="super_people_list",
|
||||
key="0f8a8b7f-0615-4507-916b-030d48cb5c1d",
|
||||
request_validator=None, # TODO: Add request validator
|
||||
response_validator=None, # TODO: Add response validator
|
||||
description="Super People List all flat representative users endpoint",
|
||||
)
|
||||
|
||||
# Create endpoint Super User
|
||||
SuperPeopleCreateEvent = Event(
|
||||
name="super_people_create",
|
||||
key="e18657b7-7a5a-43b8-b43a-422cbc783326",
|
||||
request_validator=None, # TODO: Add request validator
|
||||
response_validator=None, # TODO: Add response validator
|
||||
description="Super People Create flat representative users endpoint",
|
||||
)
|
||||
|
||||
# Update endpoint Super User
|
||||
SuperPeopleUpdateEvent = Event(
|
||||
name="super_people_update",
|
||||
key="02a774aa-1f7d-472b-98f1-7b4a58d43e31",
|
||||
request_validator=None, # TODO: Add request validator
|
||||
response_validator=None, # TODO: Add response validator
|
||||
description="Super People Update flat representative users endpoint",
|
||||
)
|
||||
|
||||
# Delete endpoint Super User
|
||||
SuperPeopleDeleteEvent = Event(
|
||||
name="super_people_delete",
|
||||
key="b56fd146-b11a-466a-84c9-4c72fb0b9ffa",
|
||||
request_validator=None, # TODO: Add request validator
|
||||
response_validator=None, # TODO: Add response validator
|
||||
description="Super People Delete flat representative users endpoint",
|
||||
)
|
||||
|
||||
|
||||
def super_people_list_callable(list_options: PaginateOnly, token: TokenDictType):
|
||||
list_options = PaginateOnly(**list_options.model_dump())
|
||||
if token.is_employee:
|
||||
raise Exception("Forbidden for employees")
|
||||
|
||||
# TODO: Pydantic Model must be implemnted for list_options.query
|
||||
with People.new_session() as db_session:
|
||||
People.set_session(db_session)
|
||||
db_session.query(
|
||||
).join(BuildParts, BuildParts.id == BuildLivingSpace.build_parts_id
|
||||
).join(People, People.person_id == BuildLivingSpace.people_id
|
||||
).filter()
|
||||
if list_options.query:
|
||||
people_list = People.query.filter(*People.convert(list_options.query))
|
||||
else:
|
||||
people_list = People.query.filter()
|
||||
|
||||
pagination = Pagination(data=people_list)
|
||||
pagination.change(**list_options.model_dump())
|
||||
pagination_result = PaginationResult(data=people_list, pagination=pagination)
|
||||
return EndpointResponse(message="MSG0003-LIST", pagination_result=pagination_result).response
|
||||
|
||||
|
||||
SuperPeopleListEvent.event_callable = super_people_list_callable
|
||||
|
||||
|
||||
def super_people_create_callable(data: People, token: TokenDictType):
|
||||
return {
|
||||
"message": "MSG0001-INSERT",
|
||||
"data": None,
|
||||
"completed": True,
|
||||
}
|
||||
|
||||
|
||||
SuperPeopleCreateEvent.event_callable = super_people_create_callable
|
||||
|
||||
|
||||
def super_people_update_callable(data: People, token: TokenDictType):
|
||||
return {
|
||||
"message": "MSG0002-UPDATE",
|
||||
"data": None,
|
||||
"completed": True,
|
||||
}
|
||||
|
||||
|
||||
SuperPeopleUpdateEvent.event_callable = super_people_update_callable
|
||||
|
||||
|
||||
def super_people_delete_callable(data: People, token: TokenDictType):
|
||||
return {
|
||||
"message": "MSG0004-DELETE",
|
||||
"data": None,
|
||||
"completed": True,
|
||||
}
|
||||
|
||||
|
||||
SuperPeopleDeleteEvent.event_callable = super_people_delete_callable
|
||||
@@ -0,0 +1,27 @@
|
||||
from api_initializer.event_clusters import EventCluster, RouterCluster
|
||||
from index import endpoints_index
|
||||
from .supers_events import (
|
||||
SuperUserListEvent,
|
||||
SuperUserCreateEvent,
|
||||
SuperUserUpdateEvent,
|
||||
SuperUserDeleteEvent,
|
||||
)
|
||||
|
||||
UserRouterCluster = RouterCluster(name="UserRouterCluster")
|
||||
|
||||
UserListAllEventCluster = EventCluster(name="UserListAllEventCluster", endpoint_uu_id=endpoints_index["UserList"])
|
||||
UserListAllEventCluster.add_event(SuperUserListEvent)
|
||||
|
||||
UserCreateEventCluster = EventCluster(name="UserCreateEventCluster", endpoint_uu_id=endpoints_index["UserCreate"])
|
||||
UserCreateEventCluster.add_event(SuperUserCreateEvent)
|
||||
|
||||
UserUpdateEventCluster = EventCluster(name="UserUpdateEventCluster", endpoint_uu_id=endpoints_index["UserUpdate"])
|
||||
UserUpdateEventCluster.add_event(SuperUserUpdateEvent)
|
||||
|
||||
UserDeleteEventCluster = EventCluster(name="UserDeleteEventCluster", endpoint_uu_id=endpoints_index["UserDelete"])
|
||||
UserDeleteEventCluster.add_event(SuperUserDeleteEvent)
|
||||
|
||||
UserRouterCluster.set_event_cluster(UserListAllEventCluster)
|
||||
UserRouterCluster.set_event_cluster(UserCreateEventCluster)
|
||||
UserRouterCluster.set_event_cluster(UserUpdateEventCluster)
|
||||
UserRouterCluster.set_event_cluster(UserDeleteEventCluster)
|
||||
@@ -0,0 +1,100 @@
|
||||
from typing import Any
|
||||
|
||||
from api_initializer.event_clusters import Event
|
||||
from api_validations.response import (
|
||||
PaginateOnly,
|
||||
Pagination,
|
||||
PaginationResult,
|
||||
PostgresResponseSingle,
|
||||
PostgresResponse,
|
||||
EndpointResponse
|
||||
)
|
||||
from api_validations.token.validations import TokenDictType
|
||||
from schemas import (
|
||||
Build,
|
||||
BuildLivingSpace,
|
||||
BuildParts,
|
||||
Users,
|
||||
UsersTokens,
|
||||
People,
|
||||
)
|
||||
|
||||
# List all endpoint Super User
|
||||
SuperUserListEvent = Event(
|
||||
name="super_user_list",
|
||||
key="202eec81-b382-4623-911b-709f1b841f3f",
|
||||
request_validator=None, # TODO: Add request validator
|
||||
response_validator=None, # TODO: Add response validator
|
||||
description="Super Users List all flat representative users endpoint",
|
||||
)
|
||||
|
||||
# Create endpoint Super User
|
||||
SuperUserCreateEvent = Event(
|
||||
name="super_user_create",
|
||||
key="2f0a3691-114d-48b7-b166-9572fc889695",
|
||||
request_validator=None, # TODO: Add request validator
|
||||
response_validator=None, # TODO: Add response validator
|
||||
description="Super Users Create flat representative users endpoint",
|
||||
)
|
||||
|
||||
# Update endpoint Super User
|
||||
SuperUserUpdateEvent = Event(
|
||||
name="super_user_update",
|
||||
key="8a8c8dd6-43ad-40df-86bd-345488273f52",
|
||||
request_validator=None, # TODO: Add request validator
|
||||
response_validator=None, # TODO: Add response validator
|
||||
description="Super Users Update flat representative users endpoint",
|
||||
)
|
||||
|
||||
# Delete endpoint Super User
|
||||
SuperUserDeleteEvent = Event(
|
||||
name="super_user_delete",
|
||||
key="e8c77554-4b0e-491f-aab5-67a5ef670999",
|
||||
request_validator=None, # TODO: Add request validator
|
||||
response_validator=None, # TODO: Add response validator
|
||||
description="Super Users Delete flat representative users endpoint",
|
||||
)
|
||||
|
||||
|
||||
def super_user_list_callable(list_options: PaginateOnly, token: TokenDictType):
|
||||
return {
|
||||
"message": "MSG0003-LIST",
|
||||
"data": None,
|
||||
"completed": True,
|
||||
}
|
||||
|
||||
|
||||
SuperUserListEvent.event_callable = super_user_list_callable
|
||||
|
||||
|
||||
def super_user_create_callable(data: dict, token: TokenDictType):
|
||||
return {
|
||||
"message": "MSG0001-INSERT",
|
||||
"data": None,
|
||||
"completed": True,
|
||||
}
|
||||
|
||||
|
||||
SuperUserCreateEvent.event_callable = super_user_create_callable
|
||||
|
||||
|
||||
def super_user_update_callable(data: dict, token: TokenDictType):
|
||||
return {
|
||||
"message": "MSG0002-UPDATE",
|
||||
"data": None,
|
||||
"completed": True,
|
||||
}
|
||||
|
||||
|
||||
SuperUserUpdateEvent.event_callable = super_user_update_callable
|
||||
|
||||
|
||||
def super_user_delete_callable(data: dict, token: TokenDictType):
|
||||
return {
|
||||
"message": "MSG0004-DELETE",
|
||||
"data": None,
|
||||
"completed": True,
|
||||
}
|
||||
|
||||
|
||||
SuperUserDeleteEvent.event_callable = super_user_delete_callable
|
||||
11
api_services/api_builds/identity_service/index.py
Normal file
11
api_services/api_builds/identity_service/index.py
Normal file
@@ -0,0 +1,11 @@
|
||||
|
||||
endpoints_index: dict = {
|
||||
"UserList": "5a4ebed3-f764-473c-bc80-57b14082b636",
|
||||
"UserCreate": "4fb2e886-98b4-49c7-a388-7e0607893af7",
|
||||
"UserUpdate": "d4b046ac-0a93-4804-a233-8ee616152c5a",
|
||||
"UserDelete": "98d5deac-8517-42da-8ce8-6a0ed79ba915",
|
||||
"PeopleList": "155d7d42-9f41-4126-be3a-c3367a507f95",
|
||||
"PeopleCreate": "b4d785a7-aac7-4d55-9aa3-bac871fe7252",
|
||||
"PeopleUpdate": "448e1b4e-60b4-467f-a5cc-02c37522d5cc",
|
||||
"PeopleDelete": "72a59bcd-52e5-42ec-b491-59c21c5e4014",
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
from typing import Any
|
||||
from fastapi import APIRouter, Depends
|
||||
|
||||
from index import endpoints_index
|
||||
# from events.services.cluster import ServicesEndpointRouterCluster
|
||||
|
||||
from api_validations.defaults.validations import CommonHeaders
|
||||
from api_validations.response.pagination import PaginateOnly
|
||||
from api_middlewares.token_provider import TokenProvider
|
||||
|
||||
|
||||
# Create API router
|
||||
duty_types_route = APIRouter(prefix="/duty/types", tags=["Duty Types Cluster"])
|
||||
@@ -2,7 +2,7 @@ from typing import Any
|
||||
from fastapi import APIRouter, Depends
|
||||
|
||||
from index import endpoints_index
|
||||
# from events.services.cluster import ServicesEndpointRouterCluster
|
||||
from events.services.cluster import ServicesRouterCluster
|
||||
|
||||
from api_validations.defaults.validations import CommonHeaders
|
||||
from api_validations.response.pagination import PaginateOnly
|
||||
@@ -10,4 +10,65 @@ from api_middlewares.token_provider import TokenProvider
|
||||
|
||||
|
||||
# Create API router
|
||||
services_endpoint_route = APIRouter(prefix="/services", tags=["Service Cluster"])
|
||||
services_route = APIRouter(prefix="/services", tags=["Service Cluster"])
|
||||
|
||||
|
||||
services_list = "ServicesList"
|
||||
@services_route.post(
|
||||
path="/list",
|
||||
description="List all services endpoint",
|
||||
operation_id=endpoints_index[services_list],
|
||||
)
|
||||
def services_list(data: PaginateOnly, headers: CommonHeaders = Depends(CommonHeaders)):
|
||||
token_object = TokenProvider.get_dict_from_redis(token=headers.token)
|
||||
event_founder_dict = dict(endpoint_code=headers.operation_id, token=token_object)
|
||||
event_key = TokenProvider.retrieve_event_codes(**event_founder_dict)
|
||||
FoundCluster = ServicesRouterCluster.get_event_cluster(services_list)
|
||||
event_cluster_matched = FoundCluster.match_event(event_key=event_key)
|
||||
return event_cluster_matched.event_callable(list_options=data)
|
||||
|
||||
|
||||
services_create = "ServicesCreate"
|
||||
@services_route.post(
|
||||
path="/create",
|
||||
description="Create service endpoint",
|
||||
operation_id=endpoints_index[services_create],
|
||||
)
|
||||
def services_create(data, headers: CommonHeaders = Depends(CommonHeaders)):
|
||||
token_object = TokenProvider.get_dict_from_redis(token=headers.token)
|
||||
event_founder_dict = dict(endpoint_code=headers.operation_id, token=token_object)
|
||||
event_key = TokenProvider.retrieve_event_codes(**event_founder_dict)
|
||||
FoundCluster = ServicesRouterCluster.get_event_cluster(services_create)
|
||||
event_cluster_matched = FoundCluster.match_event(event_key=event_key)
|
||||
return event_cluster_matched.event_callable(list_options=data)
|
||||
|
||||
|
||||
services_update = "ServicesUpdate"
|
||||
@services_route.post(
|
||||
path="/update/{uu_id}",
|
||||
description="Update service endpoint",
|
||||
operation_id=endpoints_index[services_update],
|
||||
)
|
||||
def services_update(uu_id: str, data, headers: CommonHeaders = Depends(CommonHeaders)):
|
||||
token_object = TokenProvider.get_dict_from_redis(token=headers.token)
|
||||
event_founder_dict = dict(endpoint_code=headers.operation_id, token=token_object)
|
||||
event_key = TokenProvider.retrieve_event_codes(**event_founder_dict)
|
||||
FoundCluster = ServicesRouterCluster.get_event_cluster(services_update)
|
||||
event_cluster_matched = FoundCluster.match_event(event_key=event_key)
|
||||
return event_cluster_matched.event_callable(list_options=data)
|
||||
|
||||
|
||||
services_delete = "ServicesDelete"
|
||||
@services_route.post(
|
||||
path="/delete/{uu_id}",
|
||||
description="Delete service endpoint",
|
||||
operation_id=endpoints_index[services_delete],
|
||||
)
|
||||
def services_delete(uu_id: str, headers: CommonHeaders = Depends(CommonHeaders)):
|
||||
token_object = TokenProvider.get_dict_from_redis(token=headers.token)
|
||||
event_founder_dict = dict(endpoint_code=headers.operation_id, token=token_object)
|
||||
event_key = TokenProvider.retrieve_event_codes(**event_founder_dict)
|
||||
FoundCluster = ServicesRouterCluster.get_event_cluster(services_delete)
|
||||
event_cluster_matched = FoundCluster.match_event(event_key=event_key)
|
||||
return event_cluster_matched.event_callable(list_options=data)
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
from .events.cluster import EventsEndpointRouterCluster
|
||||
from .application.cluster import ApplicationRouterCluster
|
||||
# from .services.cluster import ServicesEndpointRouterCluster
|
||||
|
||||
|
||||
__all__ = []
|
||||
__all__ = ["EventsEndpointRouterCluster", "ApplicationRouterCluster"]
|
||||
@@ -103,10 +103,11 @@ ApplicationBindOccupantEvent = Event(
|
||||
def application_list_all_callable(list_options: PaginateOnly):
|
||||
list_options = PaginateOnly(**list_options.model_dump())
|
||||
with Applications.new_session() as db_session:
|
||||
Applications.set_session(db_session)
|
||||
if list_options.query:
|
||||
applications_list = Applications.filter_all(*Applications.convert(list_options.query), db=db_session)
|
||||
applications_list = Applications.query.filter(*Applications.convert(list_options.query))
|
||||
else:
|
||||
applications_list = Applications.filter_all(db=db_session)
|
||||
applications_list = Applications.query.filter()
|
||||
pagination = Pagination(data=applications_list)
|
||||
pagination.change(**list_options.model_dump())
|
||||
pagination_result = PaginationResult(data=applications_list, pagination=pagination)
|
||||
@@ -131,19 +132,13 @@ def application_list_available_callable(list_options: PaginateOnly):
|
||||
list_options.query.pop("service_uu_id__ilike", None)
|
||||
list_options.query.pop("service_uu_id", None)
|
||||
with Applications.new_session() as db_session:
|
||||
service2applications = Service2Application.filter_all(
|
||||
*Service2Application.convert({"service_uu_id__ilike": service_uu_id}),
|
||||
db=db_session,
|
||||
)
|
||||
already_events = [
|
||||
service_to_application.application_id for service_to_application in service2applications.data
|
||||
]
|
||||
Service2Application.set_session(db_session)
|
||||
service2applications = Service2Application.query.filter(*Service2Application.convert({"service_uu_id__ilike": service_uu_id})).all()
|
||||
already_events = [service_to_application.application_id for service_to_application in service2applications]
|
||||
if list_options.query:
|
||||
applications_list = Applications.filter_all(
|
||||
*Applications.convert(list_options.query), Applications.id.not_in(already_events), db=db_session
|
||||
)
|
||||
applications_list = Applications.query.filter(*Applications.convert(list_options.query), Applications.id.not_in(already_events))
|
||||
else:
|
||||
applications_list = Applications.filter_all(Applications.id.not_in(already_events), db=db_session)
|
||||
applications_list = Applications.query.filter(Applications.id.not_in(already_events))
|
||||
pagination = Pagination(data=applications_list)
|
||||
pagination.change(**list_options.model_dump())
|
||||
pagination_result = PaginationResult(data=applications_list, pagination=pagination)
|
||||
@@ -167,21 +162,15 @@ def application_list_appended_callable(list_options: PaginateOnly):
|
||||
}
|
||||
list_options.query.pop("service_uu_id__ilike", None)
|
||||
list_options.query.pop("service_uu_id", None)
|
||||
|
||||
with Applications.new_session() as db_session:
|
||||
service2applications = Service2Application.filter_all(
|
||||
*Service2Application.convert({"service_uu_id__ilike": service_uu_id}),
|
||||
db=db_session,
|
||||
)
|
||||
already_events = [
|
||||
service_to_application.application_id for service_to_application in service2applications.data
|
||||
]
|
||||
with Service2Application.new_session() as db_session:
|
||||
Service2Application.set_session(db_session)
|
||||
Applications.set_session(db_session)
|
||||
service2applications = Service2Application.query.filter(*Service2Application.convert({"service_uu_id__ilike": service_uu_id})).all()
|
||||
already_events = [service_to_application.application_id for service_to_application in service2applications]
|
||||
if list_options.query:
|
||||
applications_list = Applications.filter_all(
|
||||
*Applications.convert(list_options.query), Applications.id.in_(already_events), db=db_session
|
||||
)
|
||||
applications_list = Applications.query.filter(*Applications.convert(list_options.query), Applications.id.in_(already_events))
|
||||
else:
|
||||
applications_list = Applications.filter_all(Applications.id.in_(already_events), db=db_session)
|
||||
applications_list = Applications.query.filter(Applications.id.in_(already_events))
|
||||
pagination = Pagination(data=applications_list)
|
||||
pagination.change(**list_options.model_dump())
|
||||
pagination_result = PaginationResult(data=applications_list, pagination=pagination)
|
||||
@@ -197,13 +186,10 @@ def application_create_callable(data: Any):
|
||||
"""
|
||||
with Applications.new_session() as db_session:
|
||||
created_application_dict = data.model_dump()
|
||||
created_application = Applications.find_or_create(
|
||||
db=db_session,
|
||||
include_args=[Applications.application_for, Applications.application_code, Applications.site_url],
|
||||
**created_application_dict,
|
||||
)
|
||||
if created_application.meta_data.created:
|
||||
created_application.save(db=db_session)
|
||||
Applications.set_session(db_session)
|
||||
created_application = Applications.create(**created_application_dict)
|
||||
if created_application:
|
||||
created_application.save()
|
||||
return {
|
||||
"completed": True,
|
||||
"message": "MSG0001-INSERT",
|
||||
@@ -224,22 +210,16 @@ def application_update_callable(data: Any, uu_id: str):
|
||||
Update an existing application
|
||||
"""
|
||||
with Applications.new_session() as db_session:
|
||||
updated_application_dict = data.model_dump(
|
||||
exclude_unset=True, exclude_none=True
|
||||
)
|
||||
found_application = Applications.filter_one(
|
||||
Applications.uu_id == uu_id, db=db_session
|
||||
).data
|
||||
updated_application_dict = data.model_dump(exclude_unset=True, exclude_none=True)
|
||||
found_application = Applications.query.filter(Applications.uu_id == uu_id).first()
|
||||
if not found_application:
|
||||
return {
|
||||
"completed": False,
|
||||
"message": "MSG0002-FOUND",
|
||||
"data": found_application,
|
||||
}
|
||||
updated_application = found_application.update(
|
||||
db=db_session, **updated_application_dict
|
||||
)
|
||||
updated_application.save(db_session)
|
||||
updated_application = found_application.update(**updated_application_dict)
|
||||
updated_application.save()
|
||||
if updated_application.meta_data.updated:
|
||||
return {
|
||||
"completed": True,
|
||||
@@ -261,23 +241,32 @@ def application_register_service_callable(data: Any):
|
||||
Register an application to a service
|
||||
"""
|
||||
with Applications.new_session() as db_session:
|
||||
event = Applications.filter_one_system(Applications.uu_id == data.application_uu_id, db=db_session)
|
||||
if not event.data:
|
||||
Applications.set_session(db_session)
|
||||
event = Applications.query.filter(Applications.uu_id == data.application_uu_id).first()
|
||||
if not event:
|
||||
return {
|
||||
"message": "MSG0003-NOT-FOUND",
|
||||
"data": data.model_dump(),
|
||||
"completed": False,
|
||||
}
|
||||
service = Services.filter_one_system(Services.uu_id == data.service_uu_id, db=db_session)
|
||||
if not service.data:
|
||||
service = Services.query.filter(Services.uu_id == data.service_uu_id).first()
|
||||
if not service:
|
||||
return {
|
||||
"message": "MSG0003-NOT-FOUND",
|
||||
"data": data.model_dump(),
|
||||
"completed": False,
|
||||
}
|
||||
service_to_application = Service2Application.find_or_create(
|
||||
db=db_session,
|
||||
include_args=[Service2Application.service_uu_id, Service2Application.application_uu_id],
|
||||
service_to_application = Service2Application.query.filter(
|
||||
Service2Application.service_id == service.data.id,
|
||||
Service2Application.application_id == event.data.id,
|
||||
).first()
|
||||
if service_to_application:
|
||||
return {
|
||||
"message": "MSG0003-ALREADY-FOUND",
|
||||
"data": data.model_dump(),
|
||||
"completed": False,
|
||||
}
|
||||
service_to_application = Service2Application.create(
|
||||
service_id=service.data.id,
|
||||
service_uu_id=str(service.data.uu_id),
|
||||
application_id=event.data.id,
|
||||
@@ -286,13 +275,7 @@ def application_register_service_callable(data: Any):
|
||||
site_url=event.data.site_url,
|
||||
is_confirmed=True,
|
||||
)
|
||||
if not service_to_application.meta_data.created:
|
||||
return {
|
||||
"message": "MSG0003-ALREADY-FOUND",
|
||||
"data": data.model_dump(),
|
||||
"completed": False,
|
||||
}
|
||||
service_to_application.save(db=db_session)
|
||||
service_to_application.save()
|
||||
return {
|
||||
"message": "MSG0003-REGISTER",
|
||||
"data": data.model_dump(),
|
||||
@@ -308,26 +291,26 @@ def application_unregister_service_callable(data: Any):
|
||||
Unregister an application from a service
|
||||
"""
|
||||
with Applications.new_session() as db_session:
|
||||
application = Applications.filter_one_system(Applications.uu_id == data.application_uu_id, db=db_session)
|
||||
if not application.data:
|
||||
Applications.set_session(db_session)
|
||||
application = Applications.query.filter(Applications.uu_id == data.application_uu_id).first()
|
||||
if not application:
|
||||
return {
|
||||
"message": "MSG0003-NOT-FOUND",
|
||||
"data": data.model_dump(),
|
||||
"completed": False,
|
||||
}
|
||||
service = Services.filter_one_system(Services.uu_id == data.service_uu_id, db=db_session)
|
||||
if not service.data:
|
||||
service = Services.query.filter(Services.uu_id == data.service_uu_id).first()
|
||||
if not service:
|
||||
return {
|
||||
"message": "MSG0003-NOT-FOUND",
|
||||
"data": data.model_dump(),
|
||||
"completed": False,
|
||||
}
|
||||
service_to_application = Service2Application.filter_one_system(
|
||||
service_to_application = Service2Application.query.filter(
|
||||
Service2Application.service_id == service.data.id,
|
||||
Service2Application.application_id == application.data.id,
|
||||
db=db_session,
|
||||
)
|
||||
if not service_to_application.data:
|
||||
).first()
|
||||
if not service_to_application:
|
||||
return {
|
||||
"message": "MSG0003-NOT-FOUND",
|
||||
"data": data.model_dump(),
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
from api_initializer.event_clusters import EventCluster, RouterCluster
|
||||
from index import endpoints_index
|
||||
from .supers_events import (
|
||||
SuperServiceListEvent,
|
||||
SuperServiceCreateEvent,
|
||||
SuperServiceUpdateEvent,
|
||||
SuperServiceDeleteEvent,
|
||||
)
|
||||
|
||||
ServicesRouterCluster = RouterCluster(name="ServicesRouterCluster")
|
||||
|
||||
ServicesEventClusterList = EventCluster(name="ServicesList", endpoint_uu_id=endpoints_index["ServicesList"])
|
||||
ServicesEventClusterList.add_event(SuperServiceListEvent)
|
||||
|
||||
ServicesEventClusterCreate = EventCluster(name="ServicesCreate", endpoint_uu_id=endpoints_index["ServicesCreate"])
|
||||
ServicesEventClusterCreate.add_event(SuperServiceCreateEvent)
|
||||
|
||||
ServicesEventClusterUpdate = EventCluster(name="ServicesUpdate", endpoint_uu_id=endpoints_index["ServicesUpdate"])
|
||||
ServicesEventClusterUpdate.add_event(SuperServiceUpdateEvent)
|
||||
|
||||
ServicesEventClusterDelete = EventCluster(name="ServicesDelete", endpoint_uu_id=endpoints_index["ServicesDelete"])
|
||||
ServicesEventClusterDelete.add_event(SuperServiceDeleteEvent)
|
||||
|
||||
ServicesRouterCluster.set_event_cluster(ServicesEventClusterList)
|
||||
ServicesRouterCluster.set_event_cluster(ServicesEventClusterCreate)
|
||||
ServicesRouterCluster.set_event_cluster(ServicesEventClusterUpdate)
|
||||
ServicesRouterCluster.set_event_cluster(ServicesEventClusterDelete)
|
||||
@@ -0,0 +1,105 @@
|
||||
from typing import Any
|
||||
|
||||
from api_validations.defaults.validations import CommonHeaders
|
||||
from api_initializer.event_clusters import Event
|
||||
from api_validations.response import (
|
||||
PaginateOnly,
|
||||
Pagination,
|
||||
PaginationResult,
|
||||
PostgresResponseSingle,
|
||||
PostgresResponse,
|
||||
EndpointResponse
|
||||
)
|
||||
from schemas import (
|
||||
Events,
|
||||
Event2Employee,
|
||||
Event2Occupant,
|
||||
Event2EmployeeExtra,
|
||||
Event2OccupantExtra,
|
||||
Service2Events,
|
||||
Services,
|
||||
)
|
||||
|
||||
# List services endpoint
|
||||
SuperServiceListEvent = Event(
|
||||
name="super_service_list",
|
||||
key="ea24f5e6-279a-47e7-a5bd-8a5c1bd72d05",
|
||||
request_validator=None, # TODO: Add request validator
|
||||
response_validator=None, # TODO: Add response validator
|
||||
description="Super Users List available events endpoint",
|
||||
)
|
||||
|
||||
# Create service endpoint
|
||||
SuperServiceCreateEvent = Event(
|
||||
name="super_service_create",
|
||||
key="086051f4-f1ec-4d56-b706-09ce53d5e66c",
|
||||
request_validator=None, # TODO: Add request validator
|
||||
response_validator=None, # TODO: Add response validator
|
||||
description="Super Users Create service endpoint",
|
||||
)
|
||||
|
||||
# Update service endpoint
|
||||
SuperServiceUpdateEvent = Event(
|
||||
name="super_service_update",
|
||||
key="267956e5-32b7-4b60-ab75-3b56b935d5c1",
|
||||
request_validator=None, # TODO: Add request validator
|
||||
response_validator=None, # TODO: Add response validator
|
||||
description="Super Users Update service endpoint",
|
||||
)
|
||||
|
||||
# Delete service endpoint
|
||||
SuperServiceDeleteEvent = Event(
|
||||
name="super_service_delete",
|
||||
key="6c333122-272e-4690-9d71-7f5e14cc64c8",
|
||||
request_validator=None, # TODO: Add request validator
|
||||
response_validator=None, # TODO: Add response validator
|
||||
description="Super Users Delete service endpoint",
|
||||
)
|
||||
|
||||
|
||||
def super_service_list_callable(list_options: PaginateOnly, headers: CommonHeaders):
|
||||
"""List available events with pagination and filtering options"""
|
||||
return {
|
||||
"message": "MSG0003-LIST",
|
||||
"data": None,
|
||||
"completed": True,
|
||||
}
|
||||
|
||||
|
||||
SuperServiceListEvent.event_callable = super_service_list_callable
|
||||
|
||||
|
||||
def super_service_create_callable(data: Any, headers: CommonHeaders):
|
||||
"""Create service"""
|
||||
return {
|
||||
"message": "MSG0003-CREATE",
|
||||
"data": None,
|
||||
"completed": True,
|
||||
}
|
||||
|
||||
|
||||
SuperServiceCreateEvent.event_callable = super_service_create_callable
|
||||
|
||||
|
||||
def super_service_update_callable(data: Any, headers: CommonHeaders):
|
||||
"""Update service"""
|
||||
return {
|
||||
"message": "MSG0003-UPDATE",
|
||||
"data": None,
|
||||
"completed": True,
|
||||
}
|
||||
|
||||
|
||||
SuperServiceUpdateEvent.event_callable = super_service_update_callable
|
||||
|
||||
|
||||
def super_service_delete_callable(data: Any, headers: CommonHeaders):
|
||||
"""Delete service"""
|
||||
return {
|
||||
"message": "MSG0003-DELETE",
|
||||
"data": None,
|
||||
"completed": True,
|
||||
}
|
||||
|
||||
|
||||
SuperServiceDeleteEvent.event_callable = super_service_delete_callable
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
endpoints_index: dict = {
|
||||
"AccountRecordsAll": "d538deb4-38f4-4913-a1af-bbef14cf6873",
|
||||
"AccountRecordsMonthly": "c0f5ccb1-1e56-4653-af13-ec0bf5e6aa51",
|
||||
@@ -16,4 +17,8 @@ endpoints_index: dict = {
|
||||
"ApplicationUpdate": "83281757-696a-41ed-9706-e145ac54c3a9",
|
||||
"ApplicationBindEmployee": "80427237-5ab6-4d17-8084-cdb87bda22a3",
|
||||
"ApplicationBindOccupant": "ae0fb101-cb13-47ab-86bd-233a5dbef269",
|
||||
}
|
||||
"ServicesList": "7af16881-2c0f-463f-859f-7aca475e65eb",
|
||||
"ServicesCreate": "effca319-2074-4862-bb80-dde77f0e8407",
|
||||
"ServicesUpdate": "24dc83e9-c159-4bb3-8982-a8adf6555029",
|
||||
"ServicesDelete": "f4c9b2c4-d18a-43c6-abf9-030f71a1c381",
|
||||
}
|
||||
|
||||
@@ -19,10 +19,10 @@ COPY /api_services/api_modules /api_modules
|
||||
COPY /api_services/schemas /schemas
|
||||
|
||||
COPY /api_services/api_middlewares /api_middlewares
|
||||
COPY /api_services/api_builds/restriction-service/endpoints /api_initializer/endpoints
|
||||
COPY /api_services/api_builds/restriction-service/events /api_initializer/events
|
||||
COPY /api_services/api_builds/restriction-service/validations /api_initializer/validations
|
||||
COPY /api_services/api_builds/restriction-service/index.py /api_initializer/index.py
|
||||
COPY /api_services/api_builds/restriction_service/endpoints /api_initializer/endpoints
|
||||
COPY /api_services/api_builds/restriction_service/events /api_initializer/events
|
||||
COPY /api_services/api_builds/restriction_service/validations /api_initializer/validations
|
||||
COPY /api_services/api_builds/restriction_service/index.py /api_initializer/index.py
|
||||
|
||||
# Set Python path to include app directory
|
||||
ENV PYTHONPATH=/ PYTHONUNBUFFERED=1 PYTHONDONTWRITEBYTECODE=1
|
||||
|
||||
@@ -1,3 +1,2 @@
|
||||
|
||||
|
||||
__all__ = []
|
||||
Reference in New Issue
Block a user