Skip to content

Poke User Battle Data Management Service (失敗により別途再開発

Notifications You must be signed in to change notification settings

Symthy/poke-battle-data-mgmt-serv

Repository files navigation

PokeRest

Pokemon REST API

開発頓挫のため再設計&再計画中 -> 設計&今後の方針 【執筆中】

構成は以下を参考

API Specification File

docs/PokeRest.v1.yaml

Search

以下のような検索用の独自 QL は設けない

https://github.com/cbrand/go-filterparams

全文検索かける程でもなく検索項目も少ない、項目間は AND 条件のみため。 ただし、一部項目に OR/AND 条件指定が必要なため。一部パラメータでは以下により指定

条件 指定記号 例(encode 無し)
AND & xxx='aaa&bbb&ccc'
OR | xxx='aaa|bbb|ccc'

※高度な検索が必要になるなら別途検討

Code Auto Generate

go install github.com/deepmap/oapi-codegen/cmd/oapi-codegen@latest
go install github.com/google/wire/cmd/wire@latest
./run_autogen.sh

Use Libraries

Lint tool

※ go-lint は非推奨になった

参考: golangci を理解する

OpenAPI server code generate

参考:

Framework

  • Echo

DI

ORM

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

Logging

log.SetOutput(&lumberjack.Logger{
    Filename:   "/var/log/myapp/foo.log",
    MaxSize:    500, // megabytes
    MaxBackups: 3,
    MaxAge:     28, //days
    Compress:   true, // disabled by default
})
  • ZAP

Test/Mock

ref: https://github.com/bmuschko/go-testing-frameworks

  • testify テストのセットアップ・終了時の処理のコードが重複しないテストコードを書ける+ mock helper 有

https://github.com/stretchr/testify

go get -u github.com/DATA-DOG/go-sqlmock

gorm + postgresql + go-sqlmock の場合、通常のやり方では INSERT のモックがうまく行かないらしい。以下参照。

Other

Use tools

Create API spec tool

Stoplight Studio

https://stoplight.io/studio/

Migration tool

[golang-migrate](https://github.com/golang-migrate/migrate/blob/master/database/postgres/TUTORIAL.md]

Create ER Diagram tool

SchemaSpy

そのままでは 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:

About

Poke User Battle Data Management Service (失敗により別途再開発

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages