From 1b304930d313a02b5fb876f132ed3b86ee5a8adb Mon Sep 17 00:00:00 2001 From: Niklas Fondberg Date: Wed, 7 Apr 2021 16:21:31 +0200 Subject: [PATCH] Add arguments --- src/datasources/product-api.ts | 22 ++++++++++++++-------- src/datasources/sql/products-sql.ts | 7 ++++--- src/datasources/types.ts | 1 + src/resolvers/products-resolver.ts | 4 ++-- 4 files changed, 21 insertions(+), 13 deletions(-) create mode 100644 src/datasources/types.ts diff --git a/src/datasources/product-api.ts b/src/datasources/product-api.ts index 836357b..0dbd41b 100644 --- a/src/datasources/product-api.ts +++ b/src/datasources/product-api.ts @@ -6,6 +6,7 @@ import { PrintProduct, ProductBlacklist, } from './product-types'; +import { Maybe } from './types'; const MINUTE = 60; @@ -34,17 +35,22 @@ export class ProductAPI extends SQLDataSource { }); } - async getProducts(args: any): Promise { - const query = sql.products(true, true, 10); - // console.log(query); - const data = await this.knex.raw(query).then((data) => { - // console.log(data); - return data.rows.map((row) => { + async getProducts( + limit: Maybe, + visible: Maybe, + browsable: Maybe, + ): Promise { + // console.log(limit, browsable, visible); + limit = limit ?? 100; + const query = sql.products(limit, visible, browsable); + + const data = await this.knex.raw(query).then((data) => + data.rows.map((row) => { row.blacklisting = this.getBlacklisting(row); row.printProducts = this.getPrintProducts(row); return row; - }); - }); + }), + ); // console.log(JSON.stringify(data, null, 2)); diff --git a/src/datasources/sql/products-sql.ts b/src/datasources/sql/products-sql.ts index 2ff9f34..f3cffc0 100644 --- a/src/datasources/sql/products-sql.ts +++ b/src/datasources/sql/products-sql.ts @@ -1,9 +1,11 @@ +import { Maybe } from '../types'; + // Get syntax highlighting with vscode by installing "Comment tagged templates2 export function products( - visible: boolean | null, - browsable: boolean | null, limit: number = 100, + visible: Maybe, + browsable: Maybe, ) { const query = /* sql */ ` @@ -55,7 +57,6 @@ export function products( AND products.browsable = ${browsable ? '1' : '0'}` : `` } -GROUP BY products.productid LIMIT ${limit} `; diff --git a/src/datasources/types.ts b/src/datasources/types.ts new file mode 100644 index 0000000..d798e4f --- /dev/null +++ b/src/datasources/types.ts @@ -0,0 +1 @@ +export type Maybe = T | undefined; diff --git a/src/resolvers/products-resolver.ts b/src/resolvers/products-resolver.ts index 0df18cf..7425c56 100644 --- a/src/resolvers/products-resolver.ts +++ b/src/resolvers/products-resolver.ts @@ -1,7 +1,7 @@ // (parent, args, ctx, info) const products = { - products: (_, args, { dataSources }) => - dataSources.productApi.getProducts(args), + products: (_, { limit, visible, browsable }, { dataSources }) => + dataSources.productApi.getProducts(limit, visible, browsable), }; export default products;