takaha.siの技術メモ

勉強したことをお伝えします。ちょっとでも誰かの役に立てればいいな…

Firestoreの新しいライブラリを思いついたんだけど

思いつきのメモなんですが

FirebaseのFirestoreを読み書きするTypeScriptのコードってちょっと書くとすぐごちゃごちゃし始めて脳負荷が高いコードになりがちじゃないですか?

テーブル?の定義とセーブロードのロジックが混じり合ってカオスになるのがとっても汚らしいと思うんですよ。

なので、アノテーションつかってこういうふうにかけるライブラリあったらよくないかなとおもいました。

class Game extends FSModel {
    // このアノテーションで/usr/games/ 以下に保存される
  @definePath("/user/games")
  
  // これでFireStoreのエントリを定義する
  // storeEntityアノテーションがつけられたメンバー変数は
  // toFirestore(), fromFirestore()で自動的に保存される
  @storeEntity
  public gameTitle: string;

  @storeEntity
  public gameID: GameID;

  @storeEntity
  private published: boolean = false;

  public setPublish() {
    this.published = true;
  }
}

const e = new Game();
e.gameID = "Foo";
e.gameTitle = "Bar";

e.setPublish();

// これでFireStoreに保存
e.toFirestore();

// FireStoreから取ってくる
const ref = Game.fromFirestore();
ref.gameTitle = "Hoge";
ref.gameID = "Fuga";

// もっかい保存しなおす
ref.toFirestore();

こんな感じで書けると嬉しい。