fix billing
This commit is contained in:
@@ -2,6 +2,7 @@ from datetime import date
|
|||||||
from typing import Annotated
|
from typing import Annotated
|
||||||
|
|
||||||
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.openapi.params import Query
|
from aws_lambda_powertools.event_handler.openapi.params import Query
|
||||||
from layercake.dynamodb import DynamoDBPersistenceLayer, KeyPair
|
from layercake.dynamodb import DynamoDBPersistenceLayer, KeyPair
|
||||||
|
|
||||||
@@ -12,6 +13,9 @@ router = Router()
|
|||||||
dyn = DynamoDBPersistenceLayer(ORDER_TABLE, dynamodb_client)
|
dyn = DynamoDBPersistenceLayer(ORDER_TABLE, dynamodb_client)
|
||||||
|
|
||||||
|
|
||||||
|
class BillingNotFoundError(NotFoundError): ...
|
||||||
|
|
||||||
|
|
||||||
@router.get('/<org_id>/subscription')
|
@router.get('/<org_id>/subscription')
|
||||||
def subscription(org_id: str):
|
def subscription(org_id: str):
|
||||||
return dyn.collection.get_item(
|
return dyn.collection.get_item(
|
||||||
@@ -31,10 +35,17 @@ def billing(
|
|||||||
start_date: Annotated[date, Query()],
|
start_date: Annotated[date, Query()],
|
||||||
end_date: Annotated[date, Query()],
|
end_date: Annotated[date, Query()],
|
||||||
):
|
):
|
||||||
return dyn.collection.query(
|
pk = f'BILLING#ORG#{org_id}'
|
||||||
|
sk = f'START#{start_date}#END#{end_date}'
|
||||||
|
r = dyn.collection.get_item(
|
||||||
|
KeyPair(pk, sk),
|
||||||
|
exc_cls=BillingNotFoundError,
|
||||||
|
)
|
||||||
|
|
||||||
|
return r | dyn.collection.query(
|
||||||
KeyPair(
|
KeyPair(
|
||||||
pk=f'BILLING#ORG#{org_id}',
|
pk=pk,
|
||||||
sk=f'START#{start_date}#END#{end_date}',
|
sk=f'{sk}#ENROLLMENT',
|
||||||
),
|
),
|
||||||
limit=150,
|
limit=150,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -75,9 +75,7 @@ export default function Route({
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Await resolve={billing}>
|
<Await resolve={billing}>
|
||||||
{({ items }) => {
|
{({ items, ...billing }) => {
|
||||||
const billing = items.find((item) => item.sk === sk)
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Card>
|
<Card>
|
||||||
<CardContent className="space-y-2.5">
|
<CardContent className="space-y-2.5">
|
||||||
|
|||||||
Reference in New Issue
Block a user