saving changes to pb
This commit is contained in:
@@ -219,13 +219,36 @@ func (o *Twt) Marshal() ([]byte, error) {
|
||||
return avro.Marshal(o.Schema(), o)
|
||||
}
|
||||
|
||||
// Registry is a generated struct.
|
||||
type Registry struct {
|
||||
Twts []Twt `avro:"twts"`
|
||||
Preamble []Comment `avro:"preamble"`
|
||||
}
|
||||
|
||||
var schemaRegistry = avro.MustParse(`{"name":"social.yarn.lextwt.registry","type":"record","fields":[{"name":"twts","type":{"type":"array","items":{"name":"social.yarn.lextwt.twt","type":"record","fields":[{"name":"nick","type":"string"},{"name":"uri","type":"string"},{"name":"created","type":"long"},{"name":"createdZone","type":"string"},{"name":"createdOffset","type":"int"},{"name":"msg","type":{"type":"array","items":["null","string",{"name":"social.yarn.lextwt.linesep","type":"record","fields":[]},{"name":"social.yarn.lextwt.comment","type":"record","fields":[{"name":"comment","type":"string"},{"name":"key","type":"string"},{"name":"value","type":"string"}]},{"name":"social.yarn.lextwt.mention","type":"record","fields":[{"name":"name","type":"string"},{"name":"domain","type":"string"},{"name":"target","type":"string"}]},{"name":"social.yarn.lextwt.bangmention","type":"record","fields":[{"name":"name","type":"string"},{"name":"target","type":"string"}]},{"name":"social.yarn.lextwt.hashtag","type":"record","fields":[{"name":"tag","type":"string"},{"name":"target","type":"string"}]},{"name":"social.yarn.lextwt.subject","type":"record","fields":[{"name":"subject","type":"string"},{"name":"tag","type":"string"},{"name":"target","type":"string"}]},{"name":"social.yarn.lextwt.link","type":"record","fields":[{"name":"linkType","type":"int"},{"name":"text","type":"string"},{"name":"target","type":"string"},{"name":"title","type":"string"}]},{"name":"social.yarn.lextwt.code","type":"record","fields":[{"name":"code","type":"string"},{"name":"codetype","type":"int"}]}]}}]}}},{"name":"preamble","type":{"type":"array","items":"social.yarn.lextwt.comment"}}]}`)
|
||||
|
||||
// Schema returns the schema for Registry.
|
||||
func (o *Registry) Schema() avro.Schema {
|
||||
return schemaRegistry
|
||||
}
|
||||
|
||||
// Unmarshal decodes b into the receiver.
|
||||
func (o *Registry) Unmarshal(b []byte) error {
|
||||
return avro.Unmarshal(o.Schema(), b, o)
|
||||
}
|
||||
|
||||
// Marshal encodes the receiver.
|
||||
func (o *Registry) Marshal() ([]byte, error) {
|
||||
return avro.Marshal(o.Schema(), o)
|
||||
}
|
||||
|
||||
// Twter is a generated struct.
|
||||
type Twter struct {
|
||||
Nick string `avro:"nick"`
|
||||
URI string `avro:"uri"`
|
||||
}
|
||||
|
||||
var schemaTwter = avro.MustParse(`{"name":"social.yarn.lextwt.twter","type":"record","fields":[{"name":"nick","type":"string"},{"name":"uri","type":"string"}]}`)
|
||||
var schemaTwter = avro.MustParse(`{"name":"twter","type":"record","fields":[{"name":"nick","type":"string"},{"name":"uri","type":"string"}]}`)
|
||||
|
||||
// Schema returns the schema for Twter.
|
||||
func (o *Twter) Schema() avro.Schema {
|
||||
@@ -242,26 +265,26 @@ func (o *Twter) Marshal() ([]byte, error) {
|
||||
return avro.Marshal(o.Schema(), o)
|
||||
}
|
||||
|
||||
// Registry is a generated struct.
|
||||
type Registry struct {
|
||||
Twts []Twt `avro:"twts"`
|
||||
Twters []Twter `avro:"twters"`
|
||||
// Feed is a generated struct.
|
||||
type Feed struct {
|
||||
Twter Twter `avro:"twter"`
|
||||
Preamble []Comment `avro:"preamble"`
|
||||
Twts []Twt `avro:"twts"`
|
||||
}
|
||||
|
||||
var schemaRegistry = avro.MustParse(`{"name":"social.yarn.lextwt.registry","type":"record","fields":[{"name":"twts","type":{"type":"array","items":{"name":"social.yarn.lextwt.twt","type":"record","fields":[{"name":"nick","type":"string"},{"name":"uri","type":"string"},{"name":"created","type":"long"},{"name":"createdZone","type":"string"},{"name":"createdOffset","type":"int"},{"name":"msg","type":{"type":"array","items":["null","string",{"name":"social.yarn.lextwt.linesep","type":"record","fields":[]},{"name":"social.yarn.lextwt.comment","type":"record","fields":[{"name":"comment","type":"string"},{"name":"key","type":"string"},{"name":"value","type":"string"}]},{"name":"social.yarn.lextwt.mention","type":"record","fields":[{"name":"name","type":"string"},{"name":"domain","type":"string"},{"name":"target","type":"string"}]},{"name":"social.yarn.lextwt.bangmention","type":"record","fields":[{"name":"name","type":"string"},{"name":"target","type":"string"}]},{"name":"social.yarn.lextwt.hashtag","type":"record","fields":[{"name":"tag","type":"string"},{"name":"target","type":"string"}]},{"name":"social.yarn.lextwt.subject","type":"record","fields":[{"name":"subject","type":"string"},{"name":"tag","type":"string"},{"name":"target","type":"string"}]},{"name":"social.yarn.lextwt.link","type":"record","fields":[{"name":"linkType","type":"int"},{"name":"text","type":"string"},{"name":"target","type":"string"},{"name":"title","type":"string"}]},{"name":"social.yarn.lextwt.code","type":"record","fields":[{"name":"code","type":"string"},{"name":"codetype","type":"int"}]}]}}]}}},{"name":"twters","type":{"type":"array","items":{"name":"social.yarn.lextwt.twter","type":"record","fields":[{"name":"nick","type":"string"},{"name":"uri","type":"string"}]}}},{"name":"preamble","type":{"type":"array","items":"social.yarn.lextwt.comment"}}]}`)
|
||||
var schemaFeed = avro.MustParse(`{"name":"feed","type":"record","fields":[{"name":"twter","type":{"name":"twter","type":"record","fields":[{"name":"nick","type":"string"},{"name":"uri","type":"string"}]}},{"name":"preamble","type":{"type":"array","items":"social.yarn.lextwt.comment"}},{"name":"twts","type":{"type":"array","items":"social.yarn.lextwt.twt"}}]}`)
|
||||
|
||||
// Schema returns the schema for Registry.
|
||||
func (o *Registry) Schema() avro.Schema {
|
||||
return schemaRegistry
|
||||
// Schema returns the schema for Feed.
|
||||
func (o *Feed) Schema() avro.Schema {
|
||||
return schemaFeed
|
||||
}
|
||||
|
||||
// Unmarshal decodes b into the receiver.
|
||||
func (o *Registry) Unmarshal(b []byte) error {
|
||||
func (o *Feed) Unmarshal(b []byte) error {
|
||||
return avro.Unmarshal(o.Schema(), b, o)
|
||||
}
|
||||
|
||||
// Marshal encodes the receiver.
|
||||
func (o *Registry) Marshal() ([]byte, error) {
|
||||
func (o *Feed) Marshal() ([]byte, error) {
|
||||
return avro.Marshal(o.Schema(), o)
|
||||
}
|
||||
|
||||
@@ -22,6 +22,8 @@ const (
|
||||
keyTwt = "social.yarn.lextwt.twt"
|
||||
keyTwter = "social.yarn.lextwt.twter"
|
||||
keyRegistry = "social.yarn.lextwt.registry"
|
||||
keyFeed = "social.yarn.lextwt.feed"
|
||||
|
||||
)
|
||||
|
||||
func Register() {
|
||||
@@ -37,6 +39,8 @@ func Register() {
|
||||
avro.Register(keyTwt, Twt{})
|
||||
avro.Register(keyTwter, Twter{})
|
||||
avro.Register(keyRegistry, Registry{})
|
||||
avro.Register(keyFeed, Feed{})
|
||||
|
||||
}
|
||||
|
||||
func Elem(o any) any {
|
||||
@@ -79,13 +83,13 @@ func FromLextwt(twt *lextwt.Twt) Twt {
|
||||
}
|
||||
|
||||
ts := twt.Created()
|
||||
_, offset := ts.Zone()
|
||||
zone, offset := ts.Zone()
|
||||
l := Twt{
|
||||
Nick: twt.Twter().Nick,
|
||||
URI: twt.Twter().URI,
|
||||
Created: ts.UnixMilli(),
|
||||
CreatedOffset: offset,
|
||||
CreatedZone: "",
|
||||
CreatedZone: zone,
|
||||
}
|
||||
|
||||
for _, e := range twt.Elems() {
|
||||
@@ -239,10 +243,6 @@ func EncodeRegistry(r TwtRegistry) ([]byte, error) {
|
||||
out.Preamble = append(out.Preamble, Comment{Comment: comment.Text()})
|
||||
}
|
||||
|
||||
for _, twter := range r.Twters() {
|
||||
out.Twters = append(out.Twters, Twter{Nick: twter.Nick, URI: twter.URI})
|
||||
}
|
||||
|
||||
for _, twt := range r.Twts() {
|
||||
out.Twts = append(out.Twts, FromTwt(twt))
|
||||
}
|
||||
@@ -256,7 +256,7 @@ func DecodeRegistry(b []byte) (TwtRegistry, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
preamble := make(lextwt.Comments, len(out.Preamble))
|
||||
preamble := make(lextwt.Comments, 0, len(out.Preamble))
|
||||
for _, comment := range out.Preamble {
|
||||
if comment.Key != "" {
|
||||
preamble = append(preamble, lextwt.NewCommentValue(comment.Comment, comment.Key, comment.Value))
|
||||
@@ -265,15 +265,67 @@ func DecodeRegistry(b []byte) (TwtRegistry, error) {
|
||||
}
|
||||
}
|
||||
|
||||
twters := make([]*types.Twter, len(out.Twters))
|
||||
for _, twter := range out.Twters {
|
||||
twters = append(twters, &types.Twter{Nick:twter.Nick, URI:twter.URI})
|
||||
}
|
||||
|
||||
twts := make(types.Twts, len(out.Twts))
|
||||
twts := make(types.Twts, 0, len(out.Twts))
|
||||
for _, twt := range out.Twts {
|
||||
twts = append(twts, twt.ToTwt())
|
||||
}
|
||||
|
||||
return lextwt.NewTwtRegistry(twters, preamble, twts), nil
|
||||
}
|
||||
return lextwt.NewTwtRegistry(preamble, twts), nil
|
||||
}
|
||||
|
||||
type TwtFeed interface {
|
||||
Twter() *types.Twter
|
||||
Preamble() lextwt.Comments
|
||||
Twts() types.Twts
|
||||
WriteTo(w io.Writer) (int64, error)
|
||||
}
|
||||
|
||||
|
||||
func EncodeFeed(r TwtFeed) ([]byte, error) {
|
||||
out := Feed{}
|
||||
|
||||
out.Twter.Nick = r.Twter().Nick
|
||||
out.Twter.URI = r.Twter().URI
|
||||
|
||||
for _, comment := range r.Preamble() {
|
||||
if comment.Key() != "" {
|
||||
out.Preamble = append(out.Preamble, Comment{Key: comment.Key(), Value: comment.Value()})
|
||||
continue
|
||||
}
|
||||
out.Preamble = append(out.Preamble, Comment{Comment: comment.Text()})
|
||||
}
|
||||
|
||||
for _, twt := range r.Twts() {
|
||||
out.Twts = append(out.Twts, FromTwt(twt))
|
||||
}
|
||||
|
||||
return out.Marshal()
|
||||
}
|
||||
|
||||
func DecodeFeed(b []byte) (TwtFeed, error) {
|
||||
var out Feed
|
||||
if err := out.Unmarshal(b); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
twter := types.Twter{
|
||||
Nick: out.Twter.Nick,
|
||||
URI: out.Twter.URI,
|
||||
}
|
||||
|
||||
preamble := make(lextwt.Comments, 0, len(out.Preamble))
|
||||
for _, comment := range out.Preamble {
|
||||
if comment.Key != "" {
|
||||
preamble = append(preamble, lextwt.NewCommentValue(comment.Comment, comment.Key, comment.Value))
|
||||
} else {
|
||||
preamble = append(preamble, lextwt.NewComment(comment.Comment))
|
||||
}
|
||||
}
|
||||
|
||||
twts := make(types.Twts, 0, len(out.Twts))
|
||||
for _, twt := range out.Twts {
|
||||
twts = append(twts, twt.ToTwt())
|
||||
}
|
||||
|
||||
return lextwt.NewTwtFile(twter, preamble, twts), nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user