Skip to content

Toshihiko ​

Toshihiko は設定済みデータベースの入口です。通常、アプリケーションは 1 つのインスタンスを作り、そこから Model を定義します。

インスタンスの作成 ​

TypeScript では Adapter class を直接渡す方法を推奨します。コンストラクターが Adapter 固有の設定型を検査できます。

typescript
import { Toshihiko } from 'toshihiko';
import { MySQLAdapter } from '@toshihiko/mysql-adapter';

const database = new Toshihiko(MySQLAdapter, {
  database: 'app',
  host: '127.0.0.1',
  port: 3306,
  username: 'root',
  password: 'secret',
});

短い dialect 名も利用できます。'mysql' は @toshihiko/mysql-adapter を読み込みます。

typescript
const database = new Toshihiko('mysql', {
  database: 'app',
  host: '127.0.0.1',
  username: 'root',
});

MySQL 設定 ​

公式 MySQL Adapter の options は MySQLAdapterOptions です。よく使うフィールドは次のとおりです。

フィールド型初期値説明
databasestring'toshihiko'データベース名と Cache の database namespace
hoststring'localhost'MySQL のホスト名または IP address
portnumber3306MySQL port
userstring''MySQL user name
usernamestring—user の互換表記。両方指定した場合はこちらを使用
passwordstring''MySQL password
poolMySQLPool—既存の mysql2/promise Pool を再利用。省略時は新規作成
showSqlfalse | true | ((sql: string) => void)falsetrue は console.log、関数には format 済み SQL を渡す
cacheCache | CacheOptions—既存 Cache、または module、path、name と constructor 引数を含むモジュール設定。Model が継承する
その他mysql2.PoolOptionsmysql2 に従うconnectionLimit、charset、ssl、timeout など

全 MySQL 設定は MySQL Adapter APIを参照してください。他の Adapter は独自の options object を定義します。

コンストラクター引数 ​

引数受け付ける値説明
adapterDialect 名、Adapter class、Adapter instanceデータベース実装を選択。class を渡すと設定型も取得できる
options選択した Adapter の設定 objectAdapter に渡され、database.options に保持される

構築済み Adapter instance を渡す場合、options は渡しません。

typescript
const adapter = new MySQLAdapter({ database: 'app' });
const database = new Toshihiko(adapter);

プロパティ ​

プロパティアプリケーションから見える型内容
databasestringAdapter が返す現在のデータベース名
dialectstring | nullDialect 名。instance 注入時は通常 Adapter class 名
options選択した Adapter の設定 objectコンストラクターに渡した元の設定
cacheCache | null | undefined現在の database-level Cache
poolMySQL では MySQLPool、その他では undefinedMySQL Pool の互換入口

define() ​

typescript
database.define(name, schema, options?)
引数型説明
namestringテーブル名。文字列リテラルは Model 型に保持される
schemareadonly FieldDefinition[]フィールド名、Field Type、列、主キー、default、Validator
options.cacheCacheSource | false | null継承した Cache を置換または無効化
options.methodsメソッド objectModel にコピーされ、引数と戻り値の型を保持
typescript
const User = database.define('users', [
  { name: 'id', type: Type.Integer, primaryKey: true },
  { name: 'name', type: Type.String },
], {
  cache: false,
  methods: {
    async findByName(name: string) {
      return this.where({ name }).find();
    },
  },
});

const users = await User.findByName('Yukari');

返される Model は schema からフィールド名、値、null 許可、主キー、JSON 値を推論します。methods では method shorthand または通常の function を使うと、this が完全な Model として推論されます。

execute() ​

Raw 実行の引数と結果は Adapter が決めます。公式 MySQL Adapter は次の形式です。

typescript
database.execute(
  sql: string,
  values?: MySQLValues,
): Promise<MySQLQueryResult>

database.execute(
  connection: MySQLConnection | null,
  sql: string,
  values?: MySQLValues,
): Promise<MySQLQueryResult>

MySQLValues は readonly array または parameter 名を key にした readonly object です。Raw SQLも参照してください。

Toshihiko.createCache() ​

typescript
Toshihiko.createCache(source: CacheSource): Cache | null

type CacheSource = Cache | CacheOptions

既存 Cache はそのまま返します。module 形式の設定は Cache を作成し、認識できない値は null を返します。通常のアプリケーションは Cache を直接構築し、module 形式は互換用途で使います。詳細は Cache API を参照してください。

Adapter 開発者向け generics ​

アプリケーションコードが次の generics を記述する必要はありません。カスタム Adapter の options、connection、実行結果を Model と Query に伝えるための型です。

typescript
class Toshihiko<
  AdapterInstance extends AdapterLike = Adapter,
  Options extends object = ToshihikoOptions,
> extends EventEmitter2

type AdapterSource<Options extends object, Instance extends AdapterLike> =
  | string
  | Instance
  | AdapterConstructor<Options, Instance>;

Released under the MIT License.