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"));