Tauri SQLite ORM
API Reference
Quick reference for all ORM methods and functions
ORM Instance Methods
Query Builders
| Method | Returns | Description |
|---|---|---|
db.select(table, columns?) | SelectQueryBuilder | Start a SELECT query |
db.insert(table) | InsertQueryBuilder | Start an INSERT query |
db.update(table) | UpdateQueryBuilder | Start an UPDATE query |
db.delete(table) | DeleteQueryBuilder | Start a DELETE query |
db.upsert(table, data, conflictTarget) | Promise | Insert or update on conflict |
Utilities
| Method | Returns | Description |
|---|---|---|
db.transaction(callback) | Promise<T> | Execute operations in a transaction |
db.migrate(options?) | Promise<void> | Run database migrations |
db.migrateIfDirty() | Promise<boolean> | Run migrations only if schema changed |
db.isSchemaDirty() | Promise<{dirty, current, stored}> | Check if schema has changed |
db.$with(alias) | WithQueryBuilder | Start a CTE (Common Table Expression) |
SelectQueryBuilder Methods
| Method | Returns | Description |
|---|---|---|
.where(condition) | this | Filter results with a condition |
.orderBy(column, direction?) | this | Sort results (ASC or DESC) |
.limit(count) | this | Limit number of results |
.offset(count) | this | Skip first N results |
.distinct() | this | Return only distinct rows |
.groupBy(...columns) | this | Group results by columns |
.having(condition) | this | Filter grouped results |
.leftJoin(table, condition, alias) | this | Add a LEFT JOIN |
.innerJoin(table, condition, alias) | this | Add an INNER JOIN |
.include(relations) | this | Load relations |
.all() | Promise<T[]> | Execute and return all rows |
.get() | Promise<T | undefined> | Execute and return first row |
.first() | Promise<T | undefined> | Alias for .get() |
.exists() | Promise<boolean> | Check if any rows exist |
.count() | Promise<number> | Count matching rows |
.pluck(column) | Promise<T[]> | Get array of single column values |
.paginate(page, pageSize) | Promise<PaginationResult> | Get paginated results |
.toSQL() | {sql, params} | Get SQL without executing |
InsertQueryBuilder Methods
| Method | Returns | Description |
|---|---|---|
.values(data) | this | Set data to insert (single object or array) |
.returning(...columns) | this | Return specific columns after insert |
.returningAll() | Promise<T[]> | Return all columns after insert (array) |
.returningFirst() | Promise<T | undefined> | Return first inserted record (single object) |
.onConflictDoNothing(target?) | this | Ignore conflicts |
.onConflictDoUpdate(config) | this | Update on conflict (upsert) |
.execute() | Promise<Result> | Execute the insert |
.toSQL() | {sql, params} | Get SQL without executing |
UpdateQueryBuilder Methods
| Method | Returns | Description |
|---|---|---|
.set(data) | this | Set column values to update |
.where(condition) | this | Filter which rows to update (required!) |
.increment(column, value?) | this | Atomically increment a column |
.decrement(column, value?) | this | Atomically decrement a column |
.allowGlobalOperation() | this | Allow UPDATE without WHERE clause |
.returning(...columns) | this | Return specific columns after update |
.returningAll() | Promise<T[]> | Return all columns after update (array) |
.returningFirst() | Promise<T | undefined> | Return first updated record (single object) |
.execute() | Promise<Result> | Execute the update |
.toSQL() | {sql, params} | Get SQL without executing |
DeleteQueryBuilder Methods
| Method | Returns | Description |
|---|---|---|
.where(condition) | this | Filter which rows to delete (required!) |
.allowGlobalOperation() | this | Allow DELETE without WHERE clause |
.returning(...columns) | this | Return specific columns from deleted rows |
.returningAll() | Promise<T[]> | Return all columns from deleted rows (array) |
.returningFirst() | Promise<T | undefined> | Return first deleted record (single object) |
.execute() | Promise<Result> | Execute the delete |
.toSQL() | {sql, params} | Get SQL without executing |
Operators
Comparison
eq(column, value, alias?)- Equalne(column, value, alias?)- Not equalgt(column, value)- Greater thangte(column, value)- Greater than or equallt(column, value)- Less thanlte(column, value)- Less than or equalbetween(column, min, max)- Between range
Logical
and(...conditions)- AND conditionsor(...conditions)- OR conditionsnot(condition)- NOT condition
String
like(column, pattern)- LIKE patternilike(column, pattern)- Case-insensitive LIKEstartsWith(column, value)- Starts withendsWith(column, value)- Ends withcontains(column, value)- Contains substring
Array/List
inArray(column, values | subquery)- IN array or subquerynotIn(column, values | subquery)- NOT IN array or subquery
Null
isNull(column)- IS NULLisNotNull(column)- IS NOT NULL
Subquery
exists(subquery)- EXISTSnotExists(subquery)- NOT EXISTSeqSubquery(column, subquery)- Equal to subquerygtSubquery(column, subquery)- Greater than subquerygteSubquery(column, subquery)- Greater than or equal to subqueryltSubquery(column, subquery)- Less than subquerylteSubquery(column, subquery)- Less than or equal to subquery
Column Helpers
text(name, config?)- TEXT columninteger(name, config?)- INTEGER columnreal(name)- REAL columnblob(name, config?)- BLOB columnboolean(name)- BOOLEAN columnnumeric(name, config?)- NUMERIC columnenumType(name, values)- ENUM column
Aggregate Functions
count(column?)- COUNTcountDistinct(column)- COUNT DISTINCTsum(column)- SUMavg(column)- AVGmin(column)- MINmax(column)- MAXgroupConcat(column, separator?)- GROUP_CONCAT (SQLite-specific)
Subquery Helpers
subquery(query)- Convert query to subqueryscalarSubquery(query)- Scalar subquery for comparisons
Utility Functions
asTauriDatabase(db)- Type assertion for@tauri-apps/plugin-sqlDatabase when TypeScript reports structural incompatibility. Use:new TauriORM(asTauriDatabase(dbInstance), schema)sql- Raw SQL template literalasc(column)- Ascending sort helperdesc(column)- Descending sort helperrelations(table, callback)- Define table relations (v1)defineRelations(schema, callback)- Define all relations in one place (v2, from/to, many-without-one, through)defineRelationsPart(schema, callback)- Define a part of relations for large schemasthrough(column, junctionColumn, junctionTable)- Many-to-many via junction tableoptional: false- One relation required at type levelwhere: (alias) => Condition- Predefined filter on many relations
Type Helpers
InferSelectModel<T>- Infer SELECT result typeInferInsertModel<T>- Infer INSERT data typeInferRelationalSelectModel<TTable, TRelations, TWith, TAllRelations?>- Infer SELECT result type with relations from.include(with)
Error Classes
TauriORMError- Base error classQueryBuilderError- Query building errorsMissingWhereClauseError- Missing WHERE clauseValidationError- Validation errorsInsertValidationError- Insert validation errorsUpdateValidationError- Update validation errorsColumnNotFoundError- Column not foundTableNotFoundError- Table not foundMigrationError- Migration errorsRelationError- Relation errors