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" | 	"git.defalsify.org/vise.git/persist" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| const ( |  | ||||||
| 	DATATYPE_CUSTOM = 128  |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| type Storage struct { | type Storage struct { | ||||||
| 	Persister *persist.Persister | 	Persister *persist.Persister | ||||||
| 	UserdataDb db.Db	 | 	UserdataDb db.Db	 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user