# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: MIT-0 import json import utils import logger import metrics_manager import order_service_dal from decimal import Decimal from types import SimpleNamespace from aws_lambda_powertools import Tracer tracer = Tracer() @tracer.capture_lambda_handler def get_order(event, context): tenantId = event['requestContext']['authorizer']['tenantId'] tracer.put_annotation(key="TenantId", value=tenantId) logger.log_with_tenant_context(event, "Request received to get a order") params = event['pathParameters'] key = params['id'] logger.log_with_tenant_context(event, params) order = order_service_dal.get_order(event, key) logger.log_with_tenant_context(event, "Request completed to get a order") metrics_manager.record_metric(event, "SingleOrderRequested", "Count", 1) return utils.generate_response(order) @tracer.capture_lambda_handler def create_order(event, context): tenantId = event['requestContext']['authorizer']['tenantId'] tracer.put_annotation(key="TenantId", value=tenantId) logger.log_with_tenant_context(event, "Request received to create a order") payload = json.loads(event['body'], object_hook=lambda d: SimpleNamespace(**d), parse_float=Decimal) order = order_service_dal.create_order(event, payload) logger.log_with_tenant_context(event, "Request completed to create a order") metrics_manager.record_metric(event, "OrderCreated", "Count", 1) return utils.generate_response(order) @tracer.capture_lambda_handler def update_order(event, context): tenantId = event['requestContext']['authorizer']['tenantId'] tracer.put_annotation(key="TenantId", value=tenantId) logger.log_with_tenant_context(event, "Request received to update a order") payload = json.loads(event['body'], object_hook=lambda d: SimpleNamespace(**d), parse_float=Decimal) params = event['pathParameters'] key = params['id'] order = order_service_dal.update_order(event, payload, key) logger.log_with_tenant_context(event, "Request completed to update a order") metrics_manager.record_metric(event, "OrderUpdated", "Count", 1) return utils.generate_response(order) @tracer.capture_lambda_handler def delete_order(event, context): tenantId = event['requestContext']['authorizer']['tenantId'] tracer.put_annotation(key="TenantId", value=tenantId) logger.log_with_tenant_context(event, "Request received to delete a order") params = event['pathParameters'] key = params['id'] response = order_service_dal.delete_order(event, key) logger.log_with_tenant_context(event, "Request completed to delete a order") metrics_manager.record_metric(event, "OrderDeleted", "Count", 1) return utils.create_success_response("Successfully deleted the order") @tracer.capture_lambda_handler def get_orders(event, context): tenantId = event['requestContext']['authorizer']['tenantId'] tracer.put_annotation(key="TenantId", value=tenantId) logger.log_with_tenant_context(event, "Request received to get all orders") response = order_service_dal.get_orders(event, tenantId) metrics_manager.record_metric(event, "OrdersRetrieved", "Count", len(response)) logger.log_with_tenant_context(event, "Request completed to get all orders") return utils.generate_response(response)