🚀
シンServerpodを解読する 〜insert
Serverpod1.2 CyberPunk を使いこなせるか
待ちに待ったServerpodのUpgrade、
ほんとはAWSへのdeploy前に対応したかったけど、それは言っても始まらない。
考え方は二つ、Serverpod 1.1のままAWSでの作業を続けるか、
いったん立ち止まって、1.2に対応するか。
なんといっても1.2はDatabase周りの改変が大きい。
だから「開通しただけ」のAWSはいったん措いて、
1.2にちゃんと対応するのが、やっぱり肝要かなと思う。
細かいことを一つずつ
Serverpodを1.2に上げると同時に、Flutterも3.16.7に上げた。
VSCodeに拡張機能を入れる。
ServerpodInsightを1.2に上げる。
するとCodeが真っ赤になる。まあ、当然か。
よく見ると、赤いのは自動生成のfileだ。
触れないじゃん。
でも、赤いからには、私がつくったfileと不整合があるということだろう。
なのでそれを直していくしかありません。
add関数を修正する。
1.1で動いていたヤツ。
Future<int> addPrincipal(
Session session, Principal principal) async {
await Principal.insert(session, principal);
return principal.id!;
}
1.2に対応したのがこちら。なんの情報もなくて、大苦戦でしたよ。
Future<int> addPrincipal(
Session session, Principal principal) async {
var newPrincipal = await Principal.db.insertRow(session, principal);
var newId = newPrincipal.id;
return newId!;
}
なんか、めんどくさくなってないか?
以前は「データを加えたら、新しいID教えるよ」だったのに、
今回は型が違うとかなんとかいろいろうるさくて、
このさりげない1行に気づくまで、だいぶ時間を溶かした。
The method will return the entire object with the id field set.
つまり、「データを加えたら、「全部」返すよ」らしい。
全部返されても、とりあえずここでほしいのはIDだけなんです!
なので、「全部から、IDだけちょうだい」の1行が増えた。
最適解かどうかわからないけど、とりあえずこれで行く。
Discussion