neoneo-go/_pkg.dev/database/table.go

51 lines
1.2 KiB
Go
Raw Normal View History

2019-02-25 22:44:14 +00:00
package database
//Table is an abstract data structure built on top of a db
2019-02-25 22:44:14 +00:00
type Table struct {
prefix []byte
db Database
}
//NewTable creates a new table on the given database
2019-02-25 22:44:14 +00:00
func NewTable(db Database, prefix []byte) *Table {
return &Table{
prefix,
db,
}
}
// Has implements the database interface
2019-02-25 22:44:14 +00:00
func (t *Table) Has(key []byte) (bool, error) {
prefixedKey := append(t.prefix, key...)
return t.db.Has(prefixedKey)
2019-02-25 22:44:14 +00:00
}
// Put implements the database interface
2019-02-25 22:44:14 +00:00
func (t *Table) Put(key []byte, value []byte) error {
prefixedKey := append(t.prefix, key...)
return t.db.Put(prefixedKey, value)
2019-02-25 22:44:14 +00:00
}
// Get implements the database interface
2019-02-25 22:44:14 +00:00
func (t *Table) Get(key []byte) ([]byte, error) {
prefixedKey := append(t.prefix, key...)
return t.db.Get(prefixedKey)
2019-02-25 22:44:14 +00:00
}
// Delete implements the database interface
2019-02-25 22:44:14 +00:00
func (t *Table) Delete(key []byte) error {
prefixedKey := append(t.prefix, key...)
return t.db.Delete(prefixedKey)
2019-02-25 22:44:14 +00:00
}
// Close implements the database interface
2019-02-25 22:44:14 +00:00
func (t *Table) Close() error {
return nil
}
// Prefix implements the database interface
func (t *Table) Prefix(key []byte) ([][]byte, error) {
prefixedKey := append(t.prefix, key...)
return t.db.Prefix(prefixedKey)
}