Browse Source

user2 instead of person

There this a problem with person/Person conflict
Possible reason: lowercasing
Syndroms: mnesia crash
Namdak Tonpa 7 years ago
parent
commit
a44d4b928a
3 changed files with 46 additions and 46 deletions
  1. 1 1
      include/user.hrl
  2. 44 44
      src/kvs_stream.erl
  3. 1 1
      src/kvs_user.erl

+ 1 - 1
include/user.hrl

@@ -16,7 +16,7 @@
         status=[],
         zone=[],
         type=[] }).
--record(person, {?ITER, % version 2
+-record(user2, {?ITER, % version 2
         mail=[]::[]|binary(),
         name=[]::[]|binary(),
         pass=[]::[]|binary(),

+ 44 - 44
src/kvs_stream.erl

@@ -40,6 +40,16 @@ remove(I, #cur{val=B,pos=X}=C) -> {ok,R}=kvs:get(tab(B),I), kvs:delete(tab(B),I)
 
 % PRIVATE
 
+m(I,_,I,_,I,L,R,P,V) -> {R,R};
+m(_,I,I,_,I,L,R,P,V) -> {R,L};
+m(I,_,_,I,I,L,R,P,V) -> {L,R};
+m(_,I,_,I,I,L,R,P,V) -> {L,L};
+m(I,_,_,_,I,L,R,P,V) -> {sn(V,id(R)),P};
+m(_,I,_,_,I,L,R,P,V) -> {sp(V,id(R)),P};
+m(_,_,I,_,I,L,R,P,V) -> {V,sn(P,id(L))};
+m(_,_,_,I,I,L,R,P,V) -> {V,sp(P,id(L))};
+m(_,_,_,_,I,L,R,P,V) -> {V,P}.
+
 add(bot,M,#cur{bot=T,val=[]}=C) ->
     Id=id(M), N=sn(sp(M,T),[]), kvs:put(N),
     C#cur{val=N,pos=N,bot=Id,top=Id};
@@ -64,11 +74,6 @@ add(top,M,#cur{top=B,val=V,pos=P}=C) ->
     kvs:put([H,N]), {L,R} = inc(C),
     C#cur{pos=select(V,P,N),val=H,top=Id,left=L,right=R}.
 
-select(0,T,B) -> T;
-select(1,T,B) -> B;
-select(P,P,X) -> X;
-select(P,N,X) -> N.
-
 join(I,[[],[]],C) ->
     {X,Y} = dec(C),
     C#cur{top=[],bot=[],val=[],pos=[],left=X,right=Y};
@@ -91,16 +96,6 @@ join(I,[L,  R],#cur{pos=P,val=V}=Cur) ->
     {NV,NP} = m(A,B,C,D,I,N,M,P,V),
     Cur#cur{left=X, pos=NP, val=NV, right=Y}.
 
-m(I,_,I,_,I,L,R,P,V) -> {R,R};
-m(_,I,I,_,I,L,R,P,V) -> {R,L};
-m(I,_,_,I,I,L,R,P,V) -> {L,R};
-m(_,I,_,I,I,L,R,P,V) -> {L,L};
-m(I,_,_,_,I,L,R,P,V) -> {sn(V,id(R)),P};
-m(_,I,_,_,I,L,R,P,V) -> {sp(V,id(R)),P};
-m(_,_,I,_,I,L,R,P,V) -> {V,sn(P,id(L))};
-m(_,_,_,I,I,L,R,P,V) -> {V,sp(P,id(L))};
-m(_,_,_,_,I,L,R,P,V) -> {V,P}.
-
 cv(R,V) -> setelement(#cur.val,   R, V).
 cb(R,V) -> setelement(#cur.bot,   R, V).
 ct(R,V) -> setelement(#cur.top,   R, V).
@@ -123,6 +118,11 @@ dir(1)  -> bot.
 acc(0)  -> prev;
 acc(1)  -> next.
 
+select(0,T,B) -> T;
+select(1,T,B) -> B;
+select(P,P,X) -> X;
+select(P,N,X) -> N.
+
 fix(M,[])     -> [];
 fix(M,X)      -> fix(kvs:get(M,X)).
 fix({ok,O})   -> O;
@@ -141,17 +141,17 @@ dec(#cur{left=0,right=0,dir=D})   -> swap(D,{0,0});
 dec(#cur{left=L,right=0,dir=D})   -> swap(D,{L-1,0});
 dec(#cur{left=0,right=R,dir=D})   -> swap(D,{0,R-1});
 dec(#cur{left=L,right=R,dir=D})   -> swap(D,{L-1,R}).
-right(#cur{left=0,right=0,dir=D}) -> swap(D,{0,0});
-right(#cur{left=L,right=0,dir=D}) -> swap(D,{L,0});
-right(#cur{left=L,right=R,dir=D}) -> swap(D,{L+1,R-1}).
 left(#cur{left=0,right=0,dir=D})  -> swap(D,{0,0});
 left(#cur{left=0,right=R,dir=D})  -> swap(D,{0,R});
 left(#cur{left=L,right=R,dir=D})  -> swap(D,{L-1,R+1}).
+right(#cur{left=0,right=0,dir=D}) -> swap(D,{0,0});
+right(#cur{left=L,right=0,dir=D}) -> swap(D,{L,0});
+right(#cur{left=L,right=R,dir=D}) -> swap(D,{L+1,R-1}).
 
 % TESTS
 
 check() ->
-    te(),
+    te_remove(),
     test1(),
     test2(),
     create_destroy(),
@@ -161,7 +161,7 @@ check() ->
     ok.
 
 rewind() ->
-    Empty = {person,[],[],[],[],[],[],[],[]},
+    Empty = {'user2',[],[],[],[],[],[],[],[]},
     C = #cur{top=T,bot=B,left=L,right=R,val=V,pos=P} =
     save(
     add(Empty,down(
@@ -176,7 +176,7 @@ rewind() ->
     ok.
 
 test_sides() ->
-    Empty = {person,[],[],[],[],[],[],[],[]},
+    Empty = {'user2',[],[],[],[],[],[],[],[]},
     #cur{top=T,bot=B,left=L,right=R,val=V,pos=P} =
     save(
     add(Empty,up(
@@ -191,11 +191,11 @@ test_sides() ->
 
 next_prev_duality() ->
     Cur = new(),
-    [A,B,C] = [ kvs:next_id(person,1) || _ <- lists:seq(1,3) ],
+    [A,B,C] = [ kvs:next_id('user2',1) || _ <- lists:seq(1,3) ],
     R = save(
-        add({person,A,[],[],[],[],[],[],[]},
-        add({person,B,[],[],[],[],[],[],[]},
-        add({person,C,[],[],[],[],[],[],[]},
+        add({'user2',A,[],[],[],[],[],[],[]},
+        add({'user2',B,[],[],[],[],[],[],[]},
+        add({'user2',C,[],[],[],[],[],[],[]},
         Cur)))),
     X = load(id(Cur)),
     X = next(
@@ -205,7 +205,7 @@ next_prev_duality() ->
 
 test2() ->
     Cur = new(),
-    [A,B,C,D] = [ kvs:next_id(person,1) || _ <- lists:seq(1,4) ],
+    [A,B,C,D] = [ kvs:next_id('user2',1) || _ <- lists:seq(1,4) ],
     [] = take(-1,
          up(
          bot(
@@ -213,43 +213,43 @@ test2() ->
          remove(B,
          remove(C,
          remove(D,
-         add({person,A,[],[],[],[],[],[],[]},
-         add({person,B,[],[],[],[],[],[],[]},
-         add({person,C,[],[],[],[],[],[],[]},
-         add({person,D,[],[],[],[],[],[],[]},
+         add({'user2',A,[],[],[],[],[],[],[]},
+         add({'user2',B,[],[],[],[],[],[],[]},
+         add({'user2',C,[],[],[],[],[],[],[]},
+         add({'user2',D,[],[],[],[],[],[],[]},
          up(Cur)))))))))))).
 
 create_destroy() ->
     Cur = new(),
-    [A,B,C,D] = [ kvs:next_id(person,1)
+    [A,B,C,D] = [ kvs:next_id('user2',1)
              || _ <- lists:seq(1,4) ],
     [] = take(-1,
          remove(B,
          remove(D,
          remove(A,
          remove(C,
-         add({person,D,[],[],[],[],[],[],[]},
-         add({person,C,[],[],[],[],[],[],[]},
-         add({person,B,[],[],[],[],[],[],[]},
-         add({person,A,[],[],[],[],[],[],[]},
+         add({'user2',D,[],[],[],[],[],[],[]},
+         add({'user2',C,[],[],[],[],[],[],[]},
+         add({'user2',B,[],[],[],[],[],[],[]},
+         add({'user2',A,[],[],[],[],[],[],[]},
          up(new())))))))))).
 
 test1() ->
-    [A,B,C,D] = [ kvs:next_id(person,1) || _ <- lists:seq(1,4) ],
+    [A,B,C,D] = [ kvs:next_id('user2',1) || _ <- lists:seq(1,4) ],
     R  = save(
-         add({person,D,[],[],[],[],[],[],[]},
-         add({person,C,[],[],[],[],[],[],[]},
-         add({person,B,[],[],[],[],[],[],[]},
-         add({person,A,[],[],[],[],[],[],[]},
+         add({'user2',D,[],[],[],[],[],[],[]},
+         add({'user2',C,[],[],[],[],[],[],[]},
+         add({'user2',B,[],[],[],[],[],[],[]},
+         add({'user2',A,[],[],[],[],[],[],[]},
          new() ))))),
     X  = take(-1,up(top(R))),
     Y  = take(-1,down(bot(R))),
     X  = lists:reverse(Y),
     L  = length(X).
 
-te() ->
+te_remove() ->
     #cur{id=S}=kvs_stream:save(kvs_stream:new()),
-    P = {person,[],[],[],[],[],[],[],[]},
+    P = {'user2',[],[],[],[],[],[],[],[]},
     S1 = kvs_stream:save(
     kvs_stream:add(P,
     kvs_stream:add(P,
@@ -259,8 +259,8 @@ te() ->
     4 = length(kvs_stream:take(-1,S1)),
     S2 = kvs_stream:save(kvs_stream:top(S1)),
     S3 = kvs_stream:save(kvs_stream:remove(S2#cur.top-1,S2)),
-    List = kvs_stream:take(-1,kvs_stream:seek(kvs_stream:up(S3))),
-    Rev  = kvs_stream:take(-1,kvs_stream:seek(kvs_stream:down(S3))),
+    List = kvs_stream:take(-1,kvs_stream:top(S3)),
+    Rev  = kvs_stream:take(-1,kvs_stream:bot(S3)),
     List = lists:reverse(Rev),
     3 = length(List),
     {S3,List}.

+ 1 - 1
src/kvs_user.erl

@@ -8,7 +8,7 @@
 
 metainfo() ->
     #schema{name=kvs,tables=[
-        #table{name=person,container=feed,fields=record_info(fields,person)},
+        #table{name='user2',container=feed,fields=record_info(fields,'user2')},
         #table{name=group,container=feed,fields=record_info(fields,group)},
         #table{name=user,container=feed,fields=record_info(fields,user),keys=[email]}
     ]}.