You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

71 lines
1.7 KiB

import { Sequelize, DataTypes, Optional, Model } from "sequelize";
interface UserAttributes {
id: number;
username: string;
password: string;
nickname: string;
email: string;
avatar: string;
tel: string;
createdAt?: Date;
updatedAt?: Date;
deletedAt?: Date;
}
export interface UserInput extends Optional<UserAttributes, "id"> { }
export interface UserOutput extends Required<UserAttributes> { }
export type TUserModel = ReturnType<typeof UserModel>
export default function UserModel(sequelize: Sequelize) {
interface UserInstance
extends Model<UserAttributes, UserInput>,
UserAttributes { }
const User = sequelize.define<UserInstance>("user", {
id: {
type: DataTypes.INTEGER,
autoIncrement: true,
primaryKey: true,
},
username: {
type: DataTypes.STRING,
allowNull: false,
},
password: {
type: DataTypes.STRING,
allowNull: false,
},
nickname: {
type: DataTypes.STRING,
allowNull: false,
},
email: {
type: DataTypes.STRING,
},
avatar: {
type: DataTypes.STRING,
},
tel: {
type: DataTypes.STRING,
},
}, {
underscored: true,
deletedAt: true,
paranoid: true,
timestamps: true,
});
User.prototype.toJSON = function () {
const values = { ...this.get() } as UserAttributes;
delete values.password;
delete values.deletedAt;
return values;
};
User.associate = function (models) {
// Define associations here
};
return User;
}