From 271fb6f9e42db104e55dd21f7085fc389cae2134 Mon Sep 17 00:00:00 2001 From: kostaszazim Date: Tue, 12 Nov 2024 23:07:21 +0200 Subject: [PATCH 1/3] fix for recordId in get record request --- src/Services/FileMakerConnection.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Services/FileMakerConnection.php b/src/Services/FileMakerConnection.php index 9921570..d182625 100644 --- a/src/Services/FileMakerConnection.php +++ b/src/Services/FileMakerConnection.php @@ -300,6 +300,10 @@ public function getRecords(FMBaseBuilder $query) if ($query->script !== null) { $queryParams['script'] = $query->script; } + + if ($query->getRecordId() !== null) { + $url .= '/' . $query->getRecordId(); + } if ($query->scriptParam !== null) { $queryParams['script.param'] = $query->scriptParam; } From 18389e94fbd6991322de5728a55eeaa661445575 Mon Sep 17 00:00:00 2001 From: kostaszazim Date: Tue, 12 Nov 2024 23:58:04 +0200 Subject: [PATCH 2/3] fix for double backlash in url --- src/Services/FileMakerConnection.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Services/FileMakerConnection.php b/src/Services/FileMakerConnection.php index d182625..851d5f2 100644 --- a/src/Services/FileMakerConnection.php +++ b/src/Services/FileMakerConnection.php @@ -302,7 +302,7 @@ public function getRecords(FMBaseBuilder $query) } if ($query->getRecordId() !== null) { - $url .= '/' . $query->getRecordId(); + $url .= (Str::endsWith($url, '/') ? '' : '/') . $query->getRecordId(); } if ($query->scriptParam !== null) { $queryParams['script.param'] = $query->scriptParam; From 110b4bdbb9d3ecd78e865d45b57bb21498232e3c Mon Sep 17 00:00:00 2001 From: David Nahodyl Date: Tue, 12 Nov 2024 22:07:40 -0500 Subject: [PATCH 3/3] handling for single and multiple record requests --- src/Services/FileMakerConnection.php | 35 ++++++++++++++++------------ 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/src/Services/FileMakerConnection.php b/src/Services/FileMakerConnection.php index 851d5f2..0d7627b 100644 --- a/src/Services/FileMakerConnection.php +++ b/src/Services/FileMakerConnection.php @@ -296,14 +296,29 @@ public function getRecords(FMBaseBuilder $query) // default to an empty array $queryParams = []; + // handle single record requests + if ($query->getRecordId() !== null) { + $url .= (Str::endsWith($url, '/') ? '' : '/') . $query->getRecordId(); + } else { + // handle pagination and sorting + // these parameters are not used for single record requests + if ($query->offset > 0) { + // Offset is 1-indexed + $queryParams['_offset'] = $query->offset + 1; + } + if ($query->limit > 0) { + $queryParams['_limit'] = $query->limit; + } + if ($query->orders !== null && count($query->orders) > 0) { + // sort can have many values, so it needs to get json_encoded and passed as a single string + $queryParams['_sort'] = json_encode($query->orders); + } + } + // handle scripts if ($query->script !== null) { $queryParams['script'] = $query->script; } - - if ($query->getRecordId() !== null) { - $url .= (Str::endsWith($url, '/') ? '' : '/') . $query->getRecordId(); - } if ($query->scriptParam !== null) { $queryParams['script.param'] = $query->scriptParam; } @@ -319,23 +334,13 @@ public function getRecords(FMBaseBuilder $query) if ($query->scriptPrerequestParam !== null) { $queryParams['script.prerequest.param'] = $query->scriptPrerequestParam; } + if ($query->layoutResponse !== null) { $queryParams['layout.response'] = $query->layoutResponse; } if ($query->portal !== null) { $queryParams['portal'] = $query->portal; } - if ($query->offset > 0) { - // Offset is 1-indexed - $queryParams['_offset'] = $query->offset + 1; - } - if ($query->limit > 0) { - $queryParams['_limit'] = $query->limit; - } - if ($query->orders !== null && count($query->orders) > 0) { - // sort can have many values, so it needs to get json_encoded and passed as a single string - $queryParams['_sort'] = json_encode($query->orders); - } $response = $this->makeRequest('get', $url, $queryParams);