menu-voucherlist #101
							
								
								
									
										43
									
								
								internal/storage/db.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								internal/storage/db.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,43 @@ | ||||
| package storage | ||||
| 
 | ||||
| import ( | ||||
| 	"context" | ||||
| 
 | ||||
| 	"git.defalsify.org/vise.git/db" | ||||
| ) | ||||
| 
 | ||||
| const ( | ||||
| 	DATATYPE_USERSUB = 64 | ||||
| ) | ||||
| 
 | ||||
| type SubPrefixDb struct { | ||||
| 	store db.Db | ||||
| 	pfx []byte | ||||
| } | ||||
| 
 | ||||
| func NewSubPrefixDb(store db.Db, pfx []byte) *SubPrefixDb { | ||||
| 	return &SubPrefixDb{ | ||||
| 		store: store, | ||||
| 		pfx: pfx, | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func(s *SubPrefixDb) toKey(k []byte) []byte { | ||||
|         return append(s.pfx, k...) | ||||
| } | ||||
| 
 | ||||
| func(s *SubPrefixDb) Get(ctx context.Context, key []byte) ([]byte, error) { | ||||
|         s.store.SetPrefix(DATATYPE_USERSUB) | ||||
| 	key = s.toKey(key) | ||||
|         v, err := s.store.Get(ctx, key) | ||||
|         if err != nil { | ||||
|                 return nil, err | ||||
|         } | ||||
|         return v, nil | ||||
| } | ||||
| 
 | ||||
| func(s *SubPrefixDb) Put(ctx context.Context, key []byte, val []byte) error { | ||||
|         s.store.SetPrefix(DATATYPE_USERSUB) | ||||
| 	key = s.toKey(key) | ||||
|         return s.store.Put(ctx, key, val) | ||||
| } | ||||
							
								
								
									
										54
									
								
								internal/storage/db_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								internal/storage/db_test.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,54 @@ | ||||
| package storage | ||||
| 
 | ||||
| import ( | ||||
| 	"bytes" | ||||
| 	"context" | ||||
| 	"testing" | ||||
| 
 | ||||
| 	memdb "git.defalsify.org/vise.git/db/mem" | ||||
| ) | ||||
| 
 | ||||
| func TestSubPrefix(t *testing.T) { | ||||
| 	ctx := context.Background() | ||||
| 	db := memdb.NewMemDb() | ||||
| 	err := db.Connect(ctx, "") | ||||
| 	if err != nil { | ||||
| 		t.Fatal(err) | ||||
| 	} | ||||
| 	sdba := NewSubPrefixDb(db, []byte("tinkywinky")) | ||||
| 	err = sdba.Put(ctx, []byte("foo"), []byte("dipsy")) | ||||
| 	if err != nil { | ||||
| 		t.Fatal(err) | ||||
| 	} | ||||
| 
 | ||||
| 	r, err := sdba.Get(ctx, []byte("foo")) | ||||
| 	if err != nil { | ||||
| 		t.Fatal(err) | ||||
| 	} | ||||
| 	if !bytes.Equal(r, []byte("dipsy")) { | ||||
| 		t.Fatalf("expected 'dipsy', got %s", r) | ||||
| 	} | ||||
| 
 | ||||
| 	sdbb := NewSubPrefixDb(db, []byte("lala")) | ||||
| 	r, err = sdbb.Get(ctx, []byte("foo")) | ||||
| 	if err == nil { | ||||
| 		t.Fatal("expected not found") | ||||
| 	} | ||||
| 
 | ||||
| 	err = sdbb.Put(ctx, []byte("foo"), []byte("pu")) | ||||
| 	if err != nil { | ||||
| 		t.Fatal(err) | ||||
| 	} | ||||
| 	r, err = sdbb.Get(ctx, []byte("foo")) | ||||
| 	if err != nil { | ||||
| 		t.Fatal(err) | ||||
| 	} | ||||
| 	if !bytes.Equal(r, []byte("pu")) { | ||||
| 		t.Fatalf("expected 'pu', got %s", r) | ||||
| 	} | ||||
| 
 | ||||
| 	r, err = sdba.Get(ctx, []byte("foo")) | ||||
| 	if !bytes.Equal(r, []byte("dipsy")) { | ||||
| 		t.Fatalf("expected 'dipsy', got %s", r) | ||||
| 	} | ||||
| } | ||||
| @ -5,10 +5,6 @@ import ( | ||||
| 	"git.defalsify.org/vise.git/persist" | ||||
| ) | ||||
| 
 | ||||
| const ( | ||||
| 	DATATYPE_CUSTOM = 128  | ||||
| ) | ||||
| 
 | ||||
| type Storage struct { | ||||
| 	Persister *persist.Persister | ||||
| 	UserdataDb db.Db	 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user