Compare commits
	
		
			4 Commits
		
	
	
		
			517f980664
			...
			4dede757d2
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 4dede757d2 | |||
| 
						 | 
					2a93ea7a0c | ||
| 
						 | 
					f89b1acc6c | ||
| 
						 | 
					1dc8b054eb | 
							
								
								
									
										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