//! tpuf — a turbopuffer client for zig 0.16. //! //! requests are plain zig values serialized with `std.json`; tuples become //! arrays, so a v2 request body is written the way the docs show it: //! //! ```zig //! const result = try ns.query(alloc, .{ //! .rank_by = tpuf.rank.ann("vector", embedding), //! .top_k = 10, //! .filters = tpuf.filter.eq("kind", "summary"), //! .include_attributes = .{ "content", "created_at" }, //! }, .{}); //! defer result.deinit(); //! ``` //! //! responses keep their attributes dynamic (`Row`) because a namespace's //! schema is decided by whoever wrote to it, not by this library. const std = @import("std"); /// the transport tpuf borrows; re-exported so an application need not pin it twice. pub const zttp = @import("zttp"); pub const Client = @import("Client.zig"); pub const Namespace = @import("Namespace.zig"); pub const Keepalive = @import("Keepalive.zig"); pub const Export = @import("Export.zig"); pub const query = @import("query.zig"); pub const rank = query.rank; pub const filter = query.filter; pub const Row = query.Row; pub const Rows = query.Rows; pub const Id = query.Id; pub const Attributes = query.Attributes; pub const QueryResult = query.Result; pub const Billing = query.Billing; pub const Performance = query.Performance; pub const write = @import("write.zig"); pub const WriteResponse = write.Response; pub const id = @import("id.zig"); pub const Diagnostics = Client.Diagnostics; pub const Error = Client.Error; /// distance metric a namespace is created with. required on the first write. pub const DistanceMetric = enum { cosine_distance, euclidean_squared }; test { std.testing.refAllDecls(@This()); }