Skip to content

DSL Advanced

Use advanced DSL queries and predicates for complex operations.

zig
const std = @import("std");
const sqlite = @import("sqlite");

const Account = sqlite.table("dsl_accounts", struct { id: i64, owner: []const u8, balance: i64 });

pub fn main() !void {
    var db = try sqlite.open(std.heap.page_allocator, "valid_10.db");
    defer db.close();
    try db.createTable(Account, .{ .if_not_exists = true });
    try db.truncate(Account);
    var a = try db.from(Account).insert(.{ .id = 1, .owner = "Alice", .balance = 100 });
    a.deinit();
    var b = try db.from(Account).insert(.{ .id = 2, .owner = "Bob", .balance = 200 });
    b.deinit();
    var filtered = try db.from(Account).where(Account.column("balance").gt(150)).fetchAll();
    defer filtered.deinit();
    try std.testing.expectEqual(@as(usize, 1), filtered.rowCount());
}

TIP

Run with: zig build run-10-dsl-advanced

Released under the MIT License.