Browse Source

add specs for delete range on backend and cut the (large) feed from stream

dxt 2 years ago
parent
commit
91f0d8891e
4 changed files with 14 additions and 7 deletions
  1. 2 1
      include/api.hrl
  2. 2 1
      include/backend.hrl
  3. 2 1
      include/stream.hrl
  4. 8 4
      src/kvs.erl

+ 2 - 1
include/api.hrl

@@ -1,7 +1,8 @@
 -ifndef(API_HRL).
 -ifndef(API_HRL).
 -define(API_HRL, true).
 -define(API_HRL, true).
 -define(API,[start/0,stop/0,leave/0,leave/1,destroy/0,destroy/1,
 -define(API,[start/0,stop/0,leave/0,leave/1,destroy/0,destroy/1,
-             join/0,join/1,modules/0,cursors/0,get/2,get/3,put/1,put/2,index/3,index/4,match/1,match/2,index_match/2,index_match/3,delete/2,delete/3,
+             join/0,join/1,modules/0,cursors/0,get/2,get/3,put/1,put/2,index/3,index/4,match/1,match/2,index_match/2,index_match/3,
+             delete/2,delete/3,delete_range/3,
              table/1,tables/0,dir/0,initialize/2,seq/2,all/1,all/2,count/1,ver/0]).
              table/1,tables/0,dir/0,initialize/2,seq/2,all/1,all/2,count/1,ver/0]).
 -include("metainfo.hrl").
 -include("metainfo.hrl").
 -spec seq(atom() | [], integer() | []) -> term().
 -spec seq(atom() | [], integer() | []) -> term().

+ 2 - 1
include/backend.hrl

@@ -1,6 +1,6 @@
 -ifndef(BACKEND_HRL).
 -ifndef(BACKEND_HRL).
 -define(BACKEND_HRL, true).
 -define(BACKEND_HRL, true).
--define(BACKEND, [db/0,get/3,put/1,put/2,delete/3,index/3,dump/0,start/0,stop/0,destroy/0,destroy/1,
+-define(BACKEND, [db/0,get/3,put/1,put/2,delete/3,delete_range/3,index/3,dump/0,start/0,stop/0,destroy/0,destroy/1,keys/2,
                   join/2,leave/0,leave/1,dir/0,create_table/2,add_table_index/2,seq/2,all/2,count/1,version/0,match/1,index_match/2]).
                   join/2,leave/0,leave/1,dir/0,create_table/2,add_table_index/2,seq/2,all/2,count/1,version/0,match/1,index_match/2]).
 -compile({no_auto_import,[get/1,put/2]}).
 -compile({no_auto_import,[get/1,put/2]}).
 -include("kvs.hrl").
 -include("kvs.hrl").
@@ -8,6 +8,7 @@
 -spec put(tuple() | list(tuple()), #kvs{}) -> ok | {error,any()}.
 -spec put(tuple() | list(tuple()), #kvs{}) -> ok | {error,any()}.
 -spec get(term() | any(), any(), #kvs{}) -> {ok,any()} | {error,not_found}.
 -spec get(term() | any(), any(), #kvs{}) -> {ok,any()} | {error,not_found}.
 -spec delete(term(), any(), #kvs{}) -> ok | {error,not_found}.
 -spec delete(term(), any(), #kvs{}) -> ok | {error,not_found}.
+-spec delete_range(term(), any(), #kvs{}) -> ok | {error,not_found}.
 -spec dump() -> ok.
 -spec dump() -> ok.
 -spec start() -> ok.
 -spec start() -> ok.
 -spec stop() -> ok.
 -spec stop() -> ok.

+ 2 - 1
include/stream.hrl

@@ -3,7 +3,7 @@
 -include("kvs.hrl").
 -include("kvs.hrl").
 -include("cursors.hrl").
 -include("cursors.hrl").
 -define(STREAM, [top/1, top/2, bot/1, bot/2, next/1, next/2, prev/1, prev/2, drop/1, drop/2, take/1, take/2, append/2, append/3, feed/1, feed/2,
 -define(STREAM, [top/1, top/2, bot/1, bot/2, next/1, next/2, prev/1, prev/2, drop/1, drop/2, take/1, take/2, append/2, append/3, feed/1, feed/2,
-                 load_reader/1, load_reader/2, writer/1, writer/2, reader/1, reader/2, save/1, save/2, add/1, add/2, remove/2, remove/3]).
+                 load_reader/1, load_reader/2, writer/1, writer/2, reader/1, reader/2, save/1, save/2, add/1, add/2, remove/2, remove/3, cut/1, cut/2]).
 
 
 -spec top(#reader{})  -> #reader{}.
 -spec top(#reader{})  -> #reader{}.
 -spec bot(#reader{})  -> #reader{}.
 -spec bot(#reader{})  -> #reader{}.
@@ -19,4 +19,5 @@
 -spec add(#writer{}) -> #writer{}.
 -spec add(#writer{}) -> #writer{}.
 -spec append(tuple(),term()) -> any().
 -spec append(tuple(),term()) -> any().
 -spec remove(tuple(),term()) -> integer().
 -spec remove(tuple(),term()) -> integer().
+-spec cut(term(), list()) -> ok.
 -endif.
 -endif.

+ 8 - 4
src/kvs.erl

@@ -28,8 +28,7 @@
          fields/1,
          fields/1,
          defined/2,
          defined/2,
          field/2,
          field/2,
-         setfield/3,
-         cut/2]).
+         setfield/3]).
 
 
 -export([join/2, seq/3]).
 -export([join/2, seq/3]).
 
 
@@ -124,13 +123,16 @@ get(RecordName, Key, #kvs{mod = Mod, db = Db}) ->
 delete(Tab, Key, #kvs{mod = Mod, db = Db}) ->
 delete(Tab, Key, #kvs{mod = Mod, db = Db}) ->
     Mod:delete(Tab, Key, Db).
     Mod:delete(Tab, Key, Db).
 
 
+delete_range(Feed, Last, #kvs{mod=DBA, db=Db}) ->
+    DBA:delete_range(Feed,Last,Db).
+
 count(Tab, #kvs{mod = DBA}) -> DBA:count(Tab).
 count(Tab, #kvs{mod = DBA}) -> DBA:count(Tab).
 
 
 index(Tab, Key, Value, #kvs{mod = DBA}) ->
 index(Tab, Key, Value, #kvs{mod = DBA}) ->
     DBA:index(Tab, Key, Value).
     DBA:index(Tab, Key, Value).
 
 
 keys(Feed, #kvs{mod = DBA, db = Db}) ->
 keys(Feed, #kvs{mod = DBA, db = Db}) ->
-    DBA:keys(Feed, Db).        
+    DBA:keys(Feed, Db).
 
 
 match(Record, #kvs{mod = DBA}) ->
 match(Record, #kvs{mod = DBA}) ->
     DBA:match(Record).
     DBA:match(Record).
@@ -193,7 +195,9 @@ save(X)                      -> (kvs_stream()):save(X).
 
 
 save(X,#kvs{db = Db})        -> (kvs_stream()):save(X,Db).
 save(X,#kvs{db = Db})        -> (kvs_stream()):save(X,Db).
 
 
-cut(X, Y)                    -> (kvs_stream()):cut(X, Y).
+cut(X)                       -> (kvs_stream()):cut(X).
+
+cut(X,#kvs{db = Db})         -> (kvs_stream()):cut(X, Db).
 
 
 add(X)                       -> (kvs_stream()):add(X).
 add(X)                       -> (kvs_stream()):add(X).