From 1b06ca384aec3a61c797294c6b363a3191a74829 Mon Sep 17 00:00:00 2001 From: Coder12a <38924418+Coder12a@users.noreply.github.com> Date: Sun, 11 Nov 2018 23:48:15 -0600 Subject: [PATCH] Set flushing to false --- README.md | 52 ++++++++++++++++++++++++++++++++++++++++------------ colddb.lua | 6 ++++-- 2 files changed, 44 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 2535620..a02cfb2 100644 --- a/README.md +++ b/README.md @@ -2,20 +2,18 @@ ColdDB =========== ColdDB is a minetest mod that implements a serverless, asynchronous, NoSQL database engine.
-It provides a key or key-value storage system using plain Lua tables. It also can iterate through the keys.
-It is not required to add this mod to secure.trusted_mods this mod will still work. +It provides a key or key-value storage system using plain Lua tables, also it can iterate through the keys.
Usage =========== -Copy *colddb.lua* file to your minetest mod or game. Copy the code from colddb's init file to your mods init file
-Then create a lua file for handling database's or any file you like.
+Copy both *colddb.lua* and *async* files to your minetest mod or game. Copy the code from colddb's init file to your mods init file
Write this code in your lua file. 1. create a directory and link it as a database. ```lua coldbase = colddb.get_db("mydb") ``` -2. added an extra folder to the directory. every new file will be added to the global tag(folder). +2. add an extra folder to the directory. every new file will be added to the global tag(folder). ```lua colddb.add_global_tag(coldbase,"ips") ``` @@ -54,15 +52,15 @@ coldbase.add_to_mem_pool = true ```lua coldbase.indexes = true ``` -9. only if coldbase.indexes == true. returns the amount of keys are in the indexing file. +9. only if coldbase.indexes is true. returns the amount of keys that are in the indexing file. ```lua colddb.get_count(coldbase) ``` -10. only if coldbase.indexes == true. iterates through the indexing file(breaks and ends if it reached the end of the file). +10. only if coldbase.indexes is true. iterates through the indexing file(breaks and ends if it reaches the end of the file). ```lua colddb.iterate_index_table(coldbase,nil,func_list_keys,nil) ``` -11. adds folders which can be used in other functions that have tag_name arg. +11. adds a folder which can be used in other functions that have tag_name arg. ```lua colddb.add_tag(coldbase,"Extra_Folder",{"Extra","Folder"}) ``` @@ -110,7 +108,7 @@ minetest.register_chatcommand("ip", { func = function(name, param) -- Get the ip record asynchronously. colddb.get(ip_db,param,nil,function(record) - -- If record is contains data send it to the player. + -- If database contains the record data then send it to the player. if record then minetest.chat_send_player(name,string.format("%s:%s",param,record)) else @@ -143,35 +141,65 @@ API - **colddb.add_tag(db,name,tag)** - - **colddb.get_or_add_tag(db,name,tag)** + - + + - **colddb.get_or_add_tag(db,name,tag) --> tag_name** + + Returns a tag or creates a new one if does not exist. - **colddb.remove_tag(db,name)** - - **colddb.get_count(db,tag_name)** + Removes a tag. + + - **colddb.get_count(db,tag_name) --> count** + + Returns the count from the index table file. - **colddb.iterate_index_table(db,begin_func,func_on_iterate,end_func,args,tag_name)** - - **begin_func(args)** + - function iterates through the index table file. + + - **begin_func(args) --> args** + + - function that is ran before the loop begins. - **func_on_iterate(key,index,args)** + - function that is ran in the for loop. + - **end_func(args)** + + - end function that is ran after the for loop ends. - **colddb.set(db,name,_table,tag_name)** + - Writes data to the database. Key-Value. + - **colddb.set_key(db,name,tag_name)** + - Writes data to the database. Key-nil. + - **colddb.get(db,name,tag_name,callback(arg))** + - Returns specified data from the database in a callback function. + - **colddb.get_key(db,name,tag_name,callback(arg))** + - Returns if the key exist in the database. + - **colddb.remove(db,name,tag_name)** + - Deletes the specified data from the database. + - **Database object fields** - **indexes** + - If truth the database makes a indexing file for keys. + - **add_to_mem_pool** + + - If truth when you get keys or values it gets cached in the memory for faster access next time. License =========== diff --git a/colddb.lua b/colddb.lua index 07d92a8..5c1e734 100644 --- a/colddb.lua +++ b/colddb.lua @@ -324,6 +324,7 @@ function colddb.append_index_table(db,key,tag_name) local fl = f.file if f.needs_flushing == true then fl:flush() + f.needs_flushing = false end db.indexes_pool[cs].needs_flushing = true fl:seek("end") @@ -337,6 +338,7 @@ function colddb.append_index_table(db,key,tag_name) local fl = f.file if f.needs_flushing == true then fl:flush() + f.needs_flushing = false end db.indexes_pool[cs].needs_flushing = true local c = 0 @@ -367,7 +369,7 @@ function colddb.get_count(db,tag_name) local fl = f.file if f.needs_flushing == true then fl:flush() - f.needs_flushing = true + f.needs_flushing = false end fl:seek("set") local count = tonumber(fl:read("*l")) @@ -429,7 +431,7 @@ function colddb.iterate_index_table(db,begin_func,func_on_iterate,end_func,args, local fl = f.file if f.needs_flushing == true then fl:flush() - f.needs_flushing = true + f.needs_flushing = false end -- Get count fl:seek("set")