import json
import calendar
import boto3
from boto3.dynamodb.conditions import Key
from datetime import timedelta, date
dynamo = boto3.resource('dynamodb')
table = dynamo.Table('medication-management-table')
def lambda_handler(event, context):
statusCode = 200
responseBody = {}
# ルートキーの取得
routeKey = event['routeKey']
try:
if routeKey == 'GET /calendar/{year}/{month}':
# 服薬カレンダー取得のGET APIがコールされた場合
# パスパラメータ取得
year = int(event['pathParameters']['year']) # 年
month = int(event['pathParameters']['month']) # 月
# 対象月のカレンダー情報を取得
monthCalendarList = calendar.monthcalendar(year, month)
# 1か月分データリストを生成(空データ)
monthDataList = []
# 1か月分のカレンダー情報をループ
for weekCalendarList in monthCalendarList:
# 1週間分データリストを生成(空データ)
weekDataList = []
# 1週間分のカレンダー情報をループ
for day in weekCalendarList:
count = 0
if day > 0:
# 対象日のデータ件数を取得
yyyymmdd = str(year) + str(month).zfill(2) + str(day).zfill(2)
# queryメソッドで指定日付のデータを作成
data = table.query(
KeyConditionExpression = Key('yyyymmdd').eq(yyyymmdd)
)
# データ件数を取得
count = data['Count']
# 日別件数データを作成
dict = {
'day' : day, # 日
'count' : count # 件数
}
# 日別件数データを1週間分データリストに追加
weekDataList.append(dict)
# 1週間分データリストを1か月分データリストに追加
monthDataList.append(weekDataList)
# レスポンスボディに取得結果をJSON形式でセット
res = {
'yyyymm': str(year) + '/' + str(month).zfill(2), # 表示年月
'data': monthDataList # 1か月分データリスト
}
responseBody = json.dumps(res)
except Exception as e:
# エラーが起きた時の処理
print(e)
statusCode = 500
responseBody = json.dumps('エラー発生')
# レスポンス返却
return {
'statusCode' : statusCode,
'body' : responseBody,
'headers' : {
'Content-Type': 'application/json'
}
}
import calendar
・・・
# 対象月のカレンダー情報を取得
monthCalendarList = calendar.monthcalendar(year, month)