Home

Awesome

lmodbolt

boltdb/bolt bindings for Lua.

Usage

package main

import (
	"ofunc/lmodbolt"
	"ofunc/lua/util"
)

func main() {
	l := util.NewState()
	l.Preload("bolt", lmodbolt.Open)
	util.Run(l, "main.lua")
}
local bolt = require 'bolt'

local db = bolt.open('test.db')
db:update(function(tx)
	local demo = tx:bucket('demo')
	demo:set('foo', {
		id = 123;
		name = 'test';
		valid = true;
	})

	local foo = tx:bucket('demo'):get('foo')
	print(foo.id, foo.name, foo.valid)
end)
db:close()

Dependencies

Documentation

bolt.open(path)

Creates and opens a database at the given path. If the file does not exist then it will be created automatically.

db:close()

Releases all database resources. All transactions must be closed before closing the database.

db:view(f)

Executes the function f within the context of a managed read-only transaction. Any error in function f is returned from the view method.

db:update(f)

Executes the function f within the context of a read-write managed transaction. If no error in the function f then the transaction is committed. Otherwise the entire transaction is rolled back. Any error in function f is returned from the update method.

tx:writeto(w)

Writes the entire database to a writer.

c:bucket(key)

Retrieves a nested bucket by key. If the bucket does not exist then it will be created automatically. c is a tx or a bucket.

c:buckets([key])

Returns an iterator that can traverse over all key/bucket pairs (start from key) in a bucket in sorted order. c is a tx or a bucket.

c:delbucket(key)

Deletes a bucket at the given key. c is a tx or a bucket.

bucket:get(key)

Retrieves the value for a key in the bucket.

bucket:set(key, value)

Sets the value for the key in the bucket. If the key exist then it's previous value will be overwritten.

bucket:pairs([key])

Returns an iterator that can traverse over all key/value pairs (start from key) in a bucket in sorted order.