Adding upstream version 0.31.1.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
091495b2f3
commit
5d4914ed7f
61 changed files with 30627 additions and 0 deletions
154
index.go
Normal file
154
index.go
Normal file
|
@ -0,0 +1,154 @@
|
|||
package meilisearch
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
// index is the type that represent an index in meilisearch
|
||||
type index struct {
|
||||
uid string
|
||||
primaryKey string
|
||||
client *client
|
||||
}
|
||||
|
||||
func newIndex(cli *client, uid string) IndexManager {
|
||||
return &index{
|
||||
client: cli,
|
||||
uid: uid,
|
||||
}
|
||||
}
|
||||
|
||||
func (i *index) GetTaskReader() TaskReader {
|
||||
return i
|
||||
}
|
||||
|
||||
func (i *index) GetDocumentManager() DocumentManager {
|
||||
return i
|
||||
}
|
||||
|
||||
func (i *index) GetDocumentReader() DocumentReader {
|
||||
return i
|
||||
}
|
||||
|
||||
func (i *index) GetSettingsManager() SettingsManager {
|
||||
return i
|
||||
}
|
||||
|
||||
func (i *index) GetSettingsReader() SettingsReader {
|
||||
return i
|
||||
}
|
||||
|
||||
func (i *index) GetSearch() SearchReader {
|
||||
return i
|
||||
}
|
||||
|
||||
func (i *index) GetIndexReader() IndexReader {
|
||||
return i
|
||||
}
|
||||
|
||||
func (i *index) FetchInfo() (*IndexResult, error) {
|
||||
return i.FetchInfoWithContext(context.Background())
|
||||
}
|
||||
|
||||
func (i *index) FetchInfoWithContext(ctx context.Context) (*IndexResult, error) {
|
||||
resp := new(IndexResult)
|
||||
req := &internalRequest{
|
||||
endpoint: "/indexes/" + i.uid,
|
||||
method: http.MethodGet,
|
||||
withRequest: nil,
|
||||
withResponse: resp,
|
||||
acceptedStatusCodes: []int{http.StatusOK},
|
||||
functionName: "FetchInfo",
|
||||
}
|
||||
if err := i.client.executeRequest(ctx, req); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if resp.PrimaryKey != "" {
|
||||
i.primaryKey = resp.PrimaryKey
|
||||
}
|
||||
resp.IndexManager = i
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
func (i *index) FetchPrimaryKey() (*string, error) {
|
||||
return i.FetchPrimaryKeyWithContext(context.Background())
|
||||
}
|
||||
|
||||
func (i *index) FetchPrimaryKeyWithContext(ctx context.Context) (*string, error) {
|
||||
idx, err := i.FetchInfoWithContext(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
i.primaryKey = idx.PrimaryKey
|
||||
return &idx.PrimaryKey, nil
|
||||
}
|
||||
|
||||
func (i *index) UpdateIndex(primaryKey string) (*TaskInfo, error) {
|
||||
return i.UpdateIndexWithContext(context.Background(), primaryKey)
|
||||
}
|
||||
|
||||
func (i *index) UpdateIndexWithContext(ctx context.Context, primaryKey string) (*TaskInfo, error) {
|
||||
request := &UpdateIndexRequest{
|
||||
PrimaryKey: primaryKey,
|
||||
}
|
||||
i.primaryKey = primaryKey
|
||||
resp := new(TaskInfo)
|
||||
|
||||
req := &internalRequest{
|
||||
endpoint: "/indexes/" + i.uid,
|
||||
method: http.MethodPatch,
|
||||
contentType: contentTypeJSON,
|
||||
withRequest: request,
|
||||
withResponse: resp,
|
||||
acceptedStatusCodes: []int{http.StatusAccepted},
|
||||
functionName: "UpdateIndex",
|
||||
}
|
||||
if err := i.client.executeRequest(ctx, req); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
i.primaryKey = primaryKey
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
func (i *index) Delete(uid string) (bool, error) {
|
||||
return i.DeleteWithContext(context.Background(), uid)
|
||||
}
|
||||
|
||||
func (i *index) DeleteWithContext(ctx context.Context, uid string) (bool, error) {
|
||||
resp := new(TaskInfo)
|
||||
req := &internalRequest{
|
||||
endpoint: "/indexes/" + uid,
|
||||
method: http.MethodDelete,
|
||||
withRequest: nil,
|
||||
withResponse: resp,
|
||||
acceptedStatusCodes: []int{http.StatusAccepted},
|
||||
functionName: "Delete",
|
||||
}
|
||||
// err is not nil if status code is not 204 StatusNoContent
|
||||
if err := i.client.executeRequest(ctx, req); err != nil {
|
||||
return false, err
|
||||
}
|
||||
i.primaryKey = ""
|
||||
return true, nil
|
||||
}
|
||||
|
||||
func (i *index) GetStats() (*StatsIndex, error) {
|
||||
return i.GetStatsWithContext(context.Background())
|
||||
}
|
||||
|
||||
func (i *index) GetStatsWithContext(ctx context.Context) (*StatsIndex, error) {
|
||||
resp := new(StatsIndex)
|
||||
req := &internalRequest{
|
||||
endpoint: "/indexes/" + i.uid + "/stats",
|
||||
method: http.MethodGet,
|
||||
withRequest: nil,
|
||||
withResponse: resp,
|
||||
acceptedStatusCodes: []int{http.StatusOK},
|
||||
functionName: "GetStats",
|
||||
}
|
||||
if err := i.client.executeRequest(ctx, req); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return resp, nil
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue