Define Schema

This guide shows you how to define your database schema using CQL.

Basic Schema Definition

Create a schema file:

# src/db/schema.cr
AcmeDB = CQL::Schema.define(
  :acme_db,
  adapter: CQL::Adapter::SQLite,
  uri: ENV.fetch("DATABASE_URL", "sqlite3://./db/development.db")
) do
  table :users do
    primary :id, Int64
    column :name, String
    column :email, String
    column :created_at, Time, default: -> { Time.utc }
    column :updated_at, Time, default: -> { Time.utc }
  end
end

Column Types

Basic Types

Timestamps

Custom Defaults

Relationships

Foreign Keys

Join Tables

Indexes

Multiple Tables

Database Adapters

SQLite

PostgreSQL

MySQL

Environment-based Configuration

See Also

Last updated

Was this helpful?