開発目的
場所・タスク・レビューを作る API で、作った行の id を INSERT の RETURNING id で受け取るようにする。
今は INSERT のあとに、いちばん新しい行(ORDER BY id DESC LIMIT 1)を読み直して、それを作った行として返している。同じ表に同時に別の行が作られると、別の行を返すことがある。レスキューと users は同じ形を #536(PR #537・#538)で直したので、残りの3つもそろえる。
| API |
UseCase |
読み直し |
POST /places |
api/lib/usecase/place_usecase.go#placeUseCase.CreatePlace |
FindNewRecord |
POST /tasks |
api/lib/usecase/task_usecase.go#taskUseCase.CreateTask |
FindNewRecord |
POST /reviews |
api/lib/usecase/review_usecase.go#reviewUseCase.CreateReview |
FindNewRecord |
いちばん取り違えやすいのは POST /reviews で、技大祭の期間中に多くの人が同じ時間帯に送る。場所とタスクは管理画面から作るので、同時に作られることは少ない。
考えられる開発内容
考えられる開発時間
3〜4時間
備考
- レスポンスの形は変えない。変えるのは、どの行を返すかだけ
- 本番への反映は api のイメージの作り直しが要る(
docs/operations/deploy.md)
開発目的
場所・タスク・レビューを作る API で、作った行の id を INSERT の
RETURNING idで受け取るようにする。今は INSERT のあとに、いちばん新しい行(
ORDER BY id DESC LIMIT 1)を読み直して、それを作った行として返している。同じ表に同時に別の行が作られると、別の行を返すことがある。レスキューと users は同じ形を #536(PR #537・#538)で直したので、残りの3つもそろえる。POST /placesapi/lib/usecase/place_usecase.go#placeUseCase.CreatePlaceFindNewRecordPOST /tasksapi/lib/usecase/task_usecase.go#taskUseCase.CreateTaskFindNewRecordPOST /reviewsapi/lib/usecase/review_usecase.go#reviewUseCase.CreateReviewFindNewRecordいちばん取り違えやすいのは
POST /reviewsで、技大祭の期間中に多くの人が同じ時間帯に送る。場所とタスクは管理画面から作るので、同時に作られることは少ない。考えられる開発内容
Createを、RETURNING idで id を返す形にする(お手本はapi/lib/internals/repository/user_repository.go#userRepository.Create)FindNewRecordを使わない)RETURNING idを含み、その id で読み直すことを確かめる(お手本はapi/lib/internals/repository/user_repository_sqlmock_test.go)FindNewRecordを消す。bureau・department・grade・shift の repository にも、どこからも呼ばれていないFindLatestRecordがある(名前が違うので注意。git grep -n FindLatestRecord api/で確かめられる)AGENTS.mdの Known Transitional Issues から「作成後の最新行の読み直し」の行を消す(PR docs: チームの約束事とコードの書き方のうち、メモにしかないものを workflow.md と AGENTS.md に書く #578 で足す予定の行)考えられる開発時間
3〜4時間
備考
docs/operations/deploy.md)