Files
m8sh/database/pebble/pebble.go
T
2026-05-08 23:56:34 +03:00

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()
}