Pokemon REST API
開発頓挫のため再設計&再計画中 -> 設計&今後の方針 【執筆中】
構成は以下を参考
docs/PokeRest.v1.yaml
以下のような検索用の独自 QL は設けない
https://github.com/cbrand/go-filterparams
全文検索かける程でもなく検索項目も少ない、項目間は AND 条件のみため。 ただし、一部項目に OR/AND 条件指定が必要なため。一部パラメータでは以下により指定
条件 | 指定記号 | 例(encode 無し) |
---|---|---|
AND | & |
xxx='aaa&bbb&ccc' |
OR | | |
xxx='aaa|bbb|ccc' |
※高度な検索が必要になるなら別途検討
go install github.com/deepmap/oapi-codegen/cmd/oapi-codegen@latest
go install github.com/google/wire/cmd/wire@latest
./run_autogen.sh
※ go-lint は非推奨になった
参考: golangci を理解する
- oapi-codegen: https://github.com/deepmap/oapi-codegen
参考:
- Echo
- gorm: 本使用 https://gorm.io/ja_JP/docs/index.html
go get gorm.io/gorm
go get gorm.io/driver/postgres
go get entgo.io/ent/cmd/ent
cd internal/adapters/orm/entio
go run entgo.io/ent/cmd/ent init --target ./schema Pokemons Forms Abilities Moves TypeCompatibility HeldItems Users TrainedPokemons Party Tag BattleRecord BattleOpponentParty
cd autogen/ent/
go run entgo.io/ent/cmd/entc generate --target ./autogen/ent ../../orm/entio/schema
log.SetOutput(&lumberjack.Logger{
Filename: "/var/log/myapp/foo.log",
MaxSize: 500, // megabytes
MaxBackups: 3,
MaxAge: 28, //days
Compress: true, // disabled by default
})
- ZAP
ref: https://github.com/bmuschko/go-testing-frameworks
- testify テストのセットアップ・終了時の処理のコードが重複しないテストコードを書ける+ mock helper 有
https://github.com/stretchr/testify
- go-sqlmock https://github.com/DATA-DOG/go-sqlmock
go get -u github.com/DATA-DOG/go-sqlmock
gorm + postgresql + go-sqlmock の場合、通常のやり方では INSERT のモックがうまく行かないらしい。以下参照。
-
https://betterprogramming.pub/how-to-unit-test-a-gorm-application-with-sqlmock-97ee73e36526
-
https://simple-minds-think-alike.moritamorie.com/entry/go-sqlmock-gorm
-
array の contains https://zenn.dev/glassonion1/articles/7c7830a269909c
-
go-funk: 戻り値が interface{}になるため使用は限定的にしておく。※generics が来れば Wrap して使えるはず https://github.com/thoas/go-funk
-
gonstructor: コンストラクタ(ビルダー)自動生成ツール。自前で用意する時間がないため暫定使用。ただし
gorm:~
の指定入れている物には使えず https://github.com/moznion/gonstructor -
golang-set:使用していないがメモ。凝った Set 型を使いたければ以下を使う https://github.com/deckarep/golang-set
Stoplight Studio
[golang-migrate](https://github.com/golang-migrate/migrate/blob/master/database/postgres/TUTORIAL.md]
そのままでは schemaspy コンテナ内臓の driver が古いためか? postgres に 以下エラーで接続失敗するため
Failed to connect to database URL [jdbc:postgresql://postgres:5432/pokedb] The authentication type 10 is not supported. Check that you have configured the pg_hba.conf file to include the client's IP address or subnet, and that it is using an authentication scheme supported by the driver.
tools/drivers に postgres の driver を配置すること(動作実績:postgresql-42.3.5.jar)
cd tools
docker-compose up
ref: