diff --git a/src/GraphQL/Client.php b/src/GraphQL/Client.php index 9c039d5..4f1df80 100644 --- a/src/GraphQL/Client.php +++ b/src/GraphQL/Client.php @@ -325,257 +325,257 @@ public function workCount(): int public function createAffiliation(Affiliation $affiliation): string { - return $this->mutation('createAffiliation', $affiliation, 'affiliationId'); + return $this->mutation('createAffiliation', $affiliation->getAllData(), 'affiliationId'); } public function updateAffiliation(Affiliation $affiliation): string { - return $this->mutation('updateAffiliation', $affiliation, 'affiliationId'); + return $this->mutation('updateAffiliation', $affiliation->getAllData(), 'affiliationId'); } - public function deleteAffiliation(Affiliation $affiliation): string + public function deleteAffiliation(string $affiliationId): string { - return $this->mutation('deleteAffiliation', $affiliation, 'affiliationId'); + return $this->mutation('deleteAffiliation', ['affiliationId' => $affiliationId], 'affiliationId'); } public function createContribution(Contribution $contribution): string { - return $this->mutation('createContribution', $contribution, 'contributionId'); + return $this->mutation('createContribution', $contribution->getAllData(), 'contributionId'); } public function updateContribution(Contribution $contribution): string { - return $this->mutation('updateContribution', $contribution, 'contributionId'); + return $this->mutation('updateContribution', $contribution->getAllData(), 'contributionId'); } - public function deleteContribution(Contribution $contribution): string + public function deleteContribution(string $contributionId): string { - return $this->mutation('deleteContribution', $contribution, 'contributionId'); + return $this->mutation('deleteContribution', ['contributionId' => $contributionId], 'contributionId'); } public function createContributor(Contributor $contributor): string { - return $this->mutation('createContributor', $contributor, 'contributorId'); + return $this->mutation('createContributor', $contributor->getAllData(), 'contributorId'); } public function updateContributor(Contributor $contributor): string { - return $this->mutation('updateContributor', $contributor, 'contributorId'); + return $this->mutation('updateContributor', $contributor->getAllData(), 'contributorId'); } - public function deleteContributor(Contributor $contributor): string + public function deleteContributor(string $contributorId): string { - return $this->mutation('deleteContributor', $contributor, 'contributorId'); + return $this->mutation('deleteContributor', ['contributorId' => $contributorId], 'contributorId'); } public function createFunding(Funding $funding): string { - return $this->mutation('createFunding', $funding, 'fundingId'); + return $this->mutation('createFunding', $funding->getAllData(), 'fundingId'); } public function updateFunding(Funding $funding): string { - return $this->mutation('updateFunding', $funding, 'fundingId'); + return $this->mutation('updateFunding', $funding->getAllData(), 'fundingId'); } - public function deleteFunding(Funding $funding): string + public function deleteFunding(string $fundingId): string { - return $this->mutation('deleteFunding', $funding, 'fundingId'); + return $this->mutation('deleteFunding', ['fundingId' => $fundingId], 'fundingId'); } public function createImprint(Imprint $imprint): string { - return $this->mutation('createImprint', $imprint, 'imprintId'); + return $this->mutation('createImprint', $imprint->getAllData(), 'imprintId'); } public function updateImprint(Imprint $imprint): string { - return $this->mutation('updateImprint', $imprint, 'imprintId'); + return $this->mutation('updateImprint', $imprint->getAllData(), 'imprintId'); } - public function deleteImprint(Imprint $imprint): string + public function deleteImprint(string $imprintId): string { - return $this->mutation('deleteImprint', $imprint, 'imprintId'); + return $this->mutation('deleteImprint', ['imprintId' => $imprintId], 'imprintId'); } public function createInstitution(Institution $institution): string { - return $this->mutation('createInstitution', $institution, 'institutionId'); + return $this->mutation('createInstitution', $institution->getAllData(), 'institutionId'); } public function updateInstitution(Institution $institution): string { - return $this->mutation('updateInstitution', $institution, 'institutionId'); + return $this->mutation('updateInstitution', $institution->getAllData(), 'institutionId'); } - public function deleteInstitution(Institution $institution): string + public function deleteInstitution(string $institutionId): string { - return $this->mutation('deleteInstitution', $institution, 'institutionId'); + return $this->mutation('deleteInstitution', ['institutionId' => $institutionId], 'institutionId'); } public function createIssue(Issue $issue): string { - return $this->mutation('createIssue', $issue, 'issueId'); + return $this->mutation('createIssue', $issue->getAllData(), 'issueId'); } public function updateIssue(Issue $issue): string { - return $this->mutation('updateIssue', $issue, 'issueId'); + return $this->mutation('updateIssue', $issue->getAllData(), 'issueId'); } - public function deleteIssue(Issue $issue): string + public function deleteIssue(string $issueId): string { - return $this->mutation('deleteIssue', $issue, 'issueId'); + return $this->mutation('deleteIssue', ['issueId' => $issueId], 'issueId'); } public function createLanguage(Language $language): string { - return $this->mutation('createLanguage', $language, 'languageId'); + return $this->mutation('createLanguage', $language->getAllData(), 'languageId'); } public function updateLanguage(Language $language): string { - return $this->mutation('updateLanguage', $language, 'languageId'); + return $this->mutation('updateLanguage', $language->getAllData(), 'languageId'); } - public function deleteLanguage(Language $language): string + public function deleteLanguage(string $languageId): string { - return $this->mutation('deleteLanguage', $language, 'languageId'); + return $this->mutation('deleteLanguage', ['languageId' => $languageId], 'languageId'); } public function createLocation(Location $location): string { - return $this->mutation('createLocation', $location, 'locationId'); + return $this->mutation('createLocation', $location->getAllData(), 'locationId'); } public function updateLocation(Location $location): string { - return $this->mutation('updateLocation', $location, 'locationId'); + return $this->mutation('updateLocation', $location->getAllData(), 'locationId'); } - public function deleteLocation(Location $location): string + public function deleteLocation(string $locationId): string { - return $this->mutation('deleteLocation', $location, 'locationId'); + return $this->mutation('deleteLocation', ['locationId' => $locationId], 'locationId'); } public function createPrice(Price $price): string { - return $this->mutation('createPrice', $price, 'priceId'); + return $this->mutation('createPrice', $price->getAllData(), 'priceId'); } public function updatePrice(Price $price): string { - return $this->mutation('updatePrice', $price, 'priceId'); + return $this->mutation('updatePrice', $price->getAllData(), 'priceId'); } - public function deletePrice(Price $price): string + public function deletePrice(string $priceId): string { - return $this->mutation('deletePrice', $price, 'priceId'); + return $this->mutation('deletePrice', ['priceId' => $priceId], 'priceId'); } public function createPublication(Publication $publication): string { - return $this->mutation('createPublication', $publication, 'publicationId'); + return $this->mutation('createPublication', $publication->getAllData(), 'publicationId'); } public function updatePublication(Publication $publication): string { - return $this->mutation('updatePublication', $publication, 'publicationId'); + return $this->mutation('updatePublication', $publication->getAllData(), 'publicationId'); } - public function deletePublication(Publication $publication): string + public function deletePublication(string $publicationId): string { - return $this->mutation('deletePublication', $publication, 'publicationId'); + return $this->mutation('deletePublication', ['publicationId' => $publicationId], 'publicationId'); } public function createPublisher(Publisher $publisher): string { - return $this->mutation('createPublisher', $publisher, 'publisherId'); + return $this->mutation('createPublisher', $publisher->getAllData(), 'publisherId'); } public function updatePublisher(Publisher $publisher): string { - return $this->mutation('updatePublisher', $publisher, 'publisherId'); + return $this->mutation('updatePublisher', $publisher->getAllData(), 'publisherId'); } - public function deletePublisher(Publisher $publisher): string + public function deletePublisher(string $publisherId): string { - return $this->mutation('deletePublisher', $publisher, 'publisherId'); + return $this->mutation('deletePublisher', ['publisherId' => $publisherId], 'publisherId'); } public function createReference(Reference $reference): string { - return $this->mutation('createReference', $reference, 'referenceId'); + return $this->mutation('createReference', $reference->getAllData(), 'referenceId'); } public function updateReference(Reference $reference): string { - return $this->mutation('updateReference', $reference, 'referenceId'); + return $this->mutation('updateReference', $reference->getAllData(), 'referenceId'); } - public function deleteReference(Reference $reference): string + public function deleteReference(string $referenceId): string { - return $this->mutation('deleteReference', $reference, 'referenceId'); + return $this->mutation('deleteReference', ['referenceId' => $referenceId], 'referenceId'); } public function createSeries(Series $series): string { - return $this->mutation('createSeries', $series, 'seriesId'); + return $this->mutation('createSeries', $series->getAllData(), 'seriesId'); } public function updateSeries(Series $series): string { - return $this->mutation('updateSeries', $series, 'seriesId'); + return $this->mutation('updateSeries', $series->getAllData(), 'seriesId'); } - public function deleteSeries(Series $series): string + public function deleteSeries(string $seriesId): string { - return $this->mutation('deleteSeries', $series, 'seriesId'); + return $this->mutation('deleteSeries', ['seriesId' => $seriesId], 'seriesId'); } public function createSubject(Subject $subject): string { - return $this->mutation('createSubject', $subject, 'subjectId'); + return $this->mutation('createSubject', $subject->getAllData(), 'subjectId'); } public function updateSubject(Subject $subject): string { - return $this->mutation('updateSubject', $subject, 'subjectId'); + return $this->mutation('updateSubject', $subject->getAllData(), 'subjectId'); } - public function deleteSubject(Subject $subject): string + public function deleteSubject(string $subjectId): string { - return $this->mutation('deleteSubject', $subject, 'subjectId'); + return $this->mutation('deleteSubject', ['subjectId' => $subjectId], 'subjectId'); } public function createWork(Work $work): string { - return $this->mutation('createWork', $work, 'workId'); + return $this->mutation('createWork', $work->getAllData(), 'workId'); } public function updateWork(Work $work): string { - return $this->mutation('updateWork', $work, 'workId'); + return $this->mutation('updateWork', $work->getAllData(), 'workId'); } - public function deleteWork(Work $work): string + public function deleteWork(string $workId): string { - return $this->mutation('deleteWork', $work, 'workId'); + return $this->mutation('deleteWork', ['workId' => $workId], 'workId'); } public function createWorkRelation(WorkRelation $workRelation): string { - return $this->mutation('createWorkRelation', $workRelation, 'workRelationId'); + return $this->mutation('createWorkRelation', $workRelation->getAllData(), 'workRelationId'); } public function updateWorkRelation(WorkRelation $workRelation): string { - return $this->mutation('updateWorkRelation', $workRelation, 'workRelationId'); + return $this->mutation('updateWorkRelation', $workRelation->getAllData(), 'workRelationId'); } - public function deleteWorkRelation(WorkRelation $workRelation): string + public function deleteWorkRelation(string $workRelationId): string { - return $this->mutation('deleteWorkRelation', $workRelation, 'workRelationId'); + return $this->mutation('deleteWorkRelation', ['workRelationId' => $workRelationId], 'workRelationId'); } public function rawQuery(string $rawQuery, array $args = []): array @@ -624,9 +624,9 @@ private function getByDoi(string $entityName, string $doi): AbstractModel return new $entityClass($result[$queryName]); } - private function mutation(string $mutationName, AbstractModel $mutationObject, string $returnValue): string + private function mutation(string $mutationName, array $data, string $returnValue): string { - $mutation = MutationBuilder::build($mutationName, $mutationObject->getAllData()); + $mutation = MutationBuilder::build($mutationName, $data); $response = $this->request->runQuery($mutation, null, $this->token); $data = $response->getData(); return $data[$mutationName][$returnValue]; diff --git a/src/GraphQL/MutationBuilder.php b/src/GraphQL/MutationBuilder.php index a4d30b1..54b3b33 100644 --- a/src/GraphQL/MutationBuilder.php +++ b/src/GraphQL/MutationBuilder.php @@ -4,13 +4,14 @@ class MutationBuilder { - public static function build(string $mutationName, array $mutationData, bool $nested = true): string + public static function build(string $mutationName, array $mutationData): string { $mutationFields = self::getMutationFields($mutationName); if ($mutationFields === null) { throw new \InvalidArgumentException("Mutation '{$mutationName}' not found."); } + $nested = !str_contains($mutationName, 'delete'); $fields = $mutationFields['fields']; $returnValue = $mutationFields['returnValue']; $data = self::prepareData($fields, $mutationData); diff --git a/tests/GraphQL/ClientTest.php b/tests/GraphQL/ClientTest.php index 8dcd525..e132c69 100644 --- a/tests/GraphQL/ClientTest.php +++ b/tests/GraphQL/ClientTest.php @@ -1095,8 +1095,7 @@ public function testDeleteAffiliation(): void ] ]))); - $affiliation = new Affiliation(); - $result = $this->client->deleteAffiliation($affiliation); + $result = $this->client->deleteAffiliation('e435b256-681c-4118-a3b5-bba22cb6fe7f'); $this->assertSame('e435b256-681c-4118-a3b5-bba22cb6fe7f', $result); } @@ -1140,8 +1139,7 @@ public function testDeleteContribution(): void ] ]))); - $contribution = new Contribution(); - $result = $this->client->deleteContribution($contribution); + $result = $this->client->deleteContribution('5448ca99-ae7d-4347-9170-b8ffa067ebbf'); $this->assertSame('5448ca99-ae7d-4347-9170-b8ffa067ebbf', $result); } @@ -1185,8 +1183,7 @@ public function testDeleteContributor(): void ] ]))); - $contributor = new Contributor(); - $result = $this->client->deleteContributor($contributor); + $result = $this->client->deleteContributor('2724eca4-0d31-44ba-bbf4-19061a9637ce'); $this->assertSame('2724eca4-0d31-44ba-bbf4-19061a9637ce', $result); } @@ -1230,8 +1227,7 @@ public function testDeleteFunding(): void ] ]))); - $funding = new Funding(); - $result = $this->client->deleteFunding($funding); + $result = $this->client->deleteFunding('bba5f263-3442-4a4e-8b2b-752a238b9c03'); $this->assertSame('bba5f263-3442-4a4e-8b2b-752a238b9c03', $result); } @@ -1275,8 +1271,7 @@ public function testDeleteImprint(): void ] ]))); - $imprint = new imprint(); - $result = $this->client->deleteImprint($imprint); + $result = $this->client->deleteImprint('7485750d-c8cf-4a7e-9a6c-c080b932dbd9'); $this->assertSame('7485750d-c8cf-4a7e-9a6c-c080b932dbd9', $result); } @@ -1320,8 +1315,7 @@ public function testDeleteInstitution(): void ] ]))); - $institution = new Institution(); - $result = $this->client->deleteInstitution($institution); + $result = $this->client->deleteInstitution('a71debc6-0172-4cf5-b4c4-f932915ffce3'); $this->assertSame('a71debc6-0172-4cf5-b4c4-f932915ffce3', $result); } @@ -1365,8 +1359,7 @@ public function testDeleteIssue(): void ] ]))); - $issue = new Issue(); - $result = $this->client->deleteIssue($issue); + $result = $this->client->deleteIssue('df439ff0-a8ed-4972-aada-956fb0bb27ce'); $this->assertSame('df439ff0-a8ed-4972-aada-956fb0bb27ce', $result); } @@ -1410,8 +1403,7 @@ public function testDeleteLanguage(): void ] ]))); - $language = new Language(); - $result = $this->client->deleteLanguage($language); + $result = $this->client->deleteLanguage('1584d8e2-b856-4519-a507-c2399af11af5'); $this->assertSame('1584d8e2-b856-4519-a507-c2399af11af5', $result); } @@ -1455,8 +1447,7 @@ public function testDeleteLocation(): void ] ]))); - $location = new Location(); - $result = $this->client->deleteLocation($location); + $result = $this->client->deleteLocation('c45e9a4a-80e1-46c2-8845-61bf4263255e'); $this->assertSame('c45e9a4a-80e1-46c2-8845-61bf4263255e', $result); } @@ -1500,8 +1491,7 @@ public function testDeletePrice(): void ] ]))); - $price = new Price(); - $result = $this->client->deletePrice($price); + $result = $this->client->deletePrice('38e96434-88a3-4f1c-9c39-b9160000c61a'); $this->assertSame('38e96434-88a3-4f1c-9c39-b9160000c61a', $result); } @@ -1545,8 +1535,7 @@ public function testDeletePublication(): void ] ]))); - $publication = new Publication(); - $result = $this->client->deletePublication($publication); + $result = $this->client->deletePublication('01fec4e9-fbff-4c2e-9752-a0562a506e4d'); $this->assertSame('01fec4e9-fbff-4c2e-9752-a0562a506e4d', $result); } @@ -1590,8 +1579,7 @@ public function testDeletePublisher(): void ] ]))); - $publisher = new Publisher(); - $result = $this->client->deletePublisher($publisher); + $result = $this->client->deletePublisher('a77ef552-856c-4585-9d35-fd58d2190b1b'); $this->assertSame('a77ef552-856c-4585-9d35-fd58d2190b1b', $result); } @@ -1635,8 +1623,7 @@ public function testDeleteReference(): void ] ]))); - $reference = new Reference(); - $result = $this->client->deleteReference($reference); + $result = $this->client->deleteReference('6b4060ff-a89b-4bdc-b722-2b87ef9d057a'); $this->assertSame('6b4060ff-a89b-4bdc-b722-2b87ef9d057a', $result); } @@ -1680,8 +1667,7 @@ public function testDeleteSeries(): void ] ]))); - $series = new Series(); - $result = $this->client->deleteSeries($series); + $result = $this->client->deleteSeries('dc4ed0f7-89a4-4760-aad3-adec7294706d'); $this->assertSame('dc4ed0f7-89a4-4760-aad3-adec7294706d', $result); } @@ -1725,8 +1711,7 @@ public function testDeleteSubject(): void ] ]))); - $subject = new subject(); - $result = $this->client->deleteSubject($subject); + $result = $this->client->deleteSubject('e7ab386e-186a-4b1c-aa6f-e974b8a1e3cd'); $this->assertSame('e7ab386e-186a-4b1c-aa6f-e974b8a1e3cd', $result); } @@ -1770,8 +1755,7 @@ public function testDeleteWork(): void ] ]))); - $work = new Work(); - $result = $this->client->deleteWork($work); + $result = $this->client->deleteWork('d81bab71-d9fe-456b-9951-2308b91db2b4'); $this->assertSame('d81bab71-d9fe-456b-9951-2308b91db2b4', $result); } @@ -1815,8 +1799,7 @@ public function testDeleteWorkRelation(): void ] ]))); - $workRelation = new WorkRelation(); - $result = $this->client->deleteWorkRelation($workRelation); + $result = $this->client->deleteWorkRelation('64019725-3e50-41de-a785-e4e5ddc4620a'); $this->assertSame('64019725-3e50-41de-a785-e4e5ddc4620a', $result); }