add enrollments to order
This commit is contained in:
@@ -18,7 +18,7 @@ from pydantic import (
|
||||
)
|
||||
from typing_extensions import NotRequired
|
||||
|
||||
from config import DEDUP_WINDOW_OFFSET_DAYS, USER_TABLE
|
||||
from config import DEDUP_WINDOW_OFFSET_DAYS, ORDER_TABLE, USER_TABLE
|
||||
|
||||
|
||||
class User(BaseModel):
|
||||
@@ -107,6 +107,11 @@ class SeatNotFoundError(Exception):
|
||||
super().__init__('Seat required')
|
||||
|
||||
|
||||
class OrderNotFoundError(Exception):
|
||||
def __init__(self, msg: str | dict):
|
||||
super().__init__('Order not found')
|
||||
|
||||
|
||||
def enroll(
|
||||
enrollment: Enrollment,
|
||||
*,
|
||||
@@ -150,6 +155,26 @@ def enroll(
|
||||
| ({'seat': seat} if seat else {})
|
||||
)
|
||||
|
||||
if seat:
|
||||
transact.condition(
|
||||
key=KeyPair(str(seat['order_id']), '0'),
|
||||
cond_expr='attribute_exists(sk)',
|
||||
exc_cls=OrderNotFoundError,
|
||||
table_name=ORDER_TABLE,
|
||||
)
|
||||
transact.put(
|
||||
item={
|
||||
'id': seat['order_id'],
|
||||
'sk': f'ENROLLMENT#{enrollment.id}',
|
||||
'course': course.model_dump(),
|
||||
'user': user.model_dump(),
|
||||
'status': 'EXECUTED',
|
||||
'executed_at': now_,
|
||||
'created_at': now_,
|
||||
},
|
||||
table_name=ORDER_TABLE,
|
||||
)
|
||||
|
||||
# Relationships between this enrollment and its related entities
|
||||
for entity in linked_entities:
|
||||
# Parent knows the child
|
||||
|
||||
2
enrollments-events/uv.lock
generated
2
enrollments-events/uv.lock
generated
@@ -683,7 +683,7 @@ wheels = [
|
||||
|
||||
[[package]]
|
||||
name = "layercake"
|
||||
version = "0.13.1"
|
||||
version = "0.13.4"
|
||||
source = { directory = "../layercake" }
|
||||
dependencies = [
|
||||
{ name = "arnparse" },
|
||||
|
||||
Reference in New Issue
Block a user