Files
eventstore/ratel/keys/index/index.go
2024-09-08 20:16:34 +01:00

49 lines
758 B
Go

package index
import (
"bytes"
"fmt"
. "nostr.mleku.dev"
"store.mleku.dev/ratel/keys"
)
const Len = 1
type T struct {
Val []byte
}
var _ keys.Element = &T{}
func New[V byte | P | int](code ...V) (p *T) {
var cod []byte
switch len(code) {
case 0:
cod = []byte{0}
default:
cod = []byte{byte(code[0])}
}
return &T{Val: cod}
}
func Empty() (p *T) {
return &T{Val: []byte{0}}
}
func (p *T) Write(buf *bytes.Buffer) {
if len(p.Val) != Len {
panic(fmt.Sprintln("must use New or initialize Val with len", Len))
}
buf.Write(p.Val)
}
func (p *T) Read(buf *bytes.Buffer) (el keys.Element) {
p.Val = make([]byte, Len)
if n, err := buf.Read(p.Val); Chk.E(err) || n != Len {
return nil
}
return p
}
func (p *T) Len() int { return Len }