どんなAPIにしたか
3分ごとに
↓↓↓よりエクセルファイルをダウンロードし
https://web.pref.hyogo.lg.jp/kk03/corona_kanjyajyokyo.html
読み込んだデータをDBに書き込みます。
別のコンテナにgraphQLサーバーを用意して配信します。
コンテナ構成
- DB自動書き込み用コンテナ(pythonで実装)
- GraphQLサーバー(Goで実装)
ところが、残念ながら...(2020/3/18)
リリース後
定期実行される
pythonが読み込んでいる
エクセルファイルに想定外の変更が
before
after
画像の通りなんと空のセルで表現した二重線が追加されてしまいました。
ここに想定外のnullが発生してエラーが発生してしまい。
エクセルのデータをDBに書き込めないという状態になりました。
まぁ、担当の方が思いつくままに作っておられるであろうエクセルファイル仕方ありませんね。
なので、残念ながら3月16日までのデータしか提供できない状態となってしまいました。
残念!
修正して公開しなおしました!(2020/3/19)
pythonのcronとgraphQLを組み合わせたサービスの実験に...
くらいのテンションで作ってみたapiだったので
さらっと諦めかけていたのですが
上述のエクセルの空のカラム問題
なんのことは無い
空のカラムは読み飛ばせばいいじゃ無いかという事で
修正したらいけました。
https://hyogo.covid19-api.ga
GraphQLのプレイグラウンドも公開しています。
https://hyogo.covid19-api.ga/playground
一応、ソースコードも
https://github.com/inadati/hyogo-covid19-api.services
Playgroundでapiを試す
エクセルの表のヘッダーとGraphQLのフィールドの関連がこちらです。
こんな感じのクエリを投げると...
query{
readInfectedPeoples{
no
confirmed_date
age_group
sex
jurisdiction
residence
occupation
onset_date
travel_history
remarks
infected_places{
name
is_relation
}
}
}
こんな感じで返ってきます。
エクセルの「認定こども園」以降のカラムはinfected_places(感染場所)でリスト取得できます。
詳しくは、プレイグラウンドのDOCSタブで確認してみてください。
{
"data": {
"readInfectedPeoples": [
{
"no": 86,
"confirmed_date": "2020-03-17T00:00:00Z",
"age_group": 70,
"sex": "女性",
"jurisdiction": "伊丹",
"residence": "伊丹健康福祉事務所管内",
"occupation": "無職",
"onset_date": "03月07日",
"travel_history": "なし",
"remarks": "介護老人保健施設グリーンアルス伊丹デイケアを利用",
"infected_places": [
{
"name": "認定こども園",
"is_relation": false
},
{
"name": "北播磨医療センター",
"is_relation": false
},
{
"name": "グリーンアルス",
"is_relation": true
},
{
"name": "宝塚第一病院",
"is_relation": false
},
{
"name": "仁恵病院",
"is_relation": false
},
{
"name": "介護保険通所事業所",
"is_relation": false
},
{
"name": "海外渡航者",
"is_relation": false
},
{
"name": "ライブ関係",
"is_relation": false
}
]
},
...
]
}