diff --git a/packages/core/database/src/interfaces/input-interface.ts b/packages/core/database/src/interfaces/input-interface.ts new file mode 100644 index 0000000000..6ce0717ec4 --- /dev/null +++ b/packages/core/database/src/interfaces/input-interface.ts @@ -0,0 +1,24 @@ +/** + * This file is part of the NocoBase (R) project. + * Copyright (c) 2020-2024 NocoBase Co., Ltd. + * Authors: NocoBase Team. + * + * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License. + * For more information, please refer to: https://www.nocobase.com/agreement. + */ + +import _ from 'lodash'; +import { BaseInterface } from './base-interface'; + +export class InputInterface extends BaseInterface { + toValue(value) { + if (this.validate(value)) { + return value.toString(); + } + throw new Error('Invalid value, expected string'); + } + + validate(value): boolean { + return _.isString(value) || _.isNumber(value); + } +} diff --git a/packages/core/database/src/interfaces/utils.ts b/packages/core/database/src/interfaces/utils.ts index cc10790ad0..f78cc47980 100644 --- a/packages/core/database/src/interfaces/utils.ts +++ b/packages/core/database/src/interfaces/utils.ts @@ -26,6 +26,7 @@ import { OneToManyInterface } from './one-to-many-interface'; import { IntegerInterface } from './integer-interface'; import { NumberInterface } from './number-interface'; import { JsonInterface } from './json-interface'; +import { InputInterface } from './input-interface'; const interfaces = { integer: IntegerInterface, @@ -52,6 +53,7 @@ const interfaces = { m2o: ManyToOneInterface, m2m: ManyToManyInterface, time: TimeInterface, + input: InputInterface, }; export function registerInterfaces(db: Database) {