This commit is contained in:
2025-03-21 21:11:48 -03:00
parent 59635bf5d2
commit f14bd6b814
26 changed files with 106 additions and 69 deletions

View File

@@ -1,20 +1,27 @@
import json
from http import HTTPStatus
from aws_lambda_powertools.event_handler import Response
import boto3
from aws_lambda_powertools.event_handler import Response, content_types
from aws_lambda_powertools.event_handler.api_gateway import Router
from elasticsearch import Elasticsearch
from layercake.dynamodb import DynamoDBPersistenceLayer
from pydantic.main import BaseModel
import elastic
from models import Course
from course import create_course
from models import Course, Org
from settings import COURSE_TABLE, ELASTIC_CONN
router = Router()
dynamodb_client = boto3.client('dynamodb')
elastic_client = Elasticsearch(**ELASTIC_CONN)
course_layer = DynamoDBPersistenceLayer(COURSE_TABLE, dynamodb_client)
@router.get('/', compress=True, tags=['Course'])
def get_courses():
"""Get a list of courses based on the query parameters."""
event = router.current_event
query = event.get_query_string_value('query', '{}')
page_size = event.get_query_string_value('page_size', '25')
@@ -27,9 +34,24 @@ def get_courses():
)
class Payload(BaseModel):
course: Course
org: Org
@router.post('/', compress=True, tags=['Course'])
def post_course(payload: Course):
return Response(status_code=HTTPStatus.CREATED)
def post_course(payload: Payload):
create_course(
course=payload.course,
org=payload.org,
persistence_layer=course_layer,
)
return Response(
body=payload.course,
content_type=content_types.APPLICATION_JSON,
status_code=HTTPStatus.CREATED,
)
@router.get('/<id>', compress=True, tags=['Course'])