🐕
enum値の変換のためにシンプルな双方向マップライブラリを作成した
経緯
enumをOAS(もしくはproto)とドメイン層で同じものを二つ定義したときに、変換処理を双方向に書く必要があり面倒でした。
例えばOASでは性別がintのenumで定義されていて、それをドメイン層で定義した性別のenumに変換するような時です。
APIを作成するときに、リクエストパラメーターをドメインのenumに変換し、逆にレスポンスを返すときに、ドメインのenumをOASのenumに変換する関数(またはmap)を定義する必要がありました。
作成物
このように一度対応表を作成すれば、順変換と逆変換ができるようになり、地味に便利です
var genderMap = lo.Must(bimap.NewFromMap(map[GenderInt]GenderStr{
GenderIntMale: GenderStrMale,
GenderIntFemale: GenderStrFemale,
}))
// 順変換
strGender, err := genderMap.Get(genderInt)
// 逆変換
genderStr, err := genderMap.InverseGet(valueFromDB)
Discussion