Script¶
Task1-Get-Order-Detail¶
# -*- coding: utf-8 -*-
import typing as T
import json
import dataclasses
@dataclasses.dataclass
class InputData:
order_id: str
database = {
"orders": {
"order-1": {
"order_id": "order-1",
"items": [1, 2],
"ship_address": "123 st, Newyork, NY 10001",
},
"order-2": {"..."},
"order-3": {"..."},
}
}
@dataclasses.dataclass
class OutputData:
order_id: str
items: T.List
ship_address: str
def lambda_handler(event, context):
print("received event:")
print(json.dumps(event, indent=4))
input = InputData(**event)
output = OutputData(**database["orders"][input.order_id])
return dataclasses.asdict(output)
Task2a-2-Get-Item-Cost¶
# -*- coding: utf-8 -*-
import typing as T
import json
import dataclasses
@dataclasses.dataclass
class InputData:
items: T.List
@dataclasses.dataclass
class OutputData:
total_price: float
database = {
"items": {
1: {"price": 14.99},
2: {"price": 3.99},
3: {"price": 7.99},
}
}
def lambda_handler(event, context):
print("received event:")
print(json.dumps(event, indent=4))
input = InputData(**event)
total_price = sum([database["items"][item]["price"] for item in input.items])
output = OutputData(total_price=total_price)
return dataclasses.asdict(output)
Task2b-2-Get-Ship-Cost¶
# -*- coding: utf-8 -*-
import typing as T
import json
import dataclasses
@dataclasses.dataclass
class InputData:
ship_address: str
@dataclasses.dataclass
class OutputData:
ship_cost: float
def lambda_handler(event, context):
print("received event:")
print(json.dumps(event, indent=4))
input = InputData(**event)
output = OutputData(ship_cost=9.99)
return dataclasses.asdict(output)
Task4-Process-Payment¶
# -*- coding: utf-8 -*-
import json
import dataclasses
@dataclasses.dataclass
class Input:
balance: float
def charge_credit_card(card_number: str, balance: float):
pass
@dataclasses.dataclass
class Output:
status: str
def lambda_handler(event, context):
print("received event:")
print(json.dumps(event, indent=4))
input = Input(**event)
try:
charge_credit_card("1234-5678-1234-5678", input.balance)
output = Output(status="success")
except:
output = Output(status="failed")
return dataclasses.asdict(output)
Task2a-1-Extract-Items¶
# -*- coding: utf-8 -*-
import typing as T
import json
import dataclasses
@dataclasses.dataclass
class InputData:
order_id: str
items: T.List
ship_address: str
@dataclasses.dataclass
class OutputData:
items: T.List
def lambda_handler(event, context):
print("received event:")
print(json.dumps(event, indent=4))
input = InputData(**event)
output = OutputData(items=input.items)
return dataclasses.asdict(output)
Task2b-1-Extract-Ship-Address¶
# -*- coding: utf-8 -*-
import typing as T
import json
import dataclasses
@dataclasses.dataclass
class InputData:
order_id: str
items: T.List
ship_address: str
@dataclasses.dataclass
class OutputData:
ship_address: str
def lambda_handler(event, context):
print("received event:")
print(json.dumps(event, indent=4))
input = InputData(**event)
output = OutputData(ship_address=input.ship_address)
return dataclasses.asdict(output)
Task3-Find-Balance¶
# -*- coding: utf-8 -*-
import typing as T
import json
import dataclasses
@dataclasses.dataclass
class Output:
balance: float
def lambda_handler(
event: T.Tuple[
T.Dict[str, float],
T.Dict[str, float],
],
context,
):
print("received event:")
print(json.dumps(event, indent=4))
total_price = event[0]["total_price"]
ship_cost = event[1]["ship_cost"]
output = Output(balance=total_price + ship_cost)
return dataclasses.asdict(output)