feat: use filtered geo queries for catalog pages
All checks were successful
Build Docker Image / build (push) Successful in 4m57s

- /hubs/[id]: use findProductsForHub to show only deliverable products
- /offers/[productId]: use findHubsForProduct to show only reachable hubs
- /suppliers/[id]/[productId]: use findSupplierProductHubs for supplier-specific hubs
- Add new GraphQL operations for geo queries
This commit is contained in:
Ruslan Bakiev
2026-01-16 01:42:18 +07:00
parent 1e87a14065
commit 181dc4ea6b
8 changed files with 154 additions and 21 deletions

View File

@@ -72,7 +72,7 @@
<script setup lang="ts">
import { GetAvailableProductsDocument } from '~/composables/graphql/public/exchange-generated'
import { GetNodesDocument } from '~/composables/graphql/public/geo-generated'
import { FindHubsForProductDocument } from '~/composables/graphql/public/geo-generated'
definePageMeta({
layout: 'topnav'
@@ -133,7 +133,7 @@ const chartSeries = computed(() => [{
try {
const [{ data: productsData }, { data: hubsData }] = await Promise.all([
useServerQuery('product-info', GetAvailableProductsDocument, {}, 'public', 'exchange'),
useServerQuery('all-hubs', GetNodesDocument, { limit: 100 }, 'public', 'geo')
useServerQuery('hubs-for-product', FindHubsForProductDocument, { productUuid: productId.value }, 'public', 'geo')
])
const foundProduct = (productsData.value?.getAvailableProducts || [])
@@ -143,7 +143,8 @@ try {
product.value = { uuid: foundProduct.uuid!, name: foundProduct.name || '' }
}
hubs.value = (hubsData.value?.nodes || [])
// Get only hubs where this product can be delivered
hubs.value = (hubsData.value?.findHubsForProduct || [])
.filter((h): h is { uuid: string; name: string; country?: string; countryCode?: string } =>
h !== null && !!h.uuid && !!h.name
)