milvus/reader/collection.go
bigsheeper 5a57b62f0c Refactor collection and partition, wrap cgo interfaces
Signed-off-by: bigsheeper <yihao.dai@zilliz.com>
2020-08-31 15:54:44 +08:00

48 lines
1.0 KiB
Go

package reader
import "C"
import (
"errors"
)
type Collection struct {
CollectionPtr *C.Collection
CollectionName string
Partitions []*Partition
}
func (c *Collection) NewPartition(partitionName string) (*Partition, error) {
cName := C.CString(partitionName)
partitionPtr, status := C.NewPartition(c.CollectionPtr, cName)
if status != 0 {
return nil, errors.New("create partition failed")
}
var newPartition = &Partition{PartitionPtr: partitionPtr, PartitionName: partitionName}
c.Partitions = append(c.Partitions, newPartition)
return newPartition, nil
}
func (c *Collection) DeletePartition(partitionName string) error {
cName := C.CString(partitionName)
status := C.DeletePartition(c.CollectionPtr, cName)
if status != 0 {
return errors.New("create partition failed")
}
// TODO: remove from c.Partitions
return nil
}
func (c *Collection) GetSegments() ([]*Segment, error) {
segments, status := C.GetSegments(c.CollectionPtr)
if status != 0 {
return nil, errors.New("get segments failed")
}
return segments, nil
}