collection.go 978 字节
Newer Older
B
bigsheeper 已提交
1 2
package reader

3 4 5 6 7 8 9 10 11
/*

#cgo CFLAGS: -I../core/include

#cgo LDFLAGS: -L../core/lib -lmilvus_dog_segment -Wl,-rpath=../core/lib

#include "partition_c.h"

*/
B
bigsheeper 已提交
12 13 14 15 16 17 18 19
import "C"
import (
	"errors"
)

type Collection struct {
	CollectionPtr *C.Collection
	CollectionName string
20
	Partitions []*Partition
B
bigsheeper 已提交
21 22
}

23
func (c *Collection) NewPartition(partitionName string) *Partition {
24
	cName := C.CString(partitionName)
25
	partitionPtr := C.NewPartition(c.CollectionPtr, cName)
B
bigsheeper 已提交
26

27 28
	var newPartition = &Partition{PartitionPtr: partitionPtr, PartitionName: partitionName}
	c.Partitions = append(c.Partitions, newPartition)
29
	return newPartition
B
bigsheeper 已提交
30 31
}

32 33 34
func (c *Collection) DeletePartition(partition *Partition) {
	cPtr := partition.PartitionPtr
	C.DeletePartition(cPtr)
B
bigsheeper 已提交
35

36
	// TODO: remove from c.Partitions
B
bigsheeper 已提交
37 38 39 40 41 42 43 44 45 46 47
}

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
}