Просмотр исходного кода

Don't save something without id.

dxt 4 лет назад
Родитель
Сommit
e937ec89f0
2 измененных файлов с 8 добавлено и 7 удалено
  1. 7 6
      src/stores/kvs_st.erl
  2. 1 1
      test/fd_test.exs

+ 7 - 6
src/stores/kvs_st.erl

@@ -39,17 +39,18 @@ feed(F,#reader{cache=C1}=R,Acc) ->
     _ -> Acc ++ A
   end.
 
-load_reader(Id) ->
-    case kvs:get(reader,Id) of
-         {ok,#reader{}=C} -> C;
-              _ -> #reader{id=[]} end.
+load_reader(Id) -> case kvs:get(reader,Id) of {ok,#reader{}=C} -> C; _ -> #reader{id=kvs:seq([],[])} end.
 
 writer(Id) -> case kvs:get(writer,Id) of {ok,W} -> W; {error,_} -> #writer{id=Id} end.
 reader(Id) -> case kvs:get(writer,Id) of
   {ok,#writer{id=Feed, count=Cn, cache=Ch}} ->
     read_it(#reader{id=kvs:seq([],[]),feed=key(Feed),count=Cn,cache=Ch},seek_it(key(Feed)));
-  {error,_} -> save(#writer{id=Id}), reader(Id) end.
-save(C) -> NC = c4(C,[]), kvs:put(NC), NC.
+  {error,_} -> 
+    W = save(#writer{id=Id}), reader(W#writer.id) end.
+save(C) ->
+  N1 = case id(C) of [] -> si(C,kvs:seq([],[])); _ -> C end,
+  NC = c4(N1,[]),
+  kvs:put(NC), NC.
 
 % add
 

+ 1 - 1
test/fd_test.exs

@@ -33,7 +33,7 @@ defmodule Fd.Test do
         assert KVS.reader(feed: "//crm", count: 0, dir: 0, args: [], cache: {:msg, ^dtop, "//crm/duck"}) = :kvs.reader("/crm")
         assert KVS.reader(feed: "//noroute", count: 0, dir: 0, args: []) = :kvs.reader("/noroute")
         assert KVS.reader(feed: "//", count: 0, dir: 0, args: [], cache: {:msg, ^dtop, "//crm/duck"}) = :kvs.reader("/")
-        assert KVS.reader(feed: "", count: 0, dir: 0, args: [], cache: []) = :kvs.reader([])
+        assert KVS.reader(count: 0, dir: 0, args: [], cache: []) = :kvs.reader([])
     end
 
     test "range", kvs do