P5 7619 refactor products to return list (#11)

This commit is contained in:
Niklas Fondberg
2021-08-20 08:16:01 +02:00
committed by GitHub
parent 234996abfd
commit 964a904f42
15 changed files with 235 additions and 92 deletions
+3 -6
View File
@@ -1,14 +1,11 @@
import { IResolverObject } from 'graphql-tools';
import { DesignerAPI } from '../datasources/designer-api';
import { OrderAPI } from '../datasources/order-api';
import { FilterInput } from '../types/types';
import { GeneralInput } from '../types/types';
const Designer: IResolverObject = {
async orderRows({ id }, args: FilterInput, { dataSources }) {
return (<OrderAPI>dataSources.orderApi).getOrderRowsByDesignerId(
id,
args.filter,
);
async orderRows({ id }, input: GeneralInput, { dataSources }) {
return (<OrderAPI>dataSources.orderApi).getOrderRowsByDesignerId(id, input);
},
};
+14 -5
View File
@@ -1,7 +1,8 @@
import { IResolverObject } from 'graphql-tools';
import { MarketLocaleAPI } from '../datasources/market-locale-api';
import { OrderAPI } from '../datasources/order-api';
import { FilterInput } from '../types/types';
import { OrdersResult } from '../types/order-types';
import { GeneralInput } from '../types/types';
const ContactInformation: IResolverObject = {
// (parent, args, ctx, info)
@@ -32,12 +33,20 @@ const OrderRow: IResolverObject = {
},
};
async function getOrdersResult(_, args: FilterInput, { dataSources }) {
const total = (<OrderAPI>dataSources.orderApi).getOrdersTotal(args.filter);
const items = (<OrderAPI>dataSources.orderApi).getOrders(args.filter);
async function getOrdersResult(
_,
input: GeneralInput,
{ dataSources },
): Promise<OrdersResult> {
const total = (<OrderAPI>dataSources.orderApi).getOrdersTotal(input);
const items = (<OrderAPI>dataSources.orderApi).getOrders(input);
return {
total: total,
items: items,
pagination: {
total: total,
limit: input.pagination.limit,
offset: 0, // TODO: this will be implemented later if the client app needs it
},
};
}
+22 -12
View File
@@ -1,6 +1,10 @@
import { IResolverObject } from 'graphql-tools';
import { ProductAPI } from '../datasources/product-api';
import { Product } from '../types/product-types';
import {
Product,
ProductListResult,
ProductsFilterInput,
} from '../types/product-types';
import { CategoryAPI } from '../datasources/category-api';
import { Category } from '../types/category-types';
import { KeywordAPI } from '../datasources/keyword-api';
@@ -21,7 +25,7 @@ const Product: IResolverObject = {
async categories({ id }, _args, { dataSources }): Promise<Array<Category>> {
return (<CategoryAPI>dataSources.categoryApi).getProductCategories(id);
},
async designer({ designerId }, args, { dataSources }) {
async designer({ designerId }, _args, { dataSources }) {
if (!designerId) {
return null;
}
@@ -41,16 +45,22 @@ const PrintProduct: IResolverObject = {
},
};
async function getProducts(
async function getProductsResult(
_,
{ limit, visible, browsable },
input: ProductsFilterInput,
{ dataSources },
): Promise<Array<Product>> {
return (<ProductAPI>dataSources.productApi).getProducts(
limit,
visible,
browsable,
);
): Promise<ProductListResult> {
const total = (<ProductAPI>dataSources.productApi).getProductsTotal(input);
const items = (<ProductAPI>dataSources.productApi).getProducts(input);
return {
pagination: {
limit: input.pagination.limit,
offset: 0, // TODO: this will be implemented later if the client app needs it
total: total,
},
items: items,
};
}
async function getProduct(_, { id }, { dataSources }): Promise<Product> {
@@ -64,11 +74,11 @@ export const productTypeDefs = {
};
export const productQueryTypeDefs = {
products: getProducts,
products: getProductsResult,
product: getProduct,
};
// Mutations below
// Mutations below, embryo stage
export const productMutationTypeDefs = {
addKeyword(_, { productId, keywordId }, { dataSources }) {