This commit is contained in:
2025-09-15 19:47:32 -03:00
parent 0b6cccaef1
commit 6f983fe0ac
3 changed files with 32 additions and 19 deletions

View File

@@ -1,5 +1,6 @@
from http import HTTPStatus from http import HTTPStatus
from aws_lambda_powertools import Logger
from aws_lambda_powertools.event_handler.api_gateway import Router from aws_lambda_powertools.event_handler.api_gateway import Router
from aws_lambda_powertools.event_handler.exceptions import NotFoundError from aws_lambda_powertools.event_handler.exceptions import NotFoundError
from layercake.dynamodb import DynamoDBPersistenceLayer, KeyPair from layercake.dynamodb import DynamoDBPersistenceLayer, KeyPair
@@ -18,6 +19,7 @@ from models import Course
from rules.course import create_course, update_course from rules.course import create_course, update_course
router = Router() router = Router()
logger = Logger(__name__)
meili_client = Meilisearch(MEILISEARCH_HOST, MEILISEARCH_API_KEY) meili_client = Meilisearch(MEILISEARCH_HOST, MEILISEARCH_API_KEY)
course_layer = DynamoDBPersistenceLayer(COURSE_TABLE, dynamodb_client) course_layer = DynamoDBPersistenceLayer(COURSE_TABLE, dynamodb_client)
user_layer = DynamoDBPersistenceLayer(USER_TABLE, dynamodb_client) user_layer = DynamoDBPersistenceLayer(USER_TABLE, dynamodb_client)
@@ -36,15 +38,19 @@ def get_courses():
page = int(event.get_query_string_value('page', '1')) page = int(event.get_query_string_value('page', '1'))
hits_per_page = int(event.get_query_string_value('hitsPerPage', '25')) hits_per_page = int(event.get_query_string_value('hitsPerPage', '25'))
return meili_client.index(COURSE_TABLE).search( try:
query, return meili_client.index(COURSE_TABLE).search(
{ query,
'sort': [sort], {
'locales': ['pt'], 'sort': [sort],
'page': page, 'locales': ['pt'],
'hitsPerPage': hits_per_page, 'page': page,
}, 'hitsPerPage': hits_per_page,
) },
)
except Exception as exc:
logger.exception(exc)
raise
@router.post( @router.post(

View File

@@ -2,6 +2,7 @@ import urllib.parse as parse
from http import HTTPStatus from http import HTTPStatus
from typing import Annotated from typing import Annotated
from aws_lambda_powertools import Logger
from aws_lambda_powertools.event_handler.api_gateway import Router from aws_lambda_powertools.event_handler.api_gateway import Router
from aws_lambda_powertools.event_handler.exceptions import ( from aws_lambda_powertools.event_handler.exceptions import (
BadRequestError as PowertoolsBadRequestError, BadRequestError as PowertoolsBadRequestError,
@@ -41,6 +42,7 @@ router = Router()
user_layer = DynamoDBPersistenceLayer(USER_TABLE, dynamodb_client) user_layer = DynamoDBPersistenceLayer(USER_TABLE, dynamodb_client)
user_collect = DynamoDBCollection(user_layer, exc_cls=BadRequestError) user_collect = DynamoDBCollection(user_layer, exc_cls=BadRequestError)
meili_client = Meilisearch(MEILISEARCH_HOST, MEILISEARCH_API_KEY) # noqa: F821 meili_client = Meilisearch(MEILISEARCH_HOST, MEILISEARCH_API_KEY) # noqa: F821
logger = Logger(__name__)
@router.get( @router.get(
@@ -70,16 +72,20 @@ def get_users():
}, },
] + filter_ ] + filter_
return meili_client.index(USER_TABLE).search( try:
query, return meili_client.index(USER_TABLE).search(
{ query,
'sort': [sort], {
'locales': ['pt'], 'sort': [sort],
'page': page, 'locales': ['pt'],
'hitsPerPage': hits_per_page, 'page': page,
'filter': meili.encode(filter_), 'hitsPerPage': hits_per_page,
}, 'filter': meili.encode(filter_),
) },
)
except Exception as exc:
logger.exception(exc)
raise
class UserData(BaseModel): class UserData(BaseModel):

View File

@@ -115,6 +115,7 @@ def set_score(
+ SortKey('0') + SortKey('0')
+ SortKey( + SortKey(
sk='METADATA#COURSE', sk='METADATA#COURSE',
# Prevent conflicts with `course`
rename_key='metadata__course', rename_key='metadata__course',
) )
+ SortKey( + SortKey(