TSSqliteでは二種類のjsonファイルを使ってデータベースを管理しています。 一つ目はdatabase.json(名称固定)で、保存するファイル名とマイグレーションの管理を行うファイルです。 もう一つはスキーマを定義するjsonファイルで、ファイル名はdatabase.jsonで指定します。
database.jsonには二つの項目を書きます。
{
"filename" : "sample.sqlite",
"schema" : ["schema_ver1"]
}
このように書くと、sample.sqliteというファイル名で保存されます。 また、スキーマはschema_ver1.jsonというファイルの定義を使用します。
アプリのアップデートをしてスキーマファイルを更新するときは
{
"filename" : "sample.sqlite",
"schema" : ["schema_ver1","schema_ver2"]
}
のように、schemaの一番後ろに新しくスキーマ設定ファイルを指定することでできます。
スキーマ設定ファイルには、テーブルの構造をjsonファイルで書きます。
{
"book":{
"tableName" : "book",
"class" : "AppBook",
"columns" : {
"indexNo" : { "type": "integer", "primary": true, "autoincrement": true},
"name" : { "type": "string" },
"author" : { "type": "string" },
"year" : { "type": "int" , "default": 0}
}
}
}
例ではbookというテーブル一つを定義しています。 jsonのキーとしてのbook、tableNameとしてのbookがありますが、ここは同じ文字列を入れてください。
classには後々作る、model用のクラス名を書きます。 columnsにテーブルのカラムをキーがカラム名、値にカラムの情報の配列となるように書きます。 カラムの情報としてかけるのは次の4つだけです
| キー | とりうる値 | |
|---|---|---|
| type | 整数値(integer, int) , 小数値(float, double, real) 文字列(string, text) , バイナリ(blob) | カラムに入れる値の種類 括弧の中はどれを指定しても同じ |
| primary | true or false | プライマリーキーかどうか 複数カラムでのキーはここでは指定できない |
| autoincrement | true or false | SQLiteの制約により、整数型でプライマリのときのみ使用可能 |
| default | デフォルト値 | デフォルトで入れる値 |