1package sls 2 3import "encoding/json" 4 5type IndexLineConfig struct { 6 TokenList []string `json:"token,omitempty"` 7 CaseSensitive bool `json:"caseSensitive"` 8 IncludeKeys []string `json:"include_keys,omitempty"` 9 Exclude_keys []string `json:"exclude_keys,omitempty"` 10} 11 12type IndexKeyConfig struct { 13 TokenList []string `json:"token,omitempty"` 14 CaseSensitive bool `json:"caseSensitive,omitempty"` 15} 16 17type IndexConfig struct { 18 TTL int `json:"ttl,omitempty"` 19 LineConfig IndexLineConfig `json:"line,omitempty"` 20 KeyConfigList map[string]IndexKeyConfig `json:"keys,omitempty"` 21} 22 23func (proj *Project) CreateIndex(logstore string, indexConfig *IndexConfig) error { 24 data, err := json.Marshal(indexConfig) 25 if err != nil { 26 return err 27 } 28 29 req := &request{ 30 method: METHOD_POST, 31 path: "/logstores/" + logstore + "/index", 32 payload: data, 33 contentType: "application/json", 34 } 35 return proj.client.requestWithClose(req) 36} 37 38func (proj *Project) DeleteIndex(logstore string) error { 39 req := &request{ 40 method: METHOD_DELETE, 41 path: "/logstores/" + logstore + "/index", 42 } 43 44 return proj.client.requestWithClose(req) 45} 46 47func (proj *Project) GetIndex(logstore string) (*IndexConfig, error) { 48 req := &request{ 49 method: METHOD_GET, 50 path: "/logstores/" + logstore + "/index", 51 } 52 indexConfig := &IndexConfig{} 53 if err := proj.client.requestWithJsonResponse(req, indexConfig); err != nil { 54 return nil, err 55 } 56 return indexConfig, nil 57} 58 59func (proj *Project) UpdateIndex(logstore string, indexConfig *IndexConfig) error { 60 data, err := json.Marshal(indexConfig) 61 if err != nil { 62 return err 63 } 64 req := &request{ 65 method: METHOD_PUT, 66 path: "/logstores/" + logstore + "/index", 67 payload: data, 68 contentType: "application/json", 69 } 70 71 return proj.client.requestWithClose(req) 72} 73