comptime sql bindings for zig
ziglang sql
Zig 100.0%
15 1 0

Clone this repository

https://tangled.org/zzstoatzz.io/zql
git@tangled.org:zzstoatzz.io/zql

For self-hosted knots, clone URLs may differ based on your setup.

README.md

zql#

comptime sql bindings for zig.

const zql = @import("zql");

const User = struct { id: i32, name: []const u8 };

const Q = zql.Query("SELECT id, name FROM users WHERE id = :id");

// Q.positional = "SELECT id, name FROM users WHERE id = ?"
// Q.columns = .{ "id", "name" }
// Q.params = .{ "id" }

pub fn getUser(db: anytype, user_id: i32) ?User {
    const row = db.query(Q.positional, Q.bind(.{ .id = user_id })) orelse return null;
    return Q.fromRow(User, row);
}

what it does#

Q.positional :name?
Q.bind(.{...}) struct → tuple in param order
Q.columns column names from SELECT
Q.fromRow(T, row) row → struct

install#

// build.zig.zon
.zql = .{
    .url = "https://github.com/zzstoatzz/zql/archive/main.tar.gz",
    .hash = "zql-0.0.1-alpha-xNRI4IRNAABUb9gLat5FWUaZDD5HvxAxet_-elgR_A_y",
},

// build.zig
exe.root_module.addImport("zql", b.dependency("zql", .{}).module("zql"));