renamem orders

This commit is contained in:
2025-10-13 14:31:29 -03:00
parent 8c750e00d0
commit 466ff824dd
60 changed files with 165 additions and 59 deletions

View File

@@ -14,9 +14,11 @@ from aws_lambda_powertools.utilities.typing import LambdaContext
from api_gateway import JSONResponse
from json_encoder import JSONEncoder
from routes import courses, enrollments
from routes import courses, enrollments, orders, users
logger = Logger(__name__)
debug = 'AWS_SAM_LOCAL' in os.environ
serializer = partial(json.dumps, separators=(',', ':'), cls=JSONEncoder)
cors = CORSConfig(
allow_origin='*',
allow_headers=['Content-Type', 'X-Requested-With', 'Authorization'],
@@ -24,13 +26,18 @@ cors = CORSConfig(
allow_credentials=False,
)
app = APIGatewayHttpResolver(
enable_validation=True,
cors=cors,
debug='AWS_SAM_LOCAL' in os.environ,
serializer=partial(json.dumps, separators=(',', ':'), cls=JSONEncoder),
enable_validation=True, cors=cors, debug=debug, serializer=serializer
)
app.include_router(courses.router, prefix='/courses')
app.include_router(enrollments.router, prefix='/enrollments')
app.include_router(enrollments.cancel, prefix='/enrollments')
app.include_router(enrollments.dedup_window, prefix='/enrollments')
app.include_router(enrollments.download_cert, prefix='/enrollments')
app.include_router(enrollments.enroll, prefix='/enrollments')
app.include_router(users.router, prefix='/users')
app.include_router(users.emails, prefix='/users')
app.include_router(users.orgs, prefix='/users')
app.include_router(orders.router, prefix='/orders')
@app.exception_handler(ServiceError)

View File

@@ -1,6 +1,7 @@
import os
USER_TABLE: str = os.getenv('USER_TABLE') # type: ignore
ORDER_TABLE: str = os.getenv('ORDER_TABLE') # type: ignore
ENROLLMENT_TABLE: str = os.getenv('ENROLLMENT_TABLE') # type: ignore
COURSE_TABLE: str = os.getenv('COURSE_TABLE') # type: ignore

View File

@@ -64,7 +64,7 @@ def edit_course(course_id: str):
now_ = now()
if course.rawfile:
object_key = f'certs/{course_id}.html'
object_key = f'certs/templates/{course_id}.html'
course.cert.s3_uri = f's3://{BUCKET_NAME}/{object_key}'
s3_client.put_object(

View File

@@ -6,6 +6,13 @@ from layercake.dynamodb import DynamoDBPersistenceLayer, KeyPair
from boto3clients import dynamodb_client
from config import ENROLLMENT_TABLE
from .cancel import router as cancel
from .dedup_window import router as dedup_window
from .download_cert import router as download_cert
from .enroll import router as enroll
__all__ = ['cancel', 'dedup_window', 'download_cert', 'enroll']
logger = Logger(__name__)
router = Router()
dyn = DynamoDBPersistenceLayer(ENROLLMENT_TABLE, dynamodb_client)

View File

@@ -0,0 +1,21 @@
from aws_lambda_powertools import Logger
from aws_lambda_powertools.event_handler.api_gateway import Router
from aws_lambda_powertools.event_handler.exceptions import (
NotFoundError,
)
from layercake.dynamodb import DynamoDBPersistenceLayer, KeyPair
from boto3clients import dynamodb_client
from config import ORDER_TABLE
logger = Logger(__name__)
router = Router()
dyn = DynamoDBPersistenceLayer(ORDER_TABLE, dynamodb_client)
@router.get('/<order_id>')
def get_order(order_id: str):
return dyn.collection.get_item(
KeyPair(order_id, '0'),
exc_cls=NotFoundError,
)

View File

@@ -0,0 +1,26 @@
from aws_lambda_powertools import Logger
from aws_lambda_powertools.event_handler.api_gateway import Router
from aws_lambda_powertools.event_handler.exceptions import (
NotFoundError,
)
from layercake.dynamodb import DynamoDBPersistenceLayer, KeyPair
from boto3clients import dynamodb_client
from config import USER_TABLE
from .emails import router as emails
from .orgs import router as orgs
__all__ = ['emails', 'orgs']
logger = Logger(__name__)
router = Router()
dyn = DynamoDBPersistenceLayer(USER_TABLE, dynamodb_client)
@router.get('/<user_id>')
def get_user(user_id: str):
return dyn.collection.get_item(
KeyPair(user_id, '0'),
exc_cls=NotFoundError,
)

View File

@@ -0,0 +1,21 @@
from aws_lambda_powertools import Logger
from aws_lambda_powertools.event_handler.api_gateway import Router
from layercake.dynamodb import DynamoDBPersistenceLayer, KeyPair
from boto3clients import dynamodb_client
from config import USER_TABLE
logger = Logger(__name__)
router = Router()
dyn = DynamoDBPersistenceLayer(USER_TABLE, dynamodb_client)
@router.get('/<user_id>/emails')
def get_emails(user_id: str):
start_key = router.current_event.get_query_string_value('start_key', None)
return dyn.collection.query(
# Post-migration (users): rename `emails` to `EMAIL`
key=KeyPair(user_id, 'emails'),
start_key=start_key,
)