package examples import "core:fmt" import "core:os" import "core:sys/posix" import mdb "../../lmdb" // 0o660 DB_MODE :: posix.mode_t{.IWGRP, .IRGRP, .IWUSR, .IRUSR} DB_PATH :: "out/debug/lmdb_example_db" main :: proc() { environment: ^mdb.Env // Create environment for lmdb mdb.panic_on_err(mdb.env_create(&environment)) // Create directory for databases. Won't do anything if it already exists. os.make_directory(DB_PATH) // Open the database files (creates them if they don't already exist) mdb.panic_on_err(mdb.env_open(environment, DB_PATH, {}, DB_MODE)) // Transactions txn_handle: ^mdb.Txn db_handle: mdb.Dbi // Put transaction key := 7 key_val := mdb.blittable_val(&key) put_data := 12 put_data_val := mdb.blittable_val(&put_data) mdb.panic_on_err(mdb.txn_begin(environment, nil, {}, &txn_handle)) mdb.panic_on_err(mdb.dbi_open(txn_handle, nil, {}, &db_handle)) mdb.panic_on_err(mdb.put(txn_handle, db_handle, &key_val, &put_data_val, {})) mdb.panic_on_err(mdb.txn_commit(txn_handle)) // Get transaction data_val: mdb.Val mdb.panic_on_err(mdb.txn_begin(environment, nil, {}, &txn_handle)) mdb.panic_on_err(mdb.get(txn_handle, db_handle, &key_val, &data_val)) data_cpy := mdb.blittable_copy(&data_val, int) mdb.panic_on_err(mdb.txn_commit(txn_handle)) fmt.println("Get result:", data_cpy) }