-
- pub fn open(self: *Self, name: [*c]const u8) void {
- _ = lmdb.mdb_env_create(&self.env);
- _ = lmdb.mdb_env_set_maxdbs(self.env, 10);
- _ = lmdb.mdb_env_set_mapsize(self.env, 1024 * 1024 * 1);
- _ = lmdb.mdb_env_open(self.env, name, lmdb.MDB_WRITEMAP, 0o664);
- // _ = lmdb.mdb_env_open(self.env, name, lmdb.MDB_NOSYNC | lmdb.MDB_WRITEMAP, 0o664);
- }
-
- pub fn close(self: *Self) void {
- lmdb.mdb_env_close(self.env);
- }
-
- pub fn begin(self: *Self, name: [*c]const u8) void {
- switch (lmdb.mdb_txn_begin(self.env, null, 0, &self.txn)) {
- 0 => {},
- else => |err| {
- std.debug.print("txn err: {}\n", .{err});
- },
- }
-
- // TODO: lmdb.MDB_INTEGERKEY?
- _ = lmdb.mdb_dbi_open(self.txn, name, lmdb.MDB_CREATE, &self.dbi);
- }
-
- pub fn commit(self: *Self) void {
- switch (lmdb.mdb_txn_commit(self.txn)) {
- 0 => {},
- lmdb.MDB_MAP_FULL => {
- std.debug.print("resize\n", .{});
- _ = lmdb.mdb_env_set_mapsize(self.env, 0);
- },
- else => |err| {
- std.debug.print("commit err: {}\n", .{err});
- },
- }
-
- // TODO: necessary?
- lmdb.mdb_dbi_close(self.env, self.dbi);
- }
-
- pub fn sync(self: *Self) void {
- switch (lmdb.mdb_env_sync(self.env, 1)) {
- 0 => {},
- else => |err| {
- std.debug.print("sync err: {}\n", .{err});
- },
- }
- }
-
- pub fn put(self: *Self, key: anytype, value: anytype) void {
- lmdb.put(self.txn, self.dbi, key, value);
- }
-
- pub fn get(self: *Self, key: anytype, comptime T: type) ?T {
- return lmdb.get(self.txn, self.dbi, key, T);
- }
-
- pub fn del(self: *Self, key: anytype) void {
- lmdb.del(self.txn, self.dbi, key);
- }
-
- pub fn has(self: *Self, key: anytype) bool {
- return lmdb.has(self.txn, self.dbi, key);
- }