77 lines
1.2 KiB
Go
77 lines
1.2 KiB
Go
package pebble
|
|
|
|
import (
|
|
"github.com/cockroachdb/pebble"
|
|
"github.com/d1nch8g/mesh/database"
|
|
)
|
|
|
|
type DB struct {
|
|
pebble *pebble.DB
|
|
|
|
users *users
|
|
files *files
|
|
email *email
|
|
messages *messages
|
|
posts *posts
|
|
}
|
|
|
|
func New(path string) (*DB, error) {
|
|
p, err := pebble.Open(path, &pebble.Options{})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &DB{
|
|
pebble: p,
|
|
|
|
users: &users{db: p},
|
|
files: &files{db: p},
|
|
email: &email{db: p},
|
|
messages: &messages{db: p},
|
|
posts: &posts{db: p},
|
|
}, nil
|
|
}
|
|
|
|
func (d *DB) Key(user, db string, args ...string) []byte {
|
|
length := len(user) + 1 + len(db)
|
|
for _, arg := range args {
|
|
length += len(arg) + 1
|
|
}
|
|
|
|
b := make([]byte, 0, length)
|
|
|
|
b = append(b, user...)
|
|
b = append(b, ':')
|
|
b = append(b, db...)
|
|
|
|
for _, arg := range args {
|
|
b = append(b, ':')
|
|
b = append(b, arg...)
|
|
}
|
|
return b
|
|
}
|
|
|
|
func (d *DB) Users() database.Users {
|
|
return d.users
|
|
}
|
|
|
|
func (d *DB) Files() database.Files {
|
|
return d.files
|
|
}
|
|
|
|
func (d *DB) Email() database.Emails {
|
|
return d.email
|
|
}
|
|
|
|
func (d *DB) Messages() database.Messages {
|
|
return d.messages
|
|
}
|
|
|
|
func (d *DB) Posts() database.Posts {
|
|
return d.posts
|
|
}
|
|
|
|
func (d *DB) Close() error {
|
|
return d.pebble.Close()
|
|
}
|