feat(saleor): Phase 1 - GraphQL Client Setup

- Add Apollo Client for Saleor GraphQL API
- Create GraphQL fragments (Product, Variant, Checkout)
- Create GraphQL queries (Products, Checkout)
- Create GraphQL mutations (Checkout operations)
- Add TypeScript types for Saleor entities
- Add product helper functions
- Install @apollo/client and graphql dependencies

Part of WordPress/WooCommerce → Saleor migration
This commit is contained in:
Unchained
2026-03-21 12:36:21 +02:00
parent db1914d69b
commit 7b94537670
27 changed files with 7879 additions and 3 deletions

View File

@@ -0,0 +1,21 @@
import { gql } from "@apollo/client";
import { CHECKOUT_FRAGMENT } from "../fragments/Checkout";
export const GET_CHECKOUT = gql`
query GetCheckout($token: UUID!) {
checkout(token: $token) {
...CheckoutFragment
}
}
${CHECKOUT_FRAGMENT}
`;
export const GET_CHECKOUT_BY_ID = gql`
query GetCheckoutById($id: ID!) {
checkout(id: $id) {
...CheckoutFragment
}
}
${CHECKOUT_FRAGMENT}
`;
`;

View File

@@ -0,0 +1,51 @@
import { gql } from "@apollo/client";
import { PRODUCT_FRAGMENT, PRODUCT_LIST_ITEM_FRAGMENT } from "../fragments/Product";
export const GET_PRODUCTS = gql`
query GetProducts($channel: String!, $locale: LanguageCodeEnum!, $first: Int!) {
products(channel: $channel, first: $first) {
edges {
node {
...ProductListItemFragment
}
}
pageInfo {
hasNextPage
endCursor
}
}
}
${PRODUCT_LIST_ITEM_FRAGMENT}
`;
export const GET_PRODUCT_BY_SLUG = gql`
query GetProduct($slug: String!, $channel: String!, $locale: LanguageCodeEnum!) {
product(slug: $slug, channel: $channel) {
...ProductFragment
}
}
${PRODUCT_FRAGMENT}
`;
export const GET_PRODUCTS_BY_CATEGORY = gql`
query GetProductsByCategory(
$categorySlug: String!
$channel: String!
$locale: LanguageCodeEnum!
$first: Int!
) {
category(slug: $categorySlug) {
id
name
slug
products(channel: $channel, first: $first) {
edges {
node {
...ProductListItemFragment
}
}
}
}
}
${PRODUCT_LIST_ITEM_FRAGMENT}
`;