From 462570f0c9583204efd0b38ab46d4a04e3b5475a Mon Sep 17 00:00:00 2001 From: Daniel Date: Tue, 23 Nov 2021 11:25:19 +0100 Subject: [PATCH] Delete copy of dsd formats in database.record package --- api/database.go | 11 ++++++----- config/option.go | 3 ++- database/record/base.go | 4 ++-- database/record/formats.go | 15 --------------- database/record/meta-bench_test.go | 4 ++-- database/record/wrapper.go | 12 ++++++------ database/record/wrapper_test.go | 8 +++++--- 7 files changed, 23 insertions(+), 34 deletions(-) delete mode 100644 database/record/formats.go diff --git a/api/database.go b/api/database.go index a675a1c..bbdb82c 100644 --- a/api/database.go +++ b/api/database.go @@ -11,6 +11,7 @@ import ( "github.com/tidwall/sjson" "github.com/safing/portbase/database/iterator" + "github.com/safing/portbase/formats/dsd" "github.com/safing/portbase/formats/varint" "github.com/gorilla/websocket" @@ -534,9 +535,9 @@ func (api *DatabaseAPI) handlePut(opID []byte, key string, data []byte, create b } // TODO - staged for deletion: remove transition code - // if data[0] != record.JSON { + // if data[0] != dsd.JSON { // typedData := make([]byte, len(data)+1) - // typedData[0] = record.JSON + // typedData[0] = dsd.JSON // copy(typedData[1:], data) // data = typedData // } @@ -631,13 +632,13 @@ func marshalRecord(r record.Record, withDSDIdentifier bool) ([]byte, error) { defer r.Unlock() // Pour record into JSON. - jsonData, err := r.Marshal(r, record.JSON) + jsonData, err := r.Marshal(r, dsd.JSON) if err != nil { return nil, err } // Remove JSON identifier for manual editing. - jsonData = bytes.TrimPrefix(jsonData, varint.Pack8(record.JSON)) + jsonData = bytes.TrimPrefix(jsonData, varint.Pack8(dsd.JSON)) // Add metadata. jsonData, err = sjson.SetBytes(jsonData, "_meta", r.Meta()) @@ -653,7 +654,7 @@ func marshalRecord(r record.Record, withDSDIdentifier bool) ([]byte, error) { // Add JSON identifier again. if withDSDIdentifier { - formatID := varint.Pack8(record.JSON) + formatID := varint.Pack8(dsd.JSON) finalData := make([]byte, 0, len(formatID)+len(jsonData)) finalData = append(finalData, formatID...) finalData = append(finalData, jsonData...) diff --git a/config/option.go b/config/option.go index bbcb27d..07ec685 100644 --- a/config/option.go +++ b/config/option.go @@ -9,6 +9,7 @@ import ( "github.com/tidwall/sjson" "github.com/safing/portbase/database/record" + "github.com/safing/portbase/formats/dsd" ) // OptionType defines the value type of an option. @@ -303,7 +304,7 @@ func (option *Option) export() (record.Record, error) { } } - r, err := record.NewWrapper(fmt.Sprintf("config:%s", option.Key), nil, record.JSON, data) + r, err := record.NewWrapper(fmt.Sprintf("config:%s", option.Key), nil, dsd.JSON, data) if err != nil { return nil, err } diff --git a/database/record/base.go b/database/record/base.go index c1108f0..bb24bcb 100644 --- a/database/record/base.go +++ b/database/record/base.go @@ -122,14 +122,14 @@ func (b *Base) MarshalRecord(self Record) ([]byte, error) { c := container.New([]byte{1}) // meta encoding - metaSection, err := dsd.Dump(b.meta, GenCode) + metaSection, err := dsd.Dump(b.meta, dsd.GenCode) if err != nil { return nil, err } c.AppendAsBlock(metaSection) // data - dataSection, err := b.Marshal(self, JSON) + dataSection, err := b.Marshal(self, dsd.JSON) if err != nil { return nil, err } diff --git a/database/record/formats.go b/database/record/formats.go deleted file mode 100644 index e04d0e4..0000000 --- a/database/record/formats.go +++ /dev/null @@ -1,15 +0,0 @@ -package record - -import ( - "github.com/safing/portbase/formats/dsd" -) - -// Reimport DSD storage types -const ( - AUTO = dsd.AUTO - STRING = dsd.STRING // S - BYTES = dsd.BYTES // X - JSON = dsd.JSON // J - BSON = dsd.BSON // B - GenCode = dsd.GenCode // G -) diff --git a/database/record/meta-bench_test.go b/database/record/meta-bench_test.go index 10b9bac..a531693 100644 --- a/database/record/meta-bench_test.go +++ b/database/record/meta-bench_test.go @@ -432,7 +432,7 @@ func BenchmarkMetaUnserializeWithCodegen(b *testing.B) { func BenchmarkMetaSerializeWithDSDJSON(b *testing.B) { for i := 0; i < b.N; i++ { - _, err := dsd.Dump(testMeta, JSON) + _, err := dsd.Dump(testMeta, dsd.JSON) if err != nil { b.Errorf("failed to serialize with DSD/JSON: %s", err) return @@ -444,7 +444,7 @@ func BenchmarkMetaSerializeWithDSDJSON(b *testing.B) { func BenchmarkMetaUnserializeWithDSDJSON(b *testing.B) { // Setup - encodedData, err := dsd.Dump(testMeta, JSON) + encodedData, err := dsd.Dump(testMeta, dsd.JSON) if err != nil { b.Errorf("failed to serialize with DSD/JSON: %s", err) return diff --git a/database/record/wrapper.go b/database/record/wrapper.go index b89a733..be066d3 100644 --- a/database/record/wrapper.go +++ b/database/record/wrapper.go @@ -42,7 +42,7 @@ func NewRawWrapper(database, key string, data []byte) (*Wrapper, error) { return nil, fmt.Errorf("could not unmarshal meta section: %s", err) } - var format uint8 = dsd.NONE + var format uint8 = dsd.RAW if !newMeta.IsDeleted() { format, n, err = varint.Unpack8(data[offset:]) if err != nil { @@ -89,7 +89,7 @@ func (w *Wrapper) Marshal(r Record, format uint8) ([]byte, error) { return nil, nil } - if format != AUTO && format != w.Format { + if format != dsd.AUTO && format != w.Format { return nil, errors.New("could not dump model, wrapped object format mismatch") } @@ -112,14 +112,14 @@ func (w *Wrapper) MarshalRecord(r Record) ([]byte, error) { c := container.New([]byte{1}) // meta - metaSection, err := dsd.Dump(w.meta, GenCode) + metaSection, err := dsd.Dump(w.meta, dsd.GenCode) if err != nil { return nil, err } c.AppendAsBlock(metaSection) // data - dataSection, err := w.Marshal(r, JSON) + dataSection, err := w.Marshal(r, dsd.JSON) if err != nil { return nil, err } @@ -140,7 +140,7 @@ func Unwrap(wrapped, new Record) error { return fmt.Errorf("cannot unwrap %T", wrapped) } - _, err := dsd.LoadAsFormat(wrapper.Data, wrapper.Format, new) + err := dsd.LoadAsFormat(wrapper.Data, wrapper.Format, new) if err != nil { return fmt.Errorf("failed to unwrap %T: %s", new, err) } @@ -153,7 +153,7 @@ func Unwrap(wrapped, new Record) error { // GetAccessor returns an accessor for this record, if available. func (w *Wrapper) GetAccessor(self Record) accessor.Accessor { - if w.Format == JSON && len(w.Data) > 0 { + if w.Format == dsd.JSON && len(w.Data) > 0 { return accessor.NewJSONBytesAccessor(&w.Data) } return nil diff --git a/database/record/wrapper_test.go b/database/record/wrapper_test.go index de4d5ae..5f58a6b 100644 --- a/database/record/wrapper_test.go +++ b/database/record/wrapper_test.go @@ -3,6 +3,8 @@ package record import ( "bytes" "testing" + + "github.com/safing/portbase/formats/dsd" ) func TestWrapper(t *testing.T) { @@ -18,18 +20,18 @@ func TestWrapper(t *testing.T) { encodedTestData := []byte(`J{"a": "b"}`) // test wrapper - wrapper, err := NewWrapper("test:a", &Meta{}, JSON, testData) + wrapper, err := NewWrapper("test:a", &Meta{}, dsd.JSON, testData) if err != nil { t.Fatal(err) } - if wrapper.Format != JSON { + if wrapper.Format != dsd.JSON { t.Error("format mismatch") } if !bytes.Equal(testData, wrapper.Data) { t.Error("data mismatch") } - encoded, err := wrapper.Marshal(wrapper, JSON) + encoded, err := wrapper.Marshal(wrapper, dsd.JSON) if err != nil { t.Fatal(err) }