Skip to content

Contextの作成 ​

KosameはContextベースの設計思想を持っており、Modelで定義したTableをContextに渡すことで、実際にクエリを実行する入り口を構築します。

作成方法 ​

Kosameではdataディレクトリを作成しcontext.tsにContextを書いていきます。

src/
└── data/
    └── context.ts

Contextの書き方 ​

createContext関数を呼び出しdbとModelを紐付けます。

ts
import { createContext } from "kosame";
import { db } from "./db.js";
import { User } from "../models/user.js";

export const context = createContext(db, {
  users: User,
});

一度だけ構築される ​

createContext(db, schema)の呼び出し時にschemaを反復してModelCollectionが作られ、context.usersとしてプロパティ定義します。これはproxyを使った遅延生成ではなく即時構築で構築されます。もしproxyベースである場合context.usersに初めてアクセスした瞬間に初めて中身が構築されます。KosameはcreateContext()を呼んだタイミングでcontext.usersなどの確定したオブジェクトとして存在しているという設計になっています。これはKosameが持つ明示的な設計からくるものです。ただしtransaction()は例外で呼ぶたびに新しくContextが作られます。