From cb5946544977f300c09d6c9da2e3925e9f619822 Mon Sep 17 00:00:00 2001 From: Nathan McBride Date: Wed, 1 Feb 2023 21:21:11 +1100 Subject: [PATCH 1/2] Create initial module structure --- .gitignore | 58 ++++++++++---------------------------------- composer.json | 25 +++++++++++++++++++ src/etc/module.xml | 8 ++++++ src/registration.php | 5 ++++ 4 files changed, 51 insertions(+), 45 deletions(-) create mode 100644 composer.json create mode 100644 src/etc/module.xml create mode 100644 src/registration.php diff --git a/.gitignore b/.gitignore index abe6d79..c0192c3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,45 +1,13 @@ -#--------------------------# -# Magento Default Files # -#--------------------------# - -/PATCH_*.sh - -/app/etc/local.xml - -/media/* -!/media/.htaccess - -!/media/customer -/media/customer/* -!/media/customer/.htaccess - -!/media/dhl -/media/dhl/* -!/media/dhl/logo.jpg - -!/media/downloadable -/media/downloadable/* -!/media/downloadable/.htaccess - -!/media/xmlconnect -/media/xmlconnect/* - -!/media/xmlconnect/custom -/media/xmlconnect/custom/* -!/media/xmlconnect/custom/ok.gif - -!/media/xmlconnect/original -/media/xmlconnect/original/* -!/media/xmlconnect/original/ok.gif - -!/media/xmlconnect/system -/media/xmlconnect/system/* -!/media/xmlconnect/system/ok.gif - -/var/* -!/var/.htaccess - -!/var/package -/var/package/* -!/var/package/*.xml - +# Composer +/vendor/ +.metadata +*.tmp +*.bak +*.swp +*~.nib +local.properties +.settings/ +.loadpath +.project +.buildpath +.idea/ \ No newline at end of file diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..9245b94 --- /dev/null +++ b/composer.json @@ -0,0 +1,25 @@ +{ + "name": "develodesign/typesense", + "description": "A TypeSense adapter for Magento 2", + "type": "magento2-module", + "license": "OSL-3.0", + "require": { + "algolia/algoliasearch-magento-2": "^3.9", + "typesense/typesense-php": "^2.0" + }, + "authors": [ + { + "name": "Nathan McBride", + "email": "nathan@brideo.co.uk" + }, + { + "name": "Luke Collymore", + "email": "luke@develodesign.co.uk" + } + ], + "autoload": { + "psr-4": { + "Develo\\TypeSense": "src/" + } + } +} diff --git a/src/etc/module.xml b/src/etc/module.xml new file mode 100644 index 0000000..f24a51a --- /dev/null +++ b/src/etc/module.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/src/registration.php b/src/registration.php new file mode 100644 index 0000000..6b69411 --- /dev/null +++ b/src/registration.php @@ -0,0 +1,5 @@ + Date: Wed, 1 Feb 2023 23:00:46 +1100 Subject: [PATCH 2/2] add adapters for the 2 main classes --- src/Adapter/Client.php | 43 ++++++++++++++++++++++++ src/Adapter/Index.php | 74 ++++++++++++++++++++++++++++++++++++++++++ src/etc/di.xml | 8 +++++ 3 files changed, 125 insertions(+) create mode 100644 src/Adapter/Client.php create mode 100644 src/Adapter/Index.php create mode 100644 src/etc/di.xml diff --git a/src/Adapter/Client.php b/src/Adapter/Client.php new file mode 100644 index 0000000..b93791c --- /dev/null +++ b/src/Adapter/Client.php @@ -0,0 +1,43 @@ +typeSenseClient = $client; + } + + /** + * @inheirtDoc + */ + public function deleteIndex($indexName) + { + return $this->typeSenseClient->collections[$indexName]->delete(); + } +} \ No newline at end of file diff --git a/src/Adapter/Index.php b/src/Adapter/Index.php new file mode 100644 index 0000000..7a31e6a --- /dev/null +++ b/src/Adapter/Index.php @@ -0,0 +1,74 @@ +client = $client; + $this->indexName = $indexName; + } + + public function addObject($content, $objectID = null) + { + if ($objectID) { + $content['id'] = $content; + } + + return $this->getDocuments()->upsert($content); + } + + public function addObjects($objects, $objectIDKeyLegacy = 'objectID') + { + return $this->getDocuments()->import($objects, ['action' => 'create']); + } + + public function deleteObjects($objects) + { + $ids = 'id:='.json_encode($objects); + + return $this->getDocuments()->delete(['filter_by' => $ids]); + } + + /** + * @return TypeSenseClient + */ + private function getClient(): TypeSenseClient + { + return $this->client->typeSenseClient; + } + + /** + * @todo none of the methods seem to be in this class but that is what is documented. + * + * @return \Devloops\Typesence\Documents + */ + private function getDocuments() + { + return $this->getClient()->collections[$this->indexName]->documents; + } +} \ No newline at end of file diff --git a/src/etc/di.xml b/src/etc/di.xml new file mode 100644 index 0000000..c3956c2 --- /dev/null +++ b/src/etc/di.xml @@ -0,0 +1,8 @@ + + + + + + +