comptime sql bindings for zig
ziglang sql
at main 42 lines 979 B view raw view rendered
1# zql 2 3comptime sql bindings for zig. 4 5```zig 6const zql = @import("zql"); 7 8const User = struct { id: i32, name: []const u8 }; 9 10const Q = zql.Query("SELECT id, name FROM users WHERE id = :id"); 11 12// Q.positional = "SELECT id, name FROM users WHERE id = ?" 13// Q.columns = .{ "id", "name" } 14// Q.params = .{ "id" } 15 16pub fn getUser(db: anytype, user_id: i32) ?User { 17 const row = db.query(Q.positional, Q.bind(.{ .id = user_id })) orelse return null; 18 return Q.fromRow(User, row); 19} 20``` 21 22## what it does 23 24| | | 25|-|-| 26| `Q.positional` | `:name``?` | 27| `Q.bind(.{...})` | struct → tuple in param order | 28| `Q.columns` | column names from SELECT | 29| `Q.fromRow(T, row)` | row → struct | 30 31## install 32 33```zig 34// build.zig.zon 35.zql = .{ 36 .url = "https://github.com/zzstoatzz/zql/archive/main.tar.gz", 37 .hash = "zql-0.0.1-alpha-xNRI4IRNAABUb9gLat5FWUaZDD5HvxAxet_-elgR_A_y", 38}, 39 40// build.zig 41exe.root_module.addImport("zql", b.dependency("zql", .{}).module("zql")); 42```