From d5a8016f21c08b04c79fc178b36c8e5c7d37cc65 Mon Sep 17 00:00:00 2001 From: Thomas T Date: Tue, 21 Nov 2023 14:57:34 +0100 Subject: [PATCH] Update types --- bun.lockb | Bin 53277 -> 56416 bytes src/calculations/calculator.ts | 8 ++++---- src/calculations/interfaces/request.ts | 9 +++++++++ src/calculations/spaces/main_space_class.ts | 3 +-- .../types/custom_space_constant.ts | 3 +++ src/index.ts | 19 +++++++----------- 6 files changed, 24 insertions(+), 18 deletions(-) create mode 100644 src/calculations/interfaces/request.ts create mode 100644 src/calculations/types/custom_space_constant.ts diff --git a/bun.lockb b/bun.lockb index 147b2acaef570056850f412c71a0b4f17687c613..0f04df2eb21e267a5a746b3510d041cffb948faa 100755 GIT binary patch delta 5462 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 diff --git a/src/calculations/calculator.ts b/src/calculations/calculator.ts index c784a63..9eded77 100644 --- a/src/calculations/calculator.ts +++ b/src/calculations/calculator.ts @@ -4,10 +4,10 @@ import { ISpace } from './interfaces/space' import { IConfig } from './interfaces/config' import { ISpaceCalculation } from './interfaces/space_calculation' import { ISpaceResult } from './interfaces/space_result' -import { ISpaceConstant } from './interfaces/space_constant' import { IVariable } from './interfaces/variable' import { IConstant } from './interfaces/constant' import { ICalculationResult } from './interfaces/calculationresult' +import { TCustomSpaceConstants } from './types/custom_space_constant' import getSpace from './spaces' import Dummy from './spaces/dummy' @@ -16,8 +16,8 @@ import Dummy from './spaces/dummy' */ export default class Calculator { variables: IVariable - customSpaceConstants: ISpaceConstant - customConstants: IConstant + customSpaceConstants?: TCustomSpaceConstants + customConstants?: IConstant config: IConfig constants: IConstant totalWorkplaceArea: number = 0 @@ -34,7 +34,7 @@ export default class Calculator { * @param {IConstant} customConstants – Custom constants * @param {string} [configFile] – The config file to use */ - constructor(variables: IVariable, customSpaceConstants: ISpaceConstant, customConstants: IConstant , configFile: string = 'default.json') { + constructor(variables: IVariable, customSpaceConstants: TCustomSpaceConstants|undefined, customConstants: IConstant|undefined , configFile: string = 'default.json') { this.variables = variables this.customSpaceConstants = customSpaceConstants this.customConstants = customConstants diff --git a/src/calculations/interfaces/request.ts b/src/calculations/interfaces/request.ts new file mode 100644 index 0000000..ff0dc44 --- /dev/null +++ b/src/calculations/interfaces/request.ts @@ -0,0 +1,9 @@ +import { IVariable } from './variable' +import { IConstant } from './constant' +import { TCustomSpaceConstants } from '../types/custom_space_constant' + +export interface IRequest { + variables: IVariable + customConstants?: IConstant + customSpaceConstants?: TCustomSpaceConstants +} diff --git a/src/calculations/spaces/main_space_class.ts b/src/calculations/spaces/main_space_class.ts index ebcf3f4..ca58cab 100644 --- a/src/calculations/spaces/main_space_class.ts +++ b/src/calculations/spaces/main_space_class.ts @@ -5,8 +5,7 @@ import { ISpaceCalculation } from '../interfaces/space_calculation' import { IConstant } from '../interfaces/constant' import { IVariable } from '../interfaces/variable' import { findSpace } from '../helpers' - -type TCustomSpaceConstants = {[key:string]:ISpaceConstant} +import { TCustomSpaceConstants } from '../types/custom_space_constant' /** * This is the main class for the spaces. It contains shared methods for all spaces. diff --git a/src/calculations/types/custom_space_constant.ts b/src/calculations/types/custom_space_constant.ts new file mode 100644 index 0000000..f8111e5 --- /dev/null +++ b/src/calculations/types/custom_space_constant.ts @@ -0,0 +1,3 @@ +import { ISpaceConstant } from '../interfaces/space_constant' + +export type TCustomSpaceConstants = {[key:string]:ISpaceConstant} diff --git a/src/index.ts b/src/index.ts index e6432ba..b3a7f0b 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,9 +1,10 @@ -import { ISpaceConstant } from './calculations/interfaces/space_constant' import { IConstant } from './calculations/interfaces/constant' import { IVariable } from './calculations/interfaces/variable' +import { IRequest } from './calculations/interfaces/request' import Calculator from './calculations/calculator' import redis from 'redis' import { RedisClientType } from '@redis/client' +import { TCustomSpaceConstants } from './calculations/types/custom_space_constant' let redisClient: RedisClientType if (process.env.USE_CACHE_REDIS === '1') { @@ -32,22 +33,16 @@ Bun.serve({ const url = new URL(req.url) if (url.pathname === "/") return new Response("Agiliate is running", { headers }) if (url.pathname === "/calculate") { - const jsonReq = await req.json() + const jsonReq: IRequest = await req.json() as IRequest if (process.env.CACHE === '1') { - const cachedResult = await redisClient.get(jsonReq) + const cachedResult = await redisClient.get(JSON.stringify(jsonReq)) if (cachedResult) { return Response.json(JSON.parse(cachedResult), { headers }) } } - const variables: IVariable = { - ...jsonReq.variables - } - const customSpaceConstants: ISpaceConstant = { - ...jsonReq?.customSpaceConstants - } - const customConstants: IConstant = { - ...jsonReq?.customConstants - } + const variables: IVariable = jsonReq.variables + const customSpaceConstants: TCustomSpaceConstants|undefined = jsonReq?.customSpaceConstants + const customConstants: IConstant|undefined = jsonReq?.customConstants const calculator = new Calculator(variables, customSpaceConstants, customConstants) const result = calculator.result() if (process.env.CACHE === '1')