github.com/unigraph-dev/dgraph@v1.1.1-0.20200923154953-8b52b426f765/x/values.go (about) 1 /* 2 * Copyright 2017-2018 Dgraph Labs, Inc. and Contributors 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package x 18 19 // ValueTypeInfo represents information about the type of values in DirectedEdge/Posting/N-Quad. 20 type ValueTypeInfo int32 21 22 // Type of a data inside DirectedEdge, Posting or N-Quad 23 const ( 24 // ValueUnknown represents an unknown type of value. 25 ValueUnknown ValueTypeInfo = iota 26 // ValueEmpty represents a value with no UID and no value. 27 ValueEmpty 28 // ValueUid represents a value with an UID. 29 ValueUid 30 // ValuePlain represents a plain old value without defined language tag. 31 ValuePlain 32 // ValueMulti represents a value which is part of a multi-value posting list (like language). 33 ValueMulti 34 ) 35 36 // ValueType s a helper function to decide value type of DirectedEdge/Posting/N-Quad. 37 func ValueType(hasValue, hasLang, hasSpecialId bool) ValueTypeInfo { 38 switch { 39 case hasValue && hasLang: 40 return ValueMulti 41 case hasValue && !hasLang: 42 return ValuePlain 43 case !hasValue && hasSpecialId: 44 return ValueEmpty 45 case !hasValue && !hasSpecialId: 46 return ValueUid 47 default: 48 return ValueUnknown 49 } 50 }