saleor-dashboard/src/categories/queries.ts
2019-12-18 11:22:02 +01:00

128 lines
2.4 KiB
TypeScript

import gql from "graphql-tag";
import makeQuery from "@saleor/hooks/makeQuery";
import { pageInfoFragment } from "../queries";
import {
CategoryDetails,
CategoryDetailsVariables
} from "./types/CategoryDetails";
import { RootCategories } from "./types/RootCategories";
export const categoryFragment = gql`
fragment CategoryFragment on Category {
id
name
children {
totalCount
}
products {
totalCount
}
}
`;
export const categoryDetailsFragment = gql`
fragment CategoryDetailsFragment on Category {
id
backgroundImage {
alt
url
}
name
descriptionJson
seoDescription
seoTitle
parent {
id
}
}
`;
export const rootCategories = gql`
${categoryFragment}
${pageInfoFragment}
query RootCategories(
$first: Int
$after: String
$last: Int
$before: String
$filter: CategoryFilterInput
$sort: CategorySortingInput
) {
categories(
level: 0
first: $first
after: $after
last: $last
before: $before
filter: $filter
sortBy: $sort
) {
edges {
node {
...CategoryFragment
}
}
pageInfo {
...PageInfoFragment
}
}
}
`;
export const useRootCategoriesQuery = makeQuery<RootCategories, {}>(
rootCategories
);
export const categoryDetails = gql`
${categoryFragment}
${categoryDetailsFragment}
${pageInfoFragment}
query CategoryDetails(
$id: ID!
$first: Int
$after: String
$last: Int
$before: String
) {
category(id: $id) {
...CategoryDetailsFragment
children(first: $first, after: $after, last: $last, before: $before) {
edges {
node {
...CategoryFragment
}
}
pageInfo {
...PageInfoFragment
}
}
products(first: $first, after: $after, last: $last, before: $before) {
pageInfo {
...PageInfoFragment
}
edges {
cursor
node {
id
name
basePrice {
amount
currency
}
isAvailable
thumbnail {
url
}
productType {
id
name
}
}
}
}
}
}
`;
export const useCategoryDetailsQuery = makeQuery<
CategoryDetails,
CategoryDetailsVariables
>(categoryDetails);