|
@@ -143,7 +143,7 @@ link(Record,#kvs{mod=_Store}=Driver) ->
|
|
|
{ok, Exists} -> ensure_link(Exists, Driver);
|
|
|
{error, not_found} -> {error, not_found} end.
|
|
|
|
|
|
-add(Record, #kvs{mod=store_mnesia}=Driver) when is_tuple(Record) -> store_mnesia:add(Record);
|
|
|
+%add(Record, #kvs{mod=store_mnesia}=Driver) when is_tuple(Record) -> store_mnesia:add(Record);
|
|
|
add(Record, #kvs{mod=Store}=Driver) when is_tuple(Record) -> append(Record,Driver).
|
|
|
|
|
|
append(Record, #kvs{mod=_Store}=Driver) when is_tuple(Record) ->
|
|
@@ -332,7 +332,7 @@ id_seq(Tab) -> T = atom_to_list(Tab), case kvs:get(id_seq,T) of {ok,#id_seq{i
|
|
|
last_disc(T) -> list_to_atom(lists:concat([T,omitone(kvs:id_seq(list_to_atom(lists:concat([T,".tables"]))))])).
|
|
|
last_table(T) -> list_to_atom(lists:concat([T,omitone(lists:max(proplists:get_value(T,fold_tables(),[1])))])).
|
|
|
fold_tables() -> lists:foldl(fun(#table{name=X},Acc) ->
|
|
|
- wf:setkey(kvs:rname(X),1,Acc,{kvs:rname(X),[kvs:nname(X)|proplists:get_value(kvs:rname(X),Acc,[])]}) end,
|
|
|
+ setkey(kvs:rname(X),1,Acc,{kvs:rname(X),[kvs:nname(X)|proplists:get_value(kvs:rname(X),Acc,[])]}) end,
|
|
|
[], kvs:tables()).
|
|
|
interval(L,R,Name) -> #interval{left=L,right=R,name=Name,last=last_table(rname(Name))}.
|
|
|
update_config(Table,Name) ->
|
|
@@ -344,3 +344,8 @@ update_config(Table,Name) ->
|
|
|
update_list(Table,[],Name) -> [ interval(top(Table)+1,limit(),Name) ];
|
|
|
update_list(Table,[#interval{}=CI|Tail],Name) -> [ interval(top(Table)+1,limit(),Name) ] ++
|
|
|
[ CI#interval{right=top(Table)} ] ++ Tail.
|
|
|
+
|
|
|
+setkey(Name,Pos,List,New) ->
|
|
|
+ case lists:keyfind(Name,Pos,List) of
|
|
|
+ false -> [New|List];
|
|
|
+ _Element -> lists:keyreplace(Name,Pos,List,New) end.
|