Models & Schemas
Define a model, types, constraints, relations, migrations.
● ● ●
use runique::prelude::*;
model! {
Product,
table: "product",
pk: id => i32,
fields: {
// Basic types
name: String [required, max_len(255)],
slug: String [required, unique, max_len(255)],
description: text [nullable],
price: f64 [required],
stock: i32 [required, default(0)],
active: bool [required, default(true)],
// Foreign key
category_id: i32 [required, fk(category.id, cascade)],
// Automatic timestamps
created_at: datetime [auto_now],
updated_at: datetime [auto_now_update],
}
}
[required] NOT NULL field
[nullable] NULL field
[unique] UNIQUE constraint
[max_len(N)] VARCHAR(N)
[default(value)] SQL default value
[auto_now] CURRENT_TIMESTAMP on creation
[auto_now_update] CURRENT_TIMESTAMP on each update
[fk(table.col, cascade)] foreign key with ON DELETE CASCADE
[fk(table.col, null)] foreign key with ON DELETE SET NULL
model! {
Article,
table: "article",
pk: id => i32,
fields: { title: String [required] }
}
// Enables Article::objects.all(), .filter(), .get(), etc.
impl_objects!(Entity);