package schema import ( "github.com/seaweedfs/seaweedfs/weed/pb/schema_pb" ) type Schema struct { RecordType *schema_pb.RecordType fieldMap map[string]*schema_pb.Field } func NewSchema(recordType *schema_pb.RecordType) (*Schema, error) { fieldMap := make(map[string]*schema_pb.Field) for _, field := range recordType.Fields { fieldMap[field.Name] = field } return &Schema{ RecordType: recordType, fieldMap: fieldMap, }, nil } func (s *Schema) GetField(name string) (*schema_pb.Field, bool) { field, ok := s.fieldMap[name] return field, ok } func TypeToString(t *schema_pb.Type) string { switch t.Kind.(type) { case *schema_pb.Type_ScalarType: switch t.GetScalarType() { case schema_pb.ScalarType_BOOL: return "bool" case schema_pb.ScalarType_INT32: return "int32" case schema_pb.ScalarType_INT64: return "int64" case schema_pb.ScalarType_FLOAT: return "float" case schema_pb.ScalarType_DOUBLE: return "double" case schema_pb.ScalarType_BYTES: return "bytes" case schema_pb.ScalarType_STRING: return "string" } case *schema_pb.Type_ListType: return "list" case *schema_pb.Type_RecordType: return "record" } return "unknown" }