HandlesDocuments.php 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?php
  2. declare(strict_types=1);
  3. namespace MeiliSearch\Endpoints\Delegates;
  4. use MeiliSearch\Contracts\Http;
  5. use MeiliSearch\Exceptions\InvalidArgumentException;
  6. /**
  7. * @property Http http
  8. */
  9. trait HandlesDocuments
  10. {
  11. public function getDocument($documentId)
  12. {
  13. $this->assertValidDocumentId($documentId);
  14. return $this->http->get(self::PATH.'/'.$this->uid.'/documents/'.$documentId);
  15. }
  16. public function getDocuments(array $query = [])
  17. {
  18. return $this->http->get(self::PATH.'/'.$this->uid.'/documents', $query);
  19. }
  20. public function addDocuments(array $documents, ?string $primaryKey = null)
  21. {
  22. return $this->http->post(self::PATH.'/'.$this->uid.'/documents', $documents, ['primaryKey' => $primaryKey]);
  23. }
  24. public function updateDocuments(array $documents, ?string $primaryKey = null)
  25. {
  26. return $this->http->put(self::PATH.'/'.$this->uid.'/documents', $documents, ['primaryKey' => $primaryKey]);
  27. }
  28. public function deleteAllDocuments(): array
  29. {
  30. return $this->http->delete(self::PATH.'/'.$this->uid.'/documents');
  31. }
  32. public function deleteDocument($documentId): array
  33. {
  34. $this->assertValidDocumentId($documentId);
  35. return $this->http->delete(self::PATH.'/'.$this->uid.'/documents/'.$documentId);
  36. }
  37. public function deleteDocuments(array $documents): array
  38. {
  39. return $this->http->post(self::PATH.'/'.$this->uid.'/documents/delete-batch', $documents);
  40. }
  41. private function assertValidDocumentId($documentId): void
  42. {
  43. if (!\is_string($documentId) && !\is_int($documentId)) {
  44. throw InvalidArgumentException::invalidType('documentId', ['string', 'int']);
  45. }
  46. if (\is_string($documentId) && '' === trim($documentId)) {
  47. throw InvalidArgumentException::emptyArgument('documentId');
  48. }
  49. }
  50. }