From e33d21e3206a19394d09fa474fe6ffdda0f8555b Mon Sep 17 00:00:00 2001 From: Niklas Fondberg Date: Mon, 19 Apr 2021 10:14:54 +0200 Subject: [PATCH] WIP --- package-lock.json | 12 +++++------- src/index.ts | 2 ++ src/resolvers/index.ts | 3 ++- src/resolvers/products-resolver.ts | 13 +++++++++++++ src/schema.ts | 2 ++ 5 files changed, 24 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2eddace..3f4c8c4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -754,13 +754,6 @@ "apollo-server-env": "^3.0.0", "apollo-server-errors": "^2.4.2", "http-cache-semantics": "^4.0.0" - }, - "dependencies": { - "apollo-server-errors": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-2.4.2.tgz", - "integrity": "sha512-FeGxW3Batn6sUtX3OVVUm7o56EgjxDlmgpTLNyWcLb0j6P8mw9oLNyAm3B+deHA4KNdNHO5BmHS2g1SJYjqPCQ==" - } } }, "apollo-env": { @@ -911,6 +904,11 @@ "util.promisify": "^1.0.0" } }, + "apollo-server-errors": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-2.4.2.tgz", + "integrity": "sha512-FeGxW3Batn6sUtX3OVVUm7o56EgjxDlmgpTLNyWcLb0j6P8mw9oLNyAm3B+deHA4KNdNHO5BmHS2g1SJYjqPCQ==" + }, "apollo-server-express": { "version": "2.22.2", "resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-2.22.2.tgz", diff --git a/src/index.ts b/src/index.ts index 47dbdb6..c9160e6 100644 --- a/src/index.ts +++ b/src/index.ts @@ -9,6 +9,7 @@ import resolvers from './resolvers'; import { OrderAPI } from './datasources/order-api'; import { ProductAPI } from './datasources/product-api'; import { DesignerAPI } from './datasources/designer-api'; +import { Api2DataSource } from './datasources/api2-datasource'; const knexConfig = knexStringcase(dbConfig); @@ -20,6 +21,7 @@ const dataSources = () => ({ orderApi: new OrderAPI(knexConfig), productApi: new ProductAPI(knexConfig), designerApi: new DesignerAPI(knexConfig), + api2: new Api2DataSource(), }); const context = async ({ req }) => { diff --git a/src/resolvers/index.ts b/src/resolvers/index.ts index a5599a1..acbc094 100644 --- a/src/resolvers/index.ts +++ b/src/resolvers/index.ts @@ -1,7 +1,7 @@ import { orderQueryTypeDefs, orderTypeDefs } from './orders-resolver'; import { productQueryTypeDefs, productTypeDefs } from './products-resolver'; import { designerQueryTypeDefs, designerTypeDefs } from './designers-resolver'; -import { DateTimeResolver, DateResolver } from 'graphql-scalars'; +import { DateTimeResolver, DateResolver, JSONResolver } from 'graphql-scalars'; const resolvers = { Query: { ...orderQueryTypeDefs, @@ -13,6 +13,7 @@ const resolvers = { ...designerTypeDefs, DateTime: DateTimeResolver, Date: DateResolver, + JSON: JSONResolver, }; export default resolvers; diff --git a/src/resolvers/products-resolver.ts b/src/resolvers/products-resolver.ts index f40bd3f..7db4853 100644 --- a/src/resolvers/products-resolver.ts +++ b/src/resolvers/products-resolver.ts @@ -1,5 +1,6 @@ // (parent, args, ctx, info) import { IResolverObject } from 'graphql-tools'; +import { Api2DataSource } from '../datasources/api2-datasource'; import { OrderAPI } from '../datasources/order-api'; import { ProductAPI } from '../datasources/product-api'; @@ -18,6 +19,17 @@ const Product: IResolverObject = { }, }; +const PrintProduct: IResolverObject = { + async price({ id }, { market, width, height, sku }, { dataSources }) { + return (dataSources.api2).getPrice( + market, + width, + height, + sku, + ); + }, +}; + async function getProducts(_, { limit, visible, browsable }, { dataSources }) { return (dataSources.productApi).getProducts( limit, @@ -33,6 +45,7 @@ async function getProduct(_, { id }, { dataSources }) { export const productTypeDefs = { ProductBlacklist, Product, + PrintProduct, }; export const productQueryTypeDefs = { diff --git a/src/schema.ts b/src/schema.ts index 64bfd82..04ffa36 100644 --- a/src/schema.ts +++ b/src/schema.ts @@ -3,6 +3,7 @@ import { gql } from 'apollo-server'; const typeDefs = gql` scalar DateTime scalar Date + scalar JSON type Query { orders(filter: FilterInput): [Order] @@ -200,6 +201,7 @@ const typeDefs = gql` group: ProductGroup! inserted: DateTime! updated: DateTime + price(market: Int, width: Int, height: Int, sku: String): JSON } type Designer {