add transaction begin types

This commit is contained in:
Muki Kiboigo
2026-07-21 08:55:52 -07:00
parent 70749a8077
commit a38ca108bd
2 changed files with 11 additions and 6 deletions

View File

@@ -126,7 +126,7 @@ pub fn get(self: *SqliteCache, arena: std.mem.Allocator, req: CacheRequest) !?Ca
const conn = try self.pool.acquire();
defer self.pool.release(conn);
try conn.begin();
try conn.begin(.immediate);
defer conn.rollback() catch {};
var entry = try conn.row(
@@ -252,7 +252,7 @@ pub fn put(self: *SqliteCache, meta: CachedMetadata, body: []const u8) !void {
const conn = try self.pool.acquire();
defer self.pool.release(conn);
try conn.begin();
try conn.begin(.immediate);
defer conn.rollback() catch {};
try conn.exec("delete from metadata where url = $1", .{meta.url});
@@ -327,7 +327,7 @@ pub fn renew(self: *SqliteCache, _: std.mem.Allocator, req: RenewResponse) !void
const conn = try self.pool.acquire();
defer self.pool.release(conn);
try conn.begin();
try conn.begin(.immediate);
defer conn.rollback() catch {};
const exists = try conn.row("select 1 from metadata where url = $1", .{req.url});

View File

@@ -65,7 +65,7 @@ pub const Migrations = struct {
return start;
}
try conn.begin();
try conn.begin(.immediate);
errdefer conn.rollback() catch {};
for (migrations[start..], start..) |migration, i| {
@@ -168,8 +168,13 @@ pub const Conn = struct {
return .{ .stmt = stmt.?, .conn = self.conn };
}
pub fn begin(self: Conn) !void {
try self.exec("begin", .{});
pub const BeginKind = enum { deferred, immediate, exclusive };
pub fn begin(self: Conn, kind: BeginKind) !void {
switch (kind) {
.deferred => try self.exec("begin deferred", .{}),
.immediate => try self.exec("begin immediate", .{}),
.exclusive => try self.exec("begin exclusive", .{}),
}
}
pub fn commit(self: Conn) !void {