search for standard sites pub-search.waow.tech
search zig blog atproto
11
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix: use individual exec calls for embedded_at updates

queryBatch approach had lifetime/type issues with args.
individual exec() calls are simpler and each gets its own
db.query span for observability.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

zzstoatzz 86db334f 9a8380bf

+7 -25
+7 -25
backend/src/ingest/embedder.zig
··· 165 165 return error.TpufUpsertFailed; 166 166 }; 167 167 168 - // mark docs as embedded in turso (single batch call) 169 - var stmts = allocator.alloc(db.Client.Statement, docs.items.len) catch { 170 - logfire.warn("embedder: failed to alloc stmts for embedded_at update", .{}); 171 - return docs.items.len; 172 - }; 173 - defer allocator.free(stmts); 174 - 175 - // allocate args arrays so they survive until queryBatch executes 176 - var args_ptrs = allocator.alloc([1][]const u8, docs.items.len) catch { 177 - logfire.warn("embedder: failed to alloc args for embedded_at update", .{}); 178 - return docs.items.len; 179 - }; 180 - defer allocator.free(args_ptrs); 181 - 182 - for (docs.items, 0..) |doc, i| { 183 - args_ptrs[i] = .{doc.uri}; 184 - stmts[i] = .{ 185 - .sql = "UPDATE documents SET embedded_at = strftime('%Y-%m-%dT%H:%M:%S', 'now') WHERE uri = ?", 186 - .args = &args_ptrs[i], 168 + // mark docs as embedded in turso (one exec per doc — simpler than batch) 169 + for (docs.items) |doc| { 170 + client.exec( 171 + "UPDATE documents SET embedded_at = strftime('%Y-%m-%dT%H:%M:%S', 'now') WHERE uri = ?", 172 + &.{doc.uri}, 173 + ) catch |err| { 174 + logfire.warn("embedder: failed to mark {s}: {}", .{ doc.uri, err }); 187 175 }; 188 176 } 189 - 190 - var batch_result = client.queryBatch(stmts) catch |err| { 191 - logfire.warn("embedder: embedded_at batch update failed: {}, docs still embedded in tpuf", .{err}); 192 - return docs.items.len; 193 - }; 194 - batch_result.deinit(); 195 177 196 178 return docs.items.len; 197 179 }