From 6f80dbdfe5cad8c2ca1b111c3da1bc7de65a1c20 Mon Sep 17 00:00:00 2001 From: chrislu Date: Fri, 12 Apr 2024 22:31:28 -0700 Subject: [PATCH] Create schema.go --- weed/mq/schema/schema.go | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 weed/mq/schema/schema.go diff --git a/weed/mq/schema/schema.go b/weed/mq/schema/schema.go new file mode 100644 index 000000000..5cb7a8df1 --- /dev/null +++ b/weed/mq/schema/schema.go @@ -0,0 +1,32 @@ +package schema + +import ( + "fmt" + "github.com/seaweedfs/seaweedfs/weed/pb/schema_pb" +) + +type Schema struct { + RecordType *schema_pb.RecordType + indexedFields []*schema_pb.Field +} + +func NewSchema(recordType *schema_pb.RecordType) (*Schema, error) { + var indexedFields []*schema_pb.Field + var largestIndex int32 + for _, field := range recordType.Fields { + if field.Index > largestIndex { + largestIndex = field.Index + } + if field.Index < 0 { + return nil, fmt.Errorf("field %s index %d is negative", field.Name, field.Index) + } + } + indexedFields = make([]*schema_pb.Field, largestIndex+1) + for _, field := range recordType.Fields { + indexedFields[field.Index] = field + } + return &Schema{ + RecordType: recordType, + indexedFields: indexedFields, + }, nil +}