転職活動でバックエンドも出来るぜ!アピールとしてポートフェリオぽいの作った方が良いかもね・・?という事で、こんなリポジトリ作ってたわけなんですけど、コード書いてて気づいた事つらつらと書きます。
何時もの奔放な個人開発じゃなく、気づき、ハマりのQiitaらしいアウトプットってことで。ちゃんと調べて書けーって怒られそうな気もするけどw
ORMの仕様とか親切で大惨事になるかも・・?
今回Goの代表的なORMであるgormを使いましたが、Delete投げる時に消す情報を先に取得しないまま、動かすとテーブル内のレコードすべてが消えるのが仕様らしいんです!
jsonData.Id = Ids
DBMS.First(&jsonData) // この行無いと滅亡です!
DBMS.Delete(&jsonData)
今回一番作ってて?となったとこ。ありえん。
RDS?ORM?どっちが悪いでしょーか
RDSが一時的に不調っぽい時に動かすとダンマリでタイムアウトせず・・
DB, err := gorm.Open(DBTYPE, CONNECT) // ずーーっと接続中
if err != nil {
fmt.Println("RDS access error!")
panic(err.Error())
}
せめてエラー応答して欲しかったなと。
Model定義の順番で構造が崩れる!?
type test struct {
gorm.Model
Number int `gorm:"primary_key"`
}
みたいに先にgorm.Modelを書いて、DB側のテーブルの最初にNumberが居るとgorm.Modelから取得した値がNumberに浸食してきます。
type test struct {
Number int `gorm:"primary_key"`
gorm.Model
}
こんなふうにDBスキーマにもよるけど最後に書いた方が無難。
残るモヤ
と、まあ学びを通じて残るモヤがまだまだありました。。
APIサーバー自身もマネージドサービスの方が良くね?という疑問
ORM以前から**DB叩いてきたバックエンドエンジニアにはどう映ってるの?**という疑問
VSCodeとか**エコシステムが逆に足引っ張ってねーかい?**という疑問
こういうアンチナレッジが残る事自体が学びなんでしょうけど、技術的な選定して舵を取るという意味でテックリードって大事なんやなと改めて思った。むしろテックリード不在の組織ってこういうのどうオトしてんだろ??