diff --git a/bun.lockb b/bun.lockb index 147b2ac..0f04df2 100755 Binary files a/bun.lockb and b/bun.lockb differ 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')