type UserGroup @model {
id: ID!
group_code: String!
group_name: String!
slack_team_id: String!
slack_user_name: String!
slack_user_id: String!
user_slack_channel_id: String!
group_slack_channel_id: String
post_schedule_hour_utc: Int
slack_access_token: String!
}
こんなGraphQLスキーマを作ると、DynamoDBテーブルが作成される!
カオスなNoSQLに秩序が!!
DynamoDBはこんな感じ
スキーマと一致
export const teamsBySlackTeamId = `
query TeamsBySlackTeamId(
$slack_team_id: String
$id: ModelIDKeyConditionInput
$sortDirection: ModelSortDirection
$filter: ModelTeamFilterInput
$limit: Int
$nextToken: String
) {
teamsBySlackTeamId(
slack_team_id: $slack_team_id
id: $id
sortDirection: $sortDirection
filter: $filter
limit: $limit
nextToken: $nextToken
) {
items {
id
slack_team_id
name
is_premium
failed_payment
slack_access_token
createdAt
updatedAt
}
nextToken
}
}
`;
こんなクエリが自動生成されるので、これを叩くだけでCRUDできる。
レポジトリ層が勝手に作られる!
const {
data: {
teamsBySlackTeamId: { items: teams },
},
} = await client.query({
query: gql(teamsBySlackTeamId),
variables: {
slack_team_id: response.data.team.id,
},
});
呼び出し側ではこんな感じに値が取れる!
素敵!!
ただ、Lambdaの辛さもそのままだよ!(後述)
募集中
(なんかどれも難しかったりで、いい感じのドキュメント無いんですよね…)
普通のSPAやるなら、auth0がおすすめ!
auth0-spa-js ってライブラリが素直で使いやすい
が当てはまるならアリ!
求められるスタックが広いから、技術好きなら楽しいよ!
でもピーキーさが強いので「ECS+RDS」
が王道かもね。