| Type | SQLite | Options |
|---|---|---|
string | TEXT | max_length |
text | TEXT | Long-form content |
int | INTEGER | min, max |
float | REAL | min, max |
bool | INTEGER | Stored as 0/1 |
enum | TEXT+CHECK | values (required), default |
json | TEXT | Stored as JSON string |
date | TEXT | ISO 8601 date |
datetime | TEXT | ISO 8601 datetime |
ref | TEXT FK | Foreign key. on_delete: cascade / restrict / set_null |
file | TEXT | R2 file reference (URL) |
Add after the type in short-form, or as object keys:
required — NOT NULLunique — UNIQUE constraintindex — creates an index for faster queriesdefault <value> — default valueFor more control, use the full object form instead of short-form strings:
{
"price": {
"type": "float",
"required": true,
"min": 0,
"max": 99999,
"default": 0
},
"status": {
"type": "enum",
"values": ["draft", "published", "archived"],
"default": "draft",
"required": true
},
"author_id": {
"type": "ref",
"ref": "users",
"required": true,
"on_delete": "cascade"
}
}