Skip to content

API Reference

Complete API documentation for Sleet ORM.

Overview

Sleet ORM provides a fluent, type-safe interface for database operations. The API is organized into several key areas:

Schema Definition

sl.table(name, columns)

Define a table schema.

Parameters:

  • name (string) - Table name
  • columns (table) - Column definitions

Returns: Table schema object

lua
local players = sl.table('players', {
    id = sl.serial().primaryKey(),
    name = sl.varchar(255).notNull()
})

Column Methods

All column types support these chainable methods:

.primaryKey()

Mark column as primary key.

lua
id = sl.serial().primaryKey()

.notNull()

Add NOT NULL constraint.

lua
name = sl.varchar(255).notNull()

.unique()

Add UNIQUE constraint.

lua
email = sl.varchar(100).unique()

.default(value)

Set default value.

lua
active = sl.boolean().default(true)
money = sl.int().default(1000)

.defaultNow()

Set default to current timestamp (for timestamp columns).

lua
created_at = sl.timestamp().defaultNow()

.comment(text)

Add column comment.

lua
name = sl.varchar(255).comment('Player display name')

.references(column)

Create foreign key reference.

lua
player_id = sl.int().references(players.id)

.softDelete()

Mark column as soft delete timestamp.

lua
deleted_at = sl.timestamp().softDelete()

.onUpdate(value)

Auto-update column on row changes.

lua
updated_at = sl.timestamp().onUpdate(sl.sql('NOW()'))

Database Connection

sl.connect()

Create database connection using oxmysql.

Returns: Database connection object

lua
local db = sl.connect()

Query Building

The query builder provides methods for SELECT, INSERT, UPDATE, and DELETE operations.

Basic Structure

lua
-- SELECT
db.select([columns])
  .from(table)
  [.where(condition)]
  [.orderBy(column, direction)]
  [.limit(count)]
  [.offset(count)]
  .execute()

-- INSERT  
db.insert(table)
  .values(data)
  .execute()

-- UPDATE
db.update(table)
  .set(data)
  [.where(condition)]
  .execute()

-- DELETE
db.delete(table)
  [.where(condition)]
  .execute()

Raw SQL

sl.sql(query, params?)

Create raw SQL expression.

Parameters:

  • query (string) - SQL expression
  • params (table, optional) - Parameters for placeholders

Returns: Raw SQL object

lua
-- In SELECT
sl.sql('COUNT(*) as total')

-- With parameters
sl.sql('money + ?', { 500 })

-- In WHERE
sl.sql('created > DATE_SUB(NOW(), INTERVAL 7 DAY)')

Error Handling

All query operations can throw errors. Use pcall() for error handling:

lua
local success, result = pcall(function()
    return db.select()
        .from(s.players)
        .where(sl.eq(s.players.id, playerId))
        .execute()
end)

if success then
    -- Process result
else
    print('Query failed:', result)
end

Debugging

.toSQL()

Get generated SQL and parameters without executing.

lua
local query = db.select()
    .from(s.players)
    .where(sl.eq(s.players.active, true))

local sql, params = query.toSQL()
print('SQL:', sql)
print('Params:', json.encode(params))

Next Steps

Released under the MIT License.