Category:

go クリーンアーキテクチャでトランザクション管理

意外に情報が少なくて、何がベストかはよく分からないですが、メモがてら残しておきます。 ソースコードは以下で公開してるので、詳細を見たい場合は参照ください。 https://github.com/rinoguchi/microblog 利用している技術 言語: golang web framework: chi ORM: bun トランザクションの開始/終了 通常の Web APIでは1リクエスト1トランザクションが一番シンプルで分かりやすいので、リクエストとトランザクションのライフサイクルは同じにしたいです。 一つのAPIコールの途中で何かエラーが発生したら、全部ロールバックする形です。 この場合、controllers 層でトランザクションを開始/終了するのが良さそうです。 controllers 層の各ハンドラーにて、以下のような感じで実装するのが一番シンプルですが、同じ実装が何度も出 Continue Reading

Posted On :
Category:

go generateの使い方

go generate の使い方をメモ程度に残しておきます。 既存のRepositoryモデルを元に、RepositoryモデルをDomainモデルに変換するマッパーを生成するようなケースを紹介します。 フォルダ構成 ├── domains │ └── model.go # Domainモデル └── repositories ├── gen │ ├── gen.go # generator本体 │ └── mapper.tmpl # 参照するテンプレート ├── model.go # 参照するRepositoryモデル └── mapper.gen.go # 自動生成されたマッパー genフォルダ配下にgenerator本体を置くのは、go generate のベストプラクティス を参考にさせていただきました。 参照元のコード Repositoryモデル 今回はbunを使ってます。 im Continue Reading

Posted On :