mirror of https://github.com/milvus-io/milvus.git
97 lines
1.9 KiB
Go
97 lines
1.9 KiB
Go
package model
|
|
|
|
import (
|
|
"github.com/milvus-io/milvus/internal/proto/commonpb"
|
|
pb "github.com/milvus-io/milvus/internal/proto/etcdpb"
|
|
)
|
|
|
|
type Index struct {
|
|
CollectionID int64
|
|
FieldID int64
|
|
IndexID int64
|
|
IndexName string
|
|
IsDeleted bool
|
|
CreateTime uint64
|
|
IndexParams []*commonpb.KeyValuePair
|
|
SegmentIndexes map[int64]SegmentIndex //segmentID -> segmentIndex
|
|
Extra map[string]string
|
|
}
|
|
|
|
func UnmarshalIndexModel(indexInfo *pb.IndexInfo) *Index {
|
|
if indexInfo == nil {
|
|
return nil
|
|
}
|
|
|
|
return &Index{
|
|
IndexName: indexInfo.IndexName,
|
|
IndexID: indexInfo.IndexID,
|
|
IndexParams: indexInfo.IndexParams,
|
|
IsDeleted: indexInfo.Deleted,
|
|
CreateTime: indexInfo.CreateTime,
|
|
}
|
|
}
|
|
|
|
func MarshalIndexModel(index *Index) *pb.IndexInfo {
|
|
if index == nil {
|
|
return nil
|
|
}
|
|
|
|
return &pb.IndexInfo{
|
|
IndexName: index.IndexName,
|
|
IndexID: index.IndexID,
|
|
IndexParams: index.IndexParams,
|
|
Deleted: index.IsDeleted,
|
|
CreateTime: index.CreateTime,
|
|
}
|
|
}
|
|
|
|
func MergeIndexModel(a *Index, b *Index) *Index {
|
|
if a == nil {
|
|
return b
|
|
}
|
|
|
|
if b == nil {
|
|
return a
|
|
}
|
|
|
|
newIdx := *a
|
|
if b.SegmentIndexes != nil {
|
|
if newIdx.SegmentIndexes == nil {
|
|
newIdx.SegmentIndexes = b.SegmentIndexes
|
|
} else {
|
|
for segID, segmentIndex := range b.SegmentIndexes {
|
|
newIdx.SegmentIndexes[segID] = segmentIndex
|
|
}
|
|
}
|
|
}
|
|
|
|
if newIdx.CollectionID == 0 && b.CollectionID != 0 {
|
|
newIdx.CollectionID = b.CollectionID
|
|
}
|
|
|
|
if newIdx.FieldID == 0 && b.FieldID != 0 {
|
|
newIdx.FieldID = b.FieldID
|
|
}
|
|
|
|
if newIdx.IndexID == 0 && b.IndexID != 0 {
|
|
newIdx.IndexID = b.IndexID
|
|
}
|
|
|
|
if newIdx.IndexName == "" && b.IndexName != "" {
|
|
newIdx.IndexName = b.IndexName
|
|
}
|
|
|
|
if newIdx.IndexParams == nil && b.IndexParams != nil {
|
|
newIdx.IndexParams = b.IndexParams
|
|
}
|
|
|
|
newIdx.IsDeleted = b.IsDeleted
|
|
newIdx.CreateTime = b.CreateTime
|
|
|
|
if newIdx.Extra == nil && b.Extra != nil {
|
|
newIdx.Extra = b.Extra
|
|
}
|
|
|
|
return &newIdx
|
|
}
|