import { Sequelize, DataTypes, Optional, Model } from "sequelize" interface ColorAttributes { id: number name: string value: string desctibe: string createdAt?: Date updatedAt?: Date deletedAt?: Date } export interface ColorInput extends Optional { } export interface ColorOutput extends Required { } export type TColorModel = ReturnType export default function ColorModel(sequelize: Sequelize) { interface UserInstance extends Model, ColorAttributes { } const Color = sequelize.define("color", { id: { type: DataTypes.INTEGER, autoIncrement: true, primaryKey: true, }, name: { type: DataTypes.STRING, }, value: { type: DataTypes.STRING, allowNull: false, }, desctibe: { type: DataTypes.STRING, }, }, { underscored: true, deletedAt: true, paranoid: true, timestamps: true, }) // 覆盖Color的toJSON方法 Color.prototype.toJSON = function () { const values = Object.assign({}, this.get()) as ColorAttributes delete values.deletedAt return values } Color.associate = function (models) { models["color"].hasMany(models["color_cate"]) models["color_cate"].belongsTo(models["color"]) } return Color }