This commit is contained in:
2025-10-03 19:31:41 -03:00
parent 48ed8d8345
commit 5ae2128dee
29 changed files with 996 additions and 168 deletions

View File

@@ -1,6 +1,5 @@
import json
import os
from datetime import date
from functools import partial
from typing import Any
@@ -9,26 +8,13 @@ from aws_lambda_powertools.event_handler.api_gateway import (
APIGatewayHttpResolver,
CORSConfig,
)
from aws_lambda_powertools.event_handler.exceptions import NotFoundError, ServiceError
from aws_lambda_powertools.event_handler.exceptions import ServiceError
from aws_lambda_powertools.logging import correlation_paths
from aws_lambda_powertools.shared.json_encoder import Encoder
from aws_lambda_powertools.utilities.typing import LambdaContext
from layercake.dynamodb import DynamoDBPersistenceLayer, KeyPair
from api_gateway import JSONResponse
from boto3clients import dynamodb_client
from config import COURSE_TABLE
dyn = DynamoDBPersistenceLayer(COURSE_TABLE, dynamodb_client)
class JSONEncoder(Encoder):
def default(self, obj):
if isinstance(obj, date):
return obj.isoformat()
return super().default(obj)
from json_encoder import JSONEncoder
from routes import courses, enrollments
tracer = Tracer()
logger = Logger(__name__)
@@ -44,27 +30,8 @@ app = APIGatewayHttpResolver(
debug='AWS_SAM_LOCAL' in os.environ,
serializer=partial(json.dumps, separators=(',', ':'), cls=JSONEncoder),
)
@app.get('/users/<user_id>')
@tracer.capture_method
def get_user(user_id: str):
return {'id': user_id}
@app.get('/users/<user_id>/emails')
@tracer.capture_method
def get_emails(user_id: str):
return [{'email': 'sergio@somosbeta.com.br'}]
@app.get('/courses/<course_id>')
@tracer.capture_method
def get_course(course_id: str):
return dyn.collection.get_item(
KeyPair(course_id, '0'),
exc_cls=NotFoundError,
)
app.include_router(courses.router, prefix='/courses')
app.include_router(enrollments.router, prefix='/enrollments')
@app.exception_handler(ServiceError)