You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							58 lines
						
					
					
						
							1.3 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							58 lines
						
					
					
						
							1.3 KiB
						
					
					
				
								package schema
							 | 
						|
								
							 | 
						|
								import (
							 | 
						|
									"github.com/seaweedfs/seaweedfs/weed/pb/schema_pb"
							 | 
						|
								)
							 | 
						|
								
							 | 
						|
								type Schema struct {
							 | 
						|
									Namespace  string
							 | 
						|
									Name       string
							 | 
						|
									RevisionId uint32
							 | 
						|
									RecordType *schema_pb.RecordType
							 | 
						|
									fieldMap   map[string]*schema_pb.Field
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								func NewSchema(namespace string, name string, recordType *schema_pb.RecordType) *Schema {
							 | 
						|
									fieldMap := make(map[string]*schema_pb.Field)
							 | 
						|
									for _, field := range recordType.Fields {
							 | 
						|
										fieldMap[field.Name] = field
							 | 
						|
									}
							 | 
						|
									return &Schema{
							 | 
						|
										Namespace:  namespace,
							 | 
						|
										Name:       name,
							 | 
						|
										RecordType: recordType,
							 | 
						|
										fieldMap:   fieldMap,
							 | 
						|
									}
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								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"
							 | 
						|
								}
							 |