01 設定ファイル

TSSqliteでは二種類のjsonファイルを使ってデータベースを管理しています。 一つ目はdatabase.json(名称固定)で、保存するファイル名とマイグレーションの管理を行うファイルです。 もう一つはスキーマを定義するjsonファイルで、ファイル名はdatabase.jsonで指定します。

xcodeでjsonファイルを新規追加するときは、ファイルの種類としてString Fileを選択し、ファイル名にxxx.jsonと拡張子まで含めて指定する必要があります。

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