import { Sequelize, DataTypes, Optional, Model } from "sequelize" interface ColorAttributes { id: number /** * 颜色名 */ name: string /** * 颜色值 */ value: string /** * 颜色描述 */ desctibe: string /** * 示例链接 */ example_link: string createdAt?: Date updatedAt?: Date deletedAt?: Date } export interface ColorInput extends Optional {} export interface ColorOutput extends Required {} export type TColorModel = ReturnType type DT = typeof DataTypes export default function ColorModel(sequelize: Sequelize, DataTypes: DT) { class Color extends Model implements ColorAttributes { public id!: number public name!: string public value!: string public desctibe: string public example_link: string // timestamps! public readonly createdAt!: Date public readonly updatedAt!: Date public readonly deletedAt!: Date } Color.init( { id: { type: DataTypes.INTEGER, autoIncrement: true, primaryKey: true, }, name: { type: DataTypes.STRING, allowNull: false, }, value: { type: DataTypes.STRING, allowNull: false, }, desctibe: { type: DataTypes.STRING, }, example_link: { type: DataTypes.STRING, }, }, { modelName: "color", sequelize, underscored: true, deletedAt: true, timestamps: true, paranoid: true, // 对模型施加了一个软删除 }, ) // 覆盖Color的toJSON方法 Color.prototype.toJSON = function () { const values = Object.assign({}, this.get()) as ColorAttributes delete values.deletedAt return values } Color.associate = function (models) {} return Color }