Skip to content

Tables

Terminal window
alab table blog post

Define tables using the table({...}) function:

export default table({
id: col.id(),
title: col.string(),
body: col.text(),
published: col.boolean().default(false),
author: col.belongs_to("auth.user"),
});

Chain modifiers to add common functionality:

schemas/blog/article.js
export default table({})
.timestamps()
.soft_delete()
.searchable(["title", "content"]);
ModifierWhat it does
.timestamps()Adds created_at and updated_at columns (auto-managed)
.auditable()Adds created_by and updated_by UUID columns
.soft_delete()Adds nullable deleted_at column for soft deletes
.sortable()Adds position integer column for manual ordering
.sort_by([...])Specifies default ORDER BY columns for queries
.searchable([...])Marks columns for full-text search indexing
.filterable([...])Specifies which columns can be filtered in queries
.unique("col1", "col2")Creates composite unique constraint
.index("col1", "col2")Creates composite index
.many_to_many("other.table")Defines many-to-many relationship (auto-creates join table)