github.com/weaviate/weaviate@v1.24.6/adapters/handlers/rest/clusterapi/indices_payloads.go (about) 1 // _ _ 2 // __ _____ __ ___ ___ __ _| |_ ___ 3 // \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \ 4 // \ V V / __/ (_| |\ V /| | (_| | || __/ 5 // \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___| 6 // 7 // Copyright © 2016 - 2024 Weaviate B.V. All rights reserved. 8 // 9 // CONTACT: hello@weaviate.io 10 // 11 12 package clusterapi 13 14 import ( 15 "bytes" 16 "encoding/binary" 17 "encoding/json" 18 "fmt" 19 "io" 20 "math" 21 "net/http" 22 23 "github.com/go-openapi/strfmt" 24 "github.com/pkg/errors" 25 "github.com/weaviate/weaviate/entities/additional" 26 "github.com/weaviate/weaviate/entities/aggregation" 27 "github.com/weaviate/weaviate/entities/filters" 28 "github.com/weaviate/weaviate/entities/searchparams" 29 "github.com/weaviate/weaviate/entities/storobj" 30 "github.com/weaviate/weaviate/usecases/objects" 31 "github.com/weaviate/weaviate/usecases/scaler" 32 ) 33 34 var IndicesPayloads = indicesPayloads{} 35 36 type indicesPayloads struct { 37 ErrorList errorListPayload 38 SingleObject singleObjectPayload 39 MergeDoc mergeDocPayload 40 ObjectList objectListPayload 41 VersionedObjectList versionedObjectListPayload 42 SearchResults searchResultsPayload 43 SearchParams searchParamsPayload 44 ReferenceList referenceListPayload 45 AggregationParams aggregationParamsPayload 46 AggregationResult aggregationResultPayload 47 FindUUIDsParams findUUIDsParamsPayload 48 FindUUIDsResults findUUIDsResultsPayload 49 BatchDeleteParams batchDeleteParamsPayload 50 BatchDeleteResults batchDeleteResultsPayload 51 GetShardQueueSizeParams getShardQueueSizeParamsPayload 52 GetShardQueueSizeResults getShardQueueSizeResultsPayload 53 GetShardStatusParams getShardStatusParamsPayload 54 GetShardStatusResults getShardStatusResultsPayload 55 UpdateShardStatusParams updateShardStatusParamsPayload 56 UpdateShardsStatusResults updateShardsStatusResultsPayload 57 ShardFiles shardFilesPayload 58 IncreaseReplicationFactor increaseReplicationFactorPayload 59 } 60 61 type increaseReplicationFactorPayload struct{} 62 63 func (p increaseReplicationFactorPayload) Marshall(dist scaler.ShardDist) ([]byte, error) { 64 type payload struct { 65 ShardDist scaler.ShardDist `json:"shard_distribution"` 66 } 67 68 pay := payload{ShardDist: dist} 69 return json.Marshal(pay) 70 } 71 72 func (p increaseReplicationFactorPayload) Unmarshal(in []byte) (scaler.ShardDist, error) { 73 type payload struct { 74 ShardDist scaler.ShardDist `json:"shard_distribution"` 75 } 76 77 pay := payload{} 78 if err := json.Unmarshal(in, &pay); err != nil { 79 return nil, fmt.Errorf("unmarshal replication factor payload: %w", err) 80 } 81 82 return pay.ShardDist, nil 83 } 84 85 type errorListPayload struct{} 86 87 func (e errorListPayload) MIME() string { 88 return "application/vnd.weaviate.error.list+json" 89 } 90 91 func (e errorListPayload) SetContentTypeHeader(w http.ResponseWriter) { 92 w.Header().Set("content-type", e.MIME()) 93 } 94 95 func (e errorListPayload) CheckContentTypeHeader(r *http.Response) (string, bool) { 96 ct := r.Header.Get("content-type") 97 return ct, ct == e.MIME() 98 } 99 100 func (e errorListPayload) Marshal(in []error) ([]byte, error) { 101 converted := make([]interface{}, len(in)) 102 for i, err := range in { 103 if err == nil { 104 continue 105 } 106 107 converted[i] = err.Error() 108 } 109 110 return json.Marshal(converted) 111 } 112 113 func (e errorListPayload) Unmarshal(in []byte) []error { 114 var msgs []interface{} 115 json.Unmarshal(in, &msgs) 116 117 converted := make([]error, len(msgs)) 118 119 for i, msg := range msgs { 120 if msg == nil { 121 continue 122 } 123 124 converted[i] = errors.New(msg.(string)) 125 } 126 127 return converted 128 } 129 130 type singleObjectPayload struct{} 131 132 func (p singleObjectPayload) MIME() string { 133 return "application/vnd.weaviate.storobj+octet-stream" 134 } 135 136 func (p singleObjectPayload) SetContentTypeHeader(w http.ResponseWriter) { 137 w.Header().Set("content-type", p.MIME()) 138 } 139 140 func (p singleObjectPayload) SetContentTypeHeaderReq(r *http.Request) { 141 r.Header.Set("content-type", p.MIME()) 142 } 143 144 func (p singleObjectPayload) CheckContentTypeHeader(r *http.Response) (string, bool) { 145 ct := r.Header.Get("content-type") 146 return ct, ct == p.MIME() 147 } 148 149 func (p singleObjectPayload) Marshal(in *storobj.Object) ([]byte, error) { 150 return in.MarshalBinary() 151 } 152 153 func (p singleObjectPayload) Unmarshal(in []byte) (*storobj.Object, error) { 154 return storobj.FromBinary(in) 155 } 156 157 type objectListPayload struct{} 158 159 func (p objectListPayload) MIME() string { 160 return "application/vnd.weaviate.storobj.list+octet-stream" 161 } 162 163 func (p objectListPayload) CheckContentTypeHeader(r *http.Response) (string, bool) { 164 ct := r.Header.Get("content-type") 165 return ct, ct == p.MIME() 166 } 167 168 func (p objectListPayload) SetContentTypeHeader(w http.ResponseWriter) { 169 w.Header().Set("content-type", p.MIME()) 170 } 171 172 func (p objectListPayload) SetContentTypeHeaderReq(r *http.Request) { 173 r.Header.Set("content-type", p.MIME()) 174 } 175 176 func (p objectListPayload) Marshal(in []*storobj.Object) ([]byte, error) { 177 // NOTE: This implementation is not optimized for allocation efficiency, 178 // reserve 1024 byte per object which is rather arbitrary 179 out := make([]byte, 0, 1024*len(in)) 180 181 reusableLengthBuf := make([]byte, 8) 182 for _, ind := range in { 183 if ind != nil { 184 bytes, err := ind.MarshalBinary() 185 if err != nil { 186 return nil, err 187 } 188 189 length := uint64(len(bytes)) 190 binary.LittleEndian.PutUint64(reusableLengthBuf, length) 191 192 out = append(out, reusableLengthBuf...) 193 out = append(out, bytes...) 194 } 195 } 196 197 return out, nil 198 } 199 200 func (p objectListPayload) Unmarshal(in []byte) ([]*storobj.Object, error) { 201 var out []*storobj.Object 202 203 reusableLengthBuf := make([]byte, 8) 204 r := bytes.NewReader(in) 205 206 for { 207 _, err := r.Read(reusableLengthBuf) 208 if err == io.EOF { 209 break 210 } 211 if err != nil { 212 return nil, err 213 } 214 215 payloadBytes := make([]byte, binary.LittleEndian.Uint64(reusableLengthBuf)) 216 _, err = r.Read(payloadBytes) 217 if err != nil { 218 return nil, err 219 } 220 221 obj, err := storobj.FromBinary(payloadBytes) 222 if err != nil { 223 return nil, err 224 } 225 226 out = append(out, obj) 227 } 228 229 return out, nil 230 } 231 232 type versionedObjectListPayload struct{} 233 234 func (p versionedObjectListPayload) MIME() string { 235 return "application/vnd.weaviate.vobject.list+octet-stream" 236 } 237 238 func (p versionedObjectListPayload) CheckContentTypeHeader(r *http.Response) (string, bool) { 239 ct := r.Header.Get("content-type") 240 return ct, ct == p.MIME() 241 } 242 243 func (p versionedObjectListPayload) SetContentTypeHeader(w http.ResponseWriter) { 244 w.Header().Set("content-type", p.MIME()) 245 } 246 247 func (p versionedObjectListPayload) SetContentTypeHeaderReq(r *http.Request) { 248 r.Header.Set("content-type", p.MIME()) 249 } 250 251 func (p versionedObjectListPayload) CheckContentTypeHeaderReq(r *http.Request) (string, bool) { 252 ct := r.Header.Get("content-type") 253 return ct, ct == p.MIME() 254 } 255 256 func (p versionedObjectListPayload) Marshal(in []*objects.VObject) ([]byte, error) { 257 // NOTE: This implementation is not optimized for allocation efficiency, 258 // reserve 1024 byte per object which is rather arbitrary 259 out := make([]byte, 0, 1024*len(in)) 260 261 reusableLengthBuf := make([]byte, 8) 262 for _, ind := range in { 263 objBytes, err := ind.MarshalBinary() 264 if err != nil { 265 return nil, err 266 } 267 268 length := uint64(len(objBytes)) 269 binary.LittleEndian.PutUint64(reusableLengthBuf, length) 270 271 out = append(out, reusableLengthBuf...) 272 out = append(out, objBytes...) 273 } 274 275 return out, nil 276 } 277 278 func (p versionedObjectListPayload) Unmarshal(in []byte) ([]*objects.VObject, error) { 279 var out []*objects.VObject 280 281 reusableLengthBuf := make([]byte, 8) 282 r := bytes.NewReader(in) 283 284 for { 285 _, err := r.Read(reusableLengthBuf) 286 if err == io.EOF { 287 break 288 } 289 if err != nil { 290 return nil, err 291 } 292 293 ln := binary.LittleEndian.Uint64(reusableLengthBuf) 294 payloadBytes := make([]byte, ln) 295 _, err = r.Read(payloadBytes) 296 if err != nil { 297 return nil, err 298 } 299 300 var vobj objects.VObject 301 err = vobj.UnmarshalBinary(payloadBytes) 302 if err != nil { 303 return nil, err 304 } 305 306 out = append(out, &vobj) 307 } 308 309 return out, nil 310 } 311 312 type mergeDocPayload struct{} 313 314 func (p mergeDocPayload) MIME() string { 315 return "application/vnd.weaviate.mergedoc+json" 316 } 317 318 func (p mergeDocPayload) SetContentTypeHeader(w http.ResponseWriter) { 319 w.Header().Set("content-type", p.MIME()) 320 } 321 322 func (p mergeDocPayload) SetContentTypeHeaderReq(r *http.Request) { 323 r.Header.Set("content-type", p.MIME()) 324 } 325 326 func (p mergeDocPayload) CheckContentTypeHeaderReq(r *http.Request) (string, bool) { 327 ct := r.Header.Get("content-type") 328 return ct, ct == p.MIME() 329 } 330 331 func (p mergeDocPayload) Marshal(in objects.MergeDocument) ([]byte, error) { 332 // assumes that this type is fully json-marshable. Not the most 333 // bandwidth-efficient way, but this is unlikely to become a bottleneck. If it 334 // does, a custom binary marshaller might be more appropriate 335 return json.Marshal(in) 336 } 337 338 func (p mergeDocPayload) Unmarshal(in []byte) (objects.MergeDocument, error) { 339 var mergeDoc objects.MergeDocument 340 err := json.Unmarshal(in, &mergeDoc) 341 return mergeDoc, err 342 } 343 344 type searchParamsPayload struct{} 345 346 func (p searchParamsPayload) Marshal(vector []float32, targetVector string, limit int, 347 filter *filters.LocalFilter, keywordRanking *searchparams.KeywordRanking, 348 sort []filters.Sort, cursor *filters.Cursor, groupBy *searchparams.GroupBy, 349 addP additional.Properties, 350 ) ([]byte, error) { 351 type params struct { 352 SearchVector []float32 `json:"searchVector"` 353 TargetVector string `json:"targetVector"` 354 Limit int `json:"limit"` 355 Filters *filters.LocalFilter `json:"filters"` 356 KeywordRanking *searchparams.KeywordRanking `json:"keywordRanking"` 357 Sort []filters.Sort `json:"sort"` 358 Cursor *filters.Cursor `json:"cursor"` 359 GroupBy *searchparams.GroupBy `json:"groupBy"` 360 Additional additional.Properties `json:"additional"` 361 } 362 363 par := params{vector, targetVector, limit, filter, keywordRanking, sort, cursor, groupBy, addP} 364 return json.Marshal(par) 365 } 366 367 func (p searchParamsPayload) Unmarshal(in []byte) ([]float32, string, float32, int, 368 *filters.LocalFilter, *searchparams.KeywordRanking, []filters.Sort, 369 *filters.Cursor, *searchparams.GroupBy, additional.Properties, error, 370 ) { 371 type searchParametersPayload struct { 372 SearchVector []float32 `json:"searchVector"` 373 TargetVector string `json:"targetVector"` 374 Distance float32 `json:"distance"` 375 Limit int `json:"limit"` 376 Filters *filters.LocalFilter `json:"filters"` 377 KeywordRanking *searchparams.KeywordRanking `json:"keywordRanking"` 378 Sort []filters.Sort `json:"sort"` 379 Cursor *filters.Cursor `json:"cursor"` 380 GroupBy *searchparams.GroupBy `json:"groupBy"` 381 Additional additional.Properties `json:"additional"` 382 } 383 var par searchParametersPayload 384 err := json.Unmarshal(in, &par) 385 return par.SearchVector, par.TargetVector, par.Distance, par.Limit, 386 par.Filters, par.KeywordRanking, par.Sort, par.Cursor, par.GroupBy, par.Additional, err 387 } 388 389 func (p searchParamsPayload) MIME() string { 390 return "vnd.weaviate.searchparams+json" 391 } 392 393 func (p searchParamsPayload) CheckContentTypeHeaderReq(r *http.Request) (string, bool) { 394 ct := r.Header.Get("content-type") 395 return ct, ct == p.MIME() 396 } 397 398 func (p searchParamsPayload) SetContentTypeHeaderReq(r *http.Request) { 399 r.Header.Set("content-type", p.MIME()) 400 } 401 402 type searchResultsPayload struct{} 403 404 func (p searchResultsPayload) Unmarshal(in []byte) ([]*storobj.Object, []float32, error) { 405 read := uint64(0) 406 407 objsLength := binary.LittleEndian.Uint64(in[read : read+8]) 408 read += 8 409 410 objs, err := IndicesPayloads.ObjectList.Unmarshal(in[read : read+objsLength]) 411 if err != nil { 412 return nil, nil, err 413 } 414 read += objsLength 415 416 distsLength := binary.LittleEndian.Uint64(in[read : read+8]) 417 read += 8 418 419 dists := make([]float32, distsLength) 420 for i := range dists { 421 dists[i] = math.Float32frombits(binary.LittleEndian.Uint32(in[read : read+4])) 422 read += 4 423 } 424 425 if read != uint64(len(in)) { 426 return nil, nil, errors.Errorf("corrupt read: %d != %d", read, len(in)) 427 } 428 429 return objs, dists, nil 430 } 431 432 func (p searchResultsPayload) Marshal(objs []*storobj.Object, 433 dists []float32, 434 ) ([]byte, error) { 435 reusableLengthBuf := make([]byte, 8) 436 var out []byte 437 objsBytes, err := IndicesPayloads.ObjectList.Marshal(objs) 438 if err != nil { 439 return nil, err 440 } 441 442 objsLength := uint64(len(objsBytes)) 443 binary.LittleEndian.PutUint64(reusableLengthBuf, objsLength) 444 445 out = append(out, reusableLengthBuf...) 446 out = append(out, objsBytes...) 447 448 distsLength := uint64(len(dists)) 449 binary.LittleEndian.PutUint64(reusableLengthBuf, distsLength) 450 out = append(out, reusableLengthBuf...) 451 452 distsBuf := make([]byte, distsLength*4) 453 for i, dist := range dists { 454 distUint32 := math.Float32bits(dist) 455 binary.LittleEndian.PutUint32(distsBuf[(i*4):((i+1)*4)], distUint32) 456 } 457 out = append(out, distsBuf...) 458 459 return out, nil 460 } 461 462 func (p searchResultsPayload) MIME() string { 463 return "application/vnd.weaviate.shardsearchresults+octet-stream" 464 } 465 466 func (p searchResultsPayload) SetContentTypeHeader(w http.ResponseWriter) { 467 w.Header().Set("content-type", p.MIME()) 468 } 469 470 func (p searchResultsPayload) CheckContentTypeHeader(r *http.Response) (string, bool) { 471 ct := r.Header.Get("content-type") 472 return ct, ct == p.MIME() 473 } 474 475 type referenceListPayload struct{} 476 477 func (p referenceListPayload) MIME() string { 478 return "application/vnd.weaviate.references.list+json" 479 } 480 481 func (p referenceListPayload) SetContentTypeHeaderReq(r *http.Request) { 482 r.Header.Set("content-type", p.MIME()) 483 } 484 485 func (p referenceListPayload) CheckContentTypeHeaderReq(r *http.Request) (string, bool) { 486 ct := r.Header.Get("content-type") 487 return ct, ct == p.MIME() 488 } 489 490 func (p referenceListPayload) Marshal(in objects.BatchReferences) ([]byte, error) { 491 // assumes that this type is fully json-marshable. Not the most 492 // bandwidth-efficient way, but this is unlikely to become a bottleneck. If it 493 // does, a custom binary marshaller might be more appropriate 494 return json.Marshal(in) 495 } 496 497 func (p referenceListPayload) Unmarshal(in []byte) (objects.BatchReferences, error) { 498 var out objects.BatchReferences 499 err := json.Unmarshal(in, &out) 500 return out, err 501 } 502 503 type aggregationParamsPayload struct{} 504 505 func (p aggregationParamsPayload) Marshal(params aggregation.Params) ([]byte, error) { 506 // assumes that this type is fully json-marshable. Not the most 507 // bandwidth-efficient way, but this is unlikely to become a bottleneck. If it 508 // does, a custom binary marshaller might be more appropriate 509 return json.Marshal(params) 510 } 511 512 func (p aggregationParamsPayload) Unmarshal(in []byte) (aggregation.Params, error) { 513 var out aggregation.Params 514 err := json.Unmarshal(in, &out) 515 return out, err 516 } 517 518 func (p aggregationParamsPayload) MIME() string { 519 return "application/vnd.weaviate.aggregations.params+json" 520 } 521 522 func (p aggregationParamsPayload) SetContentTypeHeaderReq(r *http.Request) { 523 r.Header.Set("content-type", p.MIME()) 524 } 525 526 func (p aggregationParamsPayload) CheckContentTypeHeaderReq(r *http.Request) (string, bool) { 527 ct := r.Header.Get("content-type") 528 return ct, ct == p.MIME() 529 } 530 531 type aggregationResultPayload struct{} 532 533 func (p aggregationResultPayload) MIME() string { 534 return "application/vnd.weaviate.aggregations.result+json" 535 } 536 537 func (p aggregationResultPayload) CheckContentTypeHeader(res *http.Response) (string, bool) { 538 ct := res.Header.Get("content-type") 539 return ct, ct == p.MIME() 540 } 541 542 func (p aggregationResultPayload) SetContentTypeHeader(w http.ResponseWriter) { 543 w.Header().Set("content-type", p.MIME()) 544 } 545 546 func (p aggregationResultPayload) Marshal(in *aggregation.Result) ([]byte, error) { 547 // assumes that this type is fully json-marshable. Not the most 548 // bandwidth-efficient way, but this is unlikely to become a bottleneck. If it 549 // does, a custom binary marshaller might be more appropriate 550 return json.Marshal(in) 551 } 552 553 func (p aggregationResultPayload) Unmarshal(in []byte) (*aggregation.Result, error) { 554 var out aggregation.Result 555 err := json.Unmarshal(in, &out) 556 return &out, err 557 } 558 559 type findUUIDsParamsPayload struct{} 560 561 func (p findUUIDsParamsPayload) Marshal(filter *filters.LocalFilter) ([]byte, error) { 562 type params struct { 563 Filters *filters.LocalFilter `json:"filters"` 564 } 565 566 par := params{filter} 567 return json.Marshal(par) 568 } 569 570 func (p findUUIDsParamsPayload) Unmarshal(in []byte) (*filters.LocalFilter, error) { 571 type findUUIDsParametersPayload struct { 572 Filters *filters.LocalFilter `json:"filters"` 573 } 574 var par findUUIDsParametersPayload 575 err := json.Unmarshal(in, &par) 576 return par.Filters, err 577 } 578 579 func (p findUUIDsParamsPayload) MIME() string { 580 return "vnd.weaviate.finduuidsparams+json" 581 } 582 583 func (p findUUIDsParamsPayload) CheckContentTypeHeaderReq(r *http.Request) (string, bool) { 584 ct := r.Header.Get("content-type") 585 return ct, ct == p.MIME() 586 } 587 588 func (p findUUIDsParamsPayload) SetContentTypeHeaderReq(r *http.Request) { 589 r.Header.Set("content-type", p.MIME()) 590 } 591 592 type findUUIDsResultsPayload struct{} 593 594 func (p findUUIDsResultsPayload) Unmarshal(in []byte) ([]strfmt.UUID, error) { 595 var out []strfmt.UUID 596 err := json.Unmarshal(in, &out) 597 return out, err 598 } 599 600 func (p findUUIDsResultsPayload) Marshal(in []strfmt.UUID) ([]byte, error) { 601 return json.Marshal(in) 602 } 603 604 func (p findUUIDsResultsPayload) MIME() string { 605 return "application/vnd.weaviate.findUUIDsresults+octet-stream" 606 } 607 608 func (p findUUIDsResultsPayload) SetContentTypeHeader(w http.ResponseWriter) { 609 w.Header().Set("content-type", p.MIME()) 610 } 611 612 func (p findUUIDsResultsPayload) CheckContentTypeHeader(r *http.Response) (string, bool) { 613 ct := r.Header.Get("content-type") 614 return ct, ct == p.MIME() 615 } 616 617 type batchDeleteParamsPayload struct{} 618 619 func (p batchDeleteParamsPayload) Marshal(uuids []strfmt.UUID, dryRun bool) ([]byte, error) { 620 type params struct { 621 UUIDs []strfmt.UUID `json:"uuids"` 622 DryRun bool `json:"dryRun"` 623 } 624 625 par := params{uuids, dryRun} 626 return json.Marshal(par) 627 } 628 629 func (p batchDeleteParamsPayload) Unmarshal(in []byte) ([]strfmt.UUID, bool, error) { 630 type batchDeleteParametersPayload struct { 631 UUIDs []strfmt.UUID `json:"uuids"` 632 DryRun bool `json:"dryRun"` 633 } 634 var par batchDeleteParametersPayload 635 err := json.Unmarshal(in, &par) 636 return par.UUIDs, par.DryRun, err 637 } 638 639 func (p batchDeleteParamsPayload) MIME() string { 640 return "vnd.weaviate.batchdeleteparams+json" 641 } 642 643 func (p batchDeleteParamsPayload) CheckContentTypeHeaderReq(r *http.Request) (string, bool) { 644 ct := r.Header.Get("content-type") 645 return ct, ct == p.MIME() 646 } 647 648 func (p batchDeleteParamsPayload) SetContentTypeHeaderReq(r *http.Request) { 649 r.Header.Set("content-type", p.MIME()) 650 } 651 652 type batchDeleteResultsPayload struct{} 653 654 func (p batchDeleteResultsPayload) Unmarshal(in []byte) (objects.BatchSimpleObjects, error) { 655 var out objects.BatchSimpleObjects 656 err := json.Unmarshal(in, &out) 657 return out, err 658 } 659 660 func (p batchDeleteResultsPayload) Marshal(in objects.BatchSimpleObjects) ([]byte, error) { 661 return json.Marshal(in) 662 } 663 664 func (p batchDeleteResultsPayload) MIME() string { 665 return "application/vnd.weaviate.batchdeleteresults+octet-stream" 666 } 667 668 func (p batchDeleteResultsPayload) SetContentTypeHeader(w http.ResponseWriter) { 669 w.Header().Set("content-type", p.MIME()) 670 } 671 672 func (p batchDeleteResultsPayload) CheckContentTypeHeader(r *http.Response) (string, bool) { 673 ct := r.Header.Get("content-type") 674 return ct, ct == p.MIME() 675 } 676 677 type getShardQueueSizeParamsPayload struct{} 678 679 func (p getShardQueueSizeParamsPayload) MIME() string { 680 return "vnd.weaviate.getshardqueuesizeparams+json" 681 } 682 683 func (p getShardQueueSizeParamsPayload) CheckContentTypeHeaderReq(r *http.Request) (string, bool) { 684 ct := r.Header.Get("content-type") 685 return ct, ct == p.MIME() 686 } 687 688 func (p getShardQueueSizeParamsPayload) SetContentTypeHeaderReq(r *http.Request) { 689 r.Header.Set("content-type", p.MIME()) 690 } 691 692 type getShardQueueSizeResultsPayload struct{} 693 694 func (p getShardQueueSizeResultsPayload) Unmarshal(in []byte) (int64, error) { 695 var out int64 696 err := json.Unmarshal(in, &out) 697 return out, err 698 } 699 700 func (p getShardQueueSizeResultsPayload) Marshal(in int64) ([]byte, error) { 701 return json.Marshal(in) 702 } 703 704 func (p getShardQueueSizeResultsPayload) MIME() string { 705 return "application/vnd.weaviate.getshardqueuesizeresults+octet-stream" 706 } 707 708 func (p getShardQueueSizeResultsPayload) SetContentTypeHeader(w http.ResponseWriter) { 709 w.Header().Set("content-type", p.MIME()) 710 } 711 712 func (p getShardQueueSizeResultsPayload) CheckContentTypeHeader(r *http.Response) (string, bool) { 713 ct := r.Header.Get("content-type") 714 return ct, ct == p.MIME() 715 } 716 717 type getShardStatusParamsPayload struct{} 718 719 func (p getShardStatusParamsPayload) MIME() string { 720 return "vnd.weaviate.getshardstatusparams+json" 721 } 722 723 func (p getShardStatusParamsPayload) CheckContentTypeHeaderReq(r *http.Request) (string, bool) { 724 ct := r.Header.Get("content-type") 725 return ct, ct == p.MIME() 726 } 727 728 func (p getShardStatusParamsPayload) SetContentTypeHeaderReq(r *http.Request) { 729 r.Header.Set("content-type", p.MIME()) 730 } 731 732 type getShardStatusResultsPayload struct{} 733 734 func (p getShardStatusResultsPayload) Unmarshal(in []byte) (string, error) { 735 var out string 736 err := json.Unmarshal(in, &out) 737 return out, err 738 } 739 740 func (p getShardStatusResultsPayload) Marshal(in string) ([]byte, error) { 741 return json.Marshal(in) 742 } 743 744 func (p getShardStatusResultsPayload) MIME() string { 745 return "application/vnd.weaviate.getshardstatusresults+octet-stream" 746 } 747 748 func (p getShardStatusResultsPayload) SetContentTypeHeader(w http.ResponseWriter) { 749 w.Header().Set("content-type", p.MIME()) 750 } 751 752 func (p getShardStatusResultsPayload) CheckContentTypeHeader(r *http.Response) (string, bool) { 753 ct := r.Header.Get("content-type") 754 return ct, ct == p.MIME() 755 } 756 757 type updateShardStatusParamsPayload struct{} 758 759 func (p updateShardStatusParamsPayload) Marshal(targetStatus string) ([]byte, error) { 760 type params struct { 761 TargetStatus string `json:"targetStatus"` 762 } 763 764 par := params{targetStatus} 765 return json.Marshal(par) 766 } 767 768 func (p updateShardStatusParamsPayload) Unmarshal(in []byte) (string, error) { 769 type updateShardStatusParametersPayload struct { 770 TargetStatus string `json:"targetStatus"` 771 } 772 var par updateShardStatusParametersPayload 773 err := json.Unmarshal(in, &par) 774 return par.TargetStatus, err 775 } 776 777 func (p updateShardStatusParamsPayload) MIME() string { 778 return "vnd.weaviate.updateshardstatusparams+json" 779 } 780 781 func (p updateShardStatusParamsPayload) CheckContentTypeHeaderReq(r *http.Request) (string, bool) { 782 ct := r.Header.Get("content-type") 783 return ct, ct == p.MIME() 784 } 785 786 func (p updateShardStatusParamsPayload) SetContentTypeHeaderReq(r *http.Request) { 787 r.Header.Set("content-type", p.MIME()) 788 } 789 790 type updateShardsStatusResultsPayload struct{} 791 792 func (p updateShardsStatusResultsPayload) MIME() string { 793 return "application/vnd.weaviate.updateshardstatusresults+octet-stream" 794 } 795 796 func (p updateShardsStatusResultsPayload) SetContentTypeHeader(w http.ResponseWriter) { 797 w.Header().Set("content-type", p.MIME()) 798 } 799 800 func (p updateShardsStatusResultsPayload) CheckContentTypeHeader(r *http.Response) (string, bool) { 801 ct := r.Header.Get("content-type") 802 return ct, ct == p.MIME() 803 } 804 805 type shardFilesPayload struct{} 806 807 func (p shardFilesPayload) MIME() string { 808 return "application/vnd.weaviate.indexfiles+octet-stream" 809 } 810 811 func (p shardFilesPayload) SetContentTypeHeaderReq(r *http.Request) { 812 r.Header.Set("content-type", p.MIME()) 813 } 814 815 func (p shardFilesPayload) CheckContentTypeHeaderReq(r *http.Request) (string, bool) { 816 ct := r.Header.Get("content-type") 817 return ct, ct == p.MIME() 818 }