Fix geo GraphQL schema mismatch: camelCase → snake_case
All checks were successful
Build Docker Image / build (push) Successful in 5m46s

All geo .graphql operations and consuming code updated to match
server schema which uses snake_case field/argument names.
Removed non-existent QuoteCalculations query, using NearestOffers instead.
This commit is contained in:
Ruslan Bakiev
2026-03-09 21:45:57 +07:00
parent 15563991df
commit 25f946b293
34 changed files with 504 additions and 744 deletions

View File

@@ -23,8 +23,8 @@ import {
type NodeEntity = NonNullable<GetNodeQueryResult['node']>
type OfferEntity = NonNullable<GetOfferQueryResult['getOffer']>
type SupplierProfile = NonNullable<GetSupplierProfileQueryResult['getSupplierProfile']>
type HubItem = NonNullable<NonNullable<NearestHubsQueryResult['nearestHubs']>[number]>
type OfferItem = NonNullable<NonNullable<NearestOffersQueryResult['nearestOffers']>[number]>
type HubItem = NonNullable<NonNullable<NearestHubsQueryResult['nearest_hubs']>[number]>
type OfferItem = NonNullable<NonNullable<NearestOffersQueryResult['nearest_offers']>[number]>
// Product type (aggregated from offers)
export interface InfoProductItem {
@@ -136,27 +136,27 @@ export function useCatalogInfo() {
const productsMap = new Map<string, InfoProductItem>()
const suppliersMap = new Map<string, { uuid: string; name: string; latitude?: number | null; longitude?: number | null }>()
offersData?.nearestOffers?.forEach(offer => {
offersData?.nearest_offers?.forEach(offer => {
if (!offer) return
// Products
if (offer.productUuid && offer.productName) {
const existing = productsMap.get(offer.productUuid)
if (offer.product_uuid && offer.product_name) {
const existing = productsMap.get(offer.product_uuid)
if (existing) {
existing.offersCount = (existing.offersCount || 0) + 1
} else {
productsMap.set(offer.productUuid, {
uuid: offer.productUuid,
name: offer.productName,
productsMap.set(offer.product_uuid, {
uuid: offer.product_uuid,
name: offer.product_name,
offersCount: 1
})
}
}
// Suppliers (extract from offers)
if (offer.supplierUuid && !suppliersMap.has(offer.supplierUuid)) {
suppliersMap.set(offer.supplierUuid, {
uuid: offer.supplierUuid,
name: offer.supplierName || 'Supplier',
if (offer.supplier_uuid && !suppliersMap.has(offer.supplier_uuid)) {
suppliersMap.set(offer.supplier_uuid, {
uuid: offer.supplier_uuid,
name: offer.supplier_name || 'Supplier',
latitude: offer.latitude,
longitude: offer.longitude
})
@@ -264,7 +264,7 @@ export function useCatalogInfo() {
'public',
'geo'
).then(hubsData => {
relatedHubs.value = (hubsData?.nearestHubs || []).filter((h): h is HubItem => h !== null)
relatedHubs.value = (hubsData?.nearest_hubs || []).filter((h): h is HubItem => h !== null)
}).finally(() => {
isLoadingHubs.value = false
})
@@ -314,7 +314,7 @@ export function useCatalogInfo() {
'public',
'geo'
).then(hubsData => {
relatedHubs.value = (hubsData?.nearestHubs || []).filter((h): h is HubItem => h !== null)
relatedHubs.value = (hubsData?.nearest_hubs || []).filter((h): h is HubItem => h !== null)
}).finally(() => {
isLoadingHubs.value = false
})
@@ -374,14 +374,14 @@ export function useCatalogInfo() {
)
// Offers already include routes from backend
relatedOffers.value = (offersData?.nearestOffers || []).filter((o): o is OfferItem => o !== null)
relatedOffers.value = (offersData?.nearest_offers || []).filter((o): o is OfferItem => o !== null)
isLoadingOffers.value = false
// Extract unique suppliers from offers (use supplierUuid from offers)
// Extract unique suppliers from offers (use supplier_uuid from offers)
const supplierUuids = new Set<string>()
relatedOffers.value.forEach(offer => {
if (offer.supplierUuid) {
supplierUuids.add(offer.supplierUuid)
if (offer.supplier_uuid) {
supplierUuids.add(offer.supplier_uuid)
}
})
@@ -438,7 +438,7 @@ export function useCatalogInfo() {
'public',
'geo'
)
const hub = (hubsData?.nearestHubs || []).find((h): h is HubItem => h !== null)
const hub = (hubsData?.nearest_hubs || []).find((h): h is HubItem => h !== null)
if (hub?.uuid) {
hubUuid = hub.uuid
if (!relatedHubs.value.length) {
@@ -461,10 +461,10 @@ export function useCatalogInfo() {
'geo'
)
relatedOffers.value = (offersData?.nearestOffers || []).filter((o): o is OfferItem => {
relatedOffers.value = (offersData?.nearest_offers || []).filter((o): o is OfferItem => {
if (!o) return false
if (!supplier.uuid) return true
return o.supplierUuid === supplier.uuid
return o.supplier_uuid === supplier.uuid
})
isLoadingOffers.value = false
} finally {