2022-02-19 17:16:12 +08:00

25 lines
585 B
TypeScript

import { uid } from '@nocobase/utils';
import { DataTypes } from 'sequelize';
import { BaseColumnFieldOptions, Field } from './field';
export class UidField extends Field {
get dataType() {
return DataTypes.STRING;
}
init() {
const { name, prefix = '' } = this.options;
const { model } = this.context.collection;
model.beforeCreate(async (instance) => {
if (!instance.get(name)) {
instance.set(name, `${prefix}${uid()}`);
}
});
}
}
export interface UidFieldOptions extends BaseColumnFieldOptions {
type: 'uid';
prefix?: string;
}