PHPackages                             eggate/chalhoub-shopfinder-graph-ql - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. eggate/chalhoub-shopfinder-graph-ql

ActiveMagento2-module[API Development](/categories/api)

eggate/chalhoub-shopfinder-graph-ql
===================================

GraphQL endpoints for module Chalhob\_Shopfinder

1.0.0(3y ago)01proprietaryPHPPHP ~7.4.0||~8.1.0

Since Jan 19Pushed 3y ago1 watchersCompare

[ Source](https://github.com/eggate/chalhoub-shopfinder-graph-ql)[ Packagist](https://packagist.org/packages/eggate/chalhoub-shopfinder-graph-ql)[ RSS](/packages/eggate-chalhoub-shopfinder-graph-ql/feed)WikiDiscussions master Synced today

READMEChangelog (1)Dependencies (2)Versions (2)Used By (0)

Shopfinder GraphQL module
=========================

[](#shopfinder-graphql-module)

this module should expose graphql apis for the Chalhoub\_Shopfinder module.

Installation
------------

[](#installation)

Install extension with composer

```
  composer require eggate/chalhoub-shopfinder-graph-ql
```

Run magento installion commands

```
  bin/magento setup:install
  bin/magento setup:di:compile
  bin/magento setup:static-content:deploy --area adminhtml
  bin/magento cache:flush
```

Features
--------

[](#features)

- We should be able to use any graphql playground.
- We should be able to use a query to fetch all the shops.
- We should be able to use a mutation to update any store information.
- We should not be able to delete stores from the API - Provide aproper error handling for this case.
- We should be able to use a query to fetch information about a single shop based on the identifier.
- (Optional) We should be able to fetch the stores near me, based on my current location.

GraphQL API Reference
---------------------

[](#graphql-api-reference)

#### Get all shops\\filtered shops

[](#get-all-shopsfiltered-shops)

```
  query {
    Shops(
        currentPage: ${currentPage}
        pageSize: ${pageSize}
        input: {
            identifier: "filter by identifier"
            name : "filter by name"
            shop_ids: "filter by ids"
        }
    ){
        total_count
        items{
            shop_id
            name
            identifier
            image
            country_id
            latitude
            longitude
        }
    }
}
```

ParameterTypeDescription`currentPage``int`**Optional**. current page`pageSize``string`**Optional**. page size`input``ShopFilterInput`**Otional**. shop filter inputShopFilterInput schema

ParameterTypeDescription`identifier``string`**Optional**. identifier`name``string`**Optional**. name`shop_ids``[int]`**Otional**. array of shop ids#### Get shop by identifier

[](#get-shop-by-identifier)

```
  query {
    Shop(
      identifier: ${identifier}
    ){
        shop_id
        name
        identifier
        image
        country_id
        latitude
        longitude
    }
}
```

ParameterTypeDescription`identifier``string`**Required**. shop idnetifier#### Get nearest shops based on location (Haversine equation) distance in Km

[](#get-nearest-shops-based-on-location-haversine-equation-distance-in-km)

```
  query {
    nearestShops(
        currentPage: 1
        pageSize: 20
        coords: {
            lat: "location latitude"
            long : "location longitude"
            radius: "search radius"
        }
    ){
        total_count
        items{
            shop_id
            name
            identifier
            image
            country_id
            latitude
            longitude
        }
    }
}
```

#### Save new or update existing shop

[](#save-new-or-update-existing-shop)

```
mutation{
    saveShop(
        shop:{
            shop_id : ${shop_id}
            name: ${name}
            identifier: ${identifier}
            image: ${image}
            country_id: ${country_id}
            latitude: ${latitude}
            longitude: ${longitude}
        }
    ){
        shop {
            shop_id
            name
            identifier
            image
            country_id
            latitude
            longitude
        }
    }
}
```

ParameterTypeDescription`shop_id``int`**Otional**. shop id if you need to update shop`name``string`**Required**. name`identifier``string`**Required**. identifier`image``string`**Required**. Shop image url \*\* I haven't handled downloading image from remote URL \*\*`country_id``string`**Required**. ISO2 code for country`latitude``string`**Optional**. Shop latitude`longitude``string`**Optional**. Shop Longitude#### Delete shop by id or identifier

[](#delete-shop-by-id-or-identifier)

```
mutation{
    deleteShop(
        filter:{
            shop_id : ${shop_id}
            identifier: ${identifier}
        }
    ){
        message
    }
}
```

Only provide 1 filter parameter

ParameterTypeDescription`shop_id``int`**RequiredIf**. delete shop by shop id`identifier``string`**RequiredIf**. delete shop by identifier

###  Health Score

23

—

LowBetter than 26% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity1

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity54

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

1261d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/735715324ab34180378fd629eb47083e99893ab201f1b0c20782253acb9f7049?d=identicon)[tiefanovic1](/maintainers/tiefanovic1)

---

Top Contributors

[![eggate](https://avatars.githubusercontent.com/u/58251298?v=4)](https://github.com/eggate "eggate (3 commits)")

### Embed Badge

![Health badge](/badges/eggate-chalhoub-shopfinder-graph-ql/health.svg)

```
[![Health](https://phpackages.com/badges/eggate-chalhoub-shopfinder-graph-ql/health.svg)](https://phpackages.com/packages/eggate-chalhoub-shopfinder-graph-ql)
```

###  Alternatives

[smile/elasticsuite

Magento 2 merchandising and search engine built on ElasticSearch

8064.7M49](/packages/smile-elasticsuite)[mollie/magento2

Mollie Payment Module for Magento 2

1131.9M16](/packages/mollie-magento2)[graycore/magento2-cors

A Magento 2 module that enables CORS on the GraphQL and REST Apis

102597.4k](/packages/graycore-magento2-cors)[magmodules/magento2-channable

Channable integration for Magento 2

311.5M](/packages/magmodules-magento2-channable)[elgentos/module-prismicio

Magento 2 - Prismic.io integration

39119.0k3](/packages/elgentos-module-prismicio)[zepgram/module-rest

Technical module to industrialize API REST call with dependency injection pattern using Guzzle library

1328.7k](/packages/zepgram-module-rest)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
