diff --git a/src/subscriber.zig b/src/subscriber.zig index 69df85b..cb743f6 100644 --- a/src/subscriber.zig +++ b/src/subscriber.zig @@ -198,12 +198,21 @@ const FrameHandler = struct { // update per-DID state after successful commit validation if (is_commit and uid > 0) { - if (commit_data_cid) |data_cid| { - if (commit_rev) |rev| { - dp.updateAccountState(uid, rev, data_cid) catch |err| { - log.debug("account state update failed: {s}", .{@errorName(err)}); - }; - } + if (commit_rev) |rev| { + // encode raw CID bytes as hex for TEXT storage + const cid_raw = commit_data_cid orelse &.{}; + var cid_hex: [128]u8 = undefined; + const cid_str: []const u8 = if (cid_raw.len > 0 and cid_raw.len * 2 <= cid_hex.len) blk: { + const hex = "0123456789abcdef"; + for (cid_raw, 0..) |b, i| { + cid_hex[i * 2] = hex[b >> 4]; + cid_hex[i * 2 + 1] = hex[b & 0x0f]; + } + break :blk cid_hex[0 .. cid_raw.len * 2]; + } else ""; + dp.updateAccountState(uid, rev, cid_str) catch |err| { + log.debug("account state update failed: {s}", .{@errorName(err)}); + }; } } diff --git a/src/validator.zig b/src/validator.zig index 8c900ea..6f3eba8 100644 --- a/src/validator.zig +++ b/src/validator.zig @@ -184,7 +184,7 @@ pub const Validator = struct { return .{ .valid = true, .skipped = false, - .data_cid = null, + .data_cid = result.commit_cid, .commit_rev = result.commit_rev, }; }