Skip to content

Collections

Named collections provide namespace isolation for your data.

NOTE

Collections are created lazily on first access. There is no explicit create step.

zig
const std = @import("std");
const zkv = @import("zkv");

pub fn main() !void {
    var da: std.heap.DebugAllocator(.{}) = .init;
    defer _ = da.deinit();
    const allocator = da.allocator();

    var db = try zkv.Database.open(allocator, .{
        .path = "examples/collections.zkv",
    });
    defer db.close();

    const users = db.collection("users");
    const posts = db.collection("posts");

    try users.set("1:name", "Alice");
    try users.set("2:name", "Bob");
    try posts.set("1:title", "Hello");

    // Collection isolation
    std.debug.print("Users: {}, Posts: {}\n", .{ users.count(), posts.count() });

    // Entries
    var entries = users.entries();
    defer entries.deinit(allocator);

    // Keys and values
    var keys = users.keys();
    defer keys.deinit(allocator);

    // Contains
    std.debug.print("users contains '1': {}\n", .{users.exists("1")});

    // Clear
    _ = try posts.clear();
}

Released under the MIT License.