mirror of
https://gitee.com/nocobase/nocobase.git
synced 2025-05-05 05:29:26 +08:00
48 lines
1.1 KiB
TypeScript
48 lines
1.1 KiB
TypeScript
/**
|
|
* 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 { DataTypes } from 'sequelize';
|
|
import { BaseColumnFieldOptions, Field, FieldContext } from './field';
|
|
|
|
export class StringField extends Field {
|
|
get dataType() {
|
|
if (this.options.length) {
|
|
return DataTypes.STRING(this.options.length);
|
|
}
|
|
|
|
return DataTypes.STRING;
|
|
}
|
|
|
|
additionalSequelizeOptions() {
|
|
const { name, trim, unique } = this.options;
|
|
|
|
return {
|
|
set(value) {
|
|
if (unique && value === '') {
|
|
value = null;
|
|
}
|
|
if (value == null) {
|
|
this.setDataValue(name, null);
|
|
return;
|
|
}
|
|
if (typeof value !== 'string') {
|
|
value = value.toString();
|
|
}
|
|
this.setDataValue(name, trim ? value.trim() : value);
|
|
},
|
|
};
|
|
}
|
|
}
|
|
|
|
export interface StringFieldOptions extends BaseColumnFieldOptions {
|
|
type: 'string';
|
|
length?: number;
|
|
trim?: boolean;
|
|
}
|