diff --git a/packages/backend/src/apps/formatter/actions/numbers/index.ts b/packages/backend/src/apps/formatter/actions/numbers/index.ts index 9f74172d..c6c25a97 100644 --- a/packages/backend/src/apps/formatter/actions/numbers/index.ts +++ b/packages/backend/src/apps/formatter/actions/numbers/index.ts @@ -1,9 +1,11 @@ import defineAction from '../../../../helpers/define-action'; import performMathOperation from './transformers/perform-math-operation'; +import randomNumber from './transformers/random-number'; const transformers = { performMathOperation, + randomNumber, }; export default defineAction({ @@ -20,6 +22,7 @@ export default defineAction({ variables: true, options: [ { label: 'Perform Math Operation', value: 'performMathOperation' }, + { label: 'Random Number', value: 'randomNumber' }, ], additionalFields: { type: 'query', diff --git a/packages/backend/src/apps/formatter/actions/numbers/transformers/random-number.ts b/packages/backend/src/apps/formatter/actions/numbers/transformers/random-number.ts new file mode 100644 index 00000000..fa0bae73 --- /dev/null +++ b/packages/backend/src/apps/formatter/actions/numbers/transformers/random-number.ts @@ -0,0 +1,10 @@ +import { IGlobalVariable } from '@automatisch/types'; + +const randomNumber = ($: IGlobalVariable) => { + const lowerRange = Number($.step.parameters.lowerRange) as number; + const upperRange = Number($.step.parameters.upperRange) as number; + + return Math.floor(Math.random() * (upperRange - lowerRange + 1)) + lowerRange; +}; + +export default randomNumber; diff --git a/packages/backend/src/apps/formatter/dynamic-fields/list-transform-options/index.ts b/packages/backend/src/apps/formatter/dynamic-fields/list-transform-options/index.ts index dfcf3b08..d762ef54 100644 --- a/packages/backend/src/apps/formatter/dynamic-fields/list-transform-options/index.ts +++ b/packages/backend/src/apps/formatter/dynamic-fields/list-transform-options/index.ts @@ -10,6 +10,7 @@ import replace from './text/replace'; import trimWhitespace from './text/trim-whitespace'; import useDefaultValue from './text/use-default-value'; import performMathOperation from './numbers/perform-math-operation'; +import randomNumber from './numbers/random-number'; const options: IJSONObject = { capitalize, @@ -23,6 +24,7 @@ const options: IJSONObject = { trimWhitespace, useDefaultValue, performMathOperation, + randomNumber, }; export default { diff --git a/packages/backend/src/apps/formatter/dynamic-fields/list-transform-options/numbers/random-number.ts b/packages/backend/src/apps/formatter/dynamic-fields/list-transform-options/numbers/random-number.ts new file mode 100644 index 00000000..651d805e --- /dev/null +++ b/packages/backend/src/apps/formatter/dynamic-fields/list-transform-options/numbers/random-number.ts @@ -0,0 +1,20 @@ +const randomNumber = [ + { + label: 'Lower range', + key: 'lowerRange', + type: 'string' as const, + required: true, + description: 'The lowest number to generate.', + variables: true, + }, + { + label: 'Upper range', + key: 'upperRange', + type: 'string' as const, + required: true, + description: 'The highest number to generate.', + variables: true, + }, +]; + +export default randomNumber;