util.go (1892B)
1 package resourcetest 2 3 import ( 4 "context" 5 6 "git.defalsify.org/vise.git/resource" 7 "git.defalsify.org/vise.git/db/mem" 8 "git.defalsify.org/vise.git/db" 9 ) 10 11 type TestResource struct { 12 *resource.DbResource 13 db db.Db 14 ctx context.Context 15 } 16 17 func NewTestResource() *TestResource { 18 return newTestResource("") 19 } 20 21 func NewTestFsResource(path string) *TestResource { 22 if path == "" { 23 panic("empty path") 24 } 25 return newTestResource(path) 26 } 27 28 func newTestResource(path string) *TestResource { 29 var store db.Db 30 ctx := context.Background() 31 32 if path == "" { 33 mem := mem.NewMemDb() 34 mem.SetLock(db.DATATYPE_TEMPLATE, false) 35 mem.SetLock(db.DATATYPE_BIN, false) 36 mem.SetLock(db.DATATYPE_MENU, false) 37 store = mem 38 } else { 39 fs := mem.NewMemDb() 40 fs.SetLock(db.DATATYPE_TEMPLATE, false) 41 fs.SetLock(db.DATATYPE_BIN, false) 42 fs.SetLock(db.DATATYPE_MENU, false) 43 store = fs 44 } 45 46 store.Connect(ctx, path) 47 rsd := resource.NewDbResource(store) 48 rs := &TestResource{ 49 DbResource: rsd, 50 ctx: ctx, 51 db: store, 52 } 53 return rs 54 } 55 56 func(tr *TestResource) AddTemplate(ctx context.Context, key string, val string) error { 57 tr.db.SetPrefix(db.DATATYPE_TEMPLATE) 58 return tr.db.Put(ctx, []byte(key), []byte(val)) 59 } 60 61 func(tr *TestResource) AddBytecode(ctx context.Context, key string, val []byte) error { 62 tr.db.SetPrefix(db.DATATYPE_BIN) 63 return tr.db.Put(ctx, []byte(key), val) 64 } 65 66 func(tr *TestResource) AddMenu(ctx context.Context, key string, val string) error { 67 tr.db.SetPrefix(db.DATATYPE_MENU) 68 return tr.db.Put(ctx, []byte(key), []byte(val)) 69 } 70 71 func(tr *TestResource) AddFunc(ctx context.Context, key string, fn resource.EntryFunc) { 72 tr.AddLocalFunc(key, fn) 73 } 74 75 func(tr *TestResource) AddStatic(ctx context.Context, key string, val string) error { 76 tr.db.SetPrefix(db.DATATYPE_STATICLOAD) 77 return tr.db.Put(ctx, []byte(key), []byte(val)) 78 } 79 80 func(tr *TestResource) Lock() { 81 tr.db.SetLock(0, true) 82 }