|
@@ -1,6 +1,94 @@
|
|
|
-module(kvs).
|
|
|
--copyright('Synrc Research Center s.r.o.').
|
|
|
--compile([export_all, nowarn_export_all]).
|
|
|
+%%-copyright('Synrc Research Center s.r.o.').
|
|
|
+
|
|
|
+
|
|
|
+-export([start/0, stop/0]). % service
|
|
|
+-export([destroy/0, join/0, join/1, init/2]). % schema change
|
|
|
+-export([modules/0, containers/0, tables/0, table/1, version/0]). % meta info
|
|
|
+-export([create/1, add/1, link/1, unlink/1, remove/2]). % chain ops
|
|
|
+-export([put/1, put/2, delete/2, next_id/2]). % raw ops
|
|
|
+-export([get/2, get/3, index/3]). % read ops
|
|
|
+-export([load_db/1, save_db/1]). % import/export
|
|
|
+
|
|
|
+-export([
|
|
|
+ change_storage/2,
|
|
|
+ entries/3,
|
|
|
+ count/1,
|
|
|
+ all/1,
|
|
|
+ fold/6,
|
|
|
+ info/1,
|
|
|
+ dir/0,
|
|
|
+
|
|
|
+ generation/2,
|
|
|
+ norm/3,
|
|
|
+ limit/2,
|
|
|
+ forbid/1,
|
|
|
+
|
|
|
+ change_storage/1, %% todo check what exports not needs
|
|
|
+ change_storage/3,
|
|
|
+ dir/1,
|
|
|
+ info/2,
|
|
|
+ ensure_link/2,
|
|
|
+ append/2,
|
|
|
+ reverse/1,
|
|
|
+ relink/3,
|
|
|
+ takeoff/3,
|
|
|
+ do_remove/2,
|
|
|
+ fold/7,
|
|
|
+ entries/4,
|
|
|
+ add_seq_ids/0,
|
|
|
+ count/2,
|
|
|
+ all/2,
|
|
|
+ save/2,
|
|
|
+ load/1,
|
|
|
+ notify/2,
|
|
|
+ config/1,
|
|
|
+ config/2,
|
|
|
+ config/3,
|
|
|
+ log_modules/0,
|
|
|
+ log/4,
|
|
|
+ info/3,
|
|
|
+ warning/3,
|
|
|
+ error/3,
|
|
|
+ dump/0,
|
|
|
+ dump/1,
|
|
|
+ dump_info/1,
|
|
|
+ dump_format/1,
|
|
|
+ range/2,
|
|
|
+ topleft/2,
|
|
|
+ last/2,
|
|
|
+ find/3,
|
|
|
+ lookup/2,
|
|
|
+ rotate_new/0,
|
|
|
+ rotate/1,
|
|
|
+ load_partitions/0,
|
|
|
+ rnorm/2,
|
|
|
+ rlist/1,
|
|
|
+ shd/1,
|
|
|
+ wait/0,
|
|
|
+ stl/1,
|
|
|
+ dat/1,
|
|
|
+ omitone/1,
|
|
|
+ limit/0,
|
|
|
+ load_config/0,
|
|
|
+ store/2,
|
|
|
+ rname/1,
|
|
|
+ nname/1,
|
|
|
+ fold/1,
|
|
|
+ top/1,
|
|
|
+ name/1,
|
|
|
+ id_seq/1,
|
|
|
+ last_disc/1,
|
|
|
+ last_table/1,
|
|
|
+ fold_tables/0,
|
|
|
+ range/3,
|
|
|
+ update_config/2,
|
|
|
+ update_list/3,
|
|
|
+ setkey/4,
|
|
|
+ test/0,
|
|
|
+ test/1
|
|
|
+]).
|
|
|
+
|
|
|
|
|
|
%-include_lib("stdlib/include/qlc.hrl").
|
|
|
|
|
@@ -50,7 +138,7 @@ limit(_Table,_Key) -> 25000.
|
|
|
|
|
|
forbid(user) -> 5;
|
|
|
forbid(comment) -> 5;
|
|
|
-forbid(____) -> 5.
|
|
|
+forbid(_) -> 5.
|
|
|
|
|
|
% Implementation
|
|
|
|
|
@@ -93,7 +181,6 @@ create(ContainerName, Id, Driver) ->
|
|
|
Id.
|
|
|
|
|
|
ensure_link(Record, #kvs{mod=_Store}=Driver) ->
|
|
|
-
|
|
|
Id = element(2,Record),
|
|
|
Type = rname(element(1,Record)),
|
|
|
CName = element(#iterator.container,Record),
|
|
@@ -244,7 +331,7 @@ fold(Fun,Acc,Table,Start,Count,Direction,Driver) ->
|
|
|
entries({error,_},_,_,_) -> [];
|
|
|
entries({ok,T},N,C,Driver) ->
|
|
|
lists:reverse(fold(fun(A,Acc) -> [A|Acc] end,[],N,element(#container.top,T),C,#iterator.prev,Driver)).
|
|
|
-
|
|
|
+
|
|
|
|
|
|
add_seq_ids() ->
|
|
|
Init = fun(Key) ->
|