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 | デフォルト値 | デフォルトで入れる値 |