Write column definitions as space-separated strings for compact schemas:
# String with modifiers "email": "string required unique" # equivalent to: "email": { "type": "string", "required": true, "unique": true } # With default "streak": "int default 0" "is_active": "bool default true" # Reference to another table "user_id": "ref users required" # Reference with cascade delete "post_id": "ref posts required on_delete cascade" # Indexed column "slug": "string required index"
enum type always requires object form because you need to specify the values array.
{
"tables": {
"users": {
"columns": {
"name": "string required",
"bio": "text",
"avatar": "file",
"streak": "int default 0"
},
"auth_table": true
},
"habits": {
"columns": {
"user_id": "ref users required on_delete cascade",
"name": "string required",
"color": "string default #3b82f6",
"archived": "bool default false"
},
"access": { "read": "owner", "create": "authenticated", "update": "owner", "delete": "owner" },
"owner_field": "user_id"
},
"completions": {
"columns": {
"habit_id": "ref habits required on_delete cascade",
"user_id": "ref users required",
"date": "date required"
},
"access": { "read": "owner", "create": "authenticated", "update": "owner", "delete": "owner" },
"owner_field": "user_id",
"unique": [["habit_id", "date"]]
}
}
}