11 changed files with 1760 additions and 3328 deletions
File diff suppressed because it is too large
Binary file not shown.
@ -0,0 +1,75 @@ |
|||||
|
import { Sequelize, DataTypes, Optional, Model } from "sequelize" |
||||
|
|
||||
|
interface UserInfoAttributes { |
||||
|
id: number |
||||
|
user_id: number |
||||
|
nickname: string |
||||
|
email: string |
||||
|
avatar: string |
||||
|
tel: string |
||||
|
|
||||
|
createdAt?: Date |
||||
|
updatedAt?: Date |
||||
|
deletedAt?: Date |
||||
|
} |
||||
|
|
||||
|
export interface UserInfoInput extends Optional<UserInfoAttributes, "id" | "email" | "nickname" | "avatar" | "tel"> {} |
||||
|
export interface UserInfoOuput extends Required<UserInfoAttributes> {} |
||||
|
export type TUserInfoModel = ReturnType<typeof UserInfoModel> |
||||
|
|
||||
|
type DT = typeof DataTypes |
||||
|
export default function UserInfoModel(sequelize: Sequelize, DataTypes: DT) { |
||||
|
class UserInfo extends Model<UserInfoAttributes, UserInfoInput> implements UserInfoAttributes { |
||||
|
public id: number |
||||
|
public user_id: number |
||||
|
public nickname: string |
||||
|
public email: string |
||||
|
public avatar: string |
||||
|
public tel: string |
||||
|
|
||||
|
// timestamps!
|
||||
|
public readonly createdAt!: Date |
||||
|
public readonly updatedAt!: Date |
||||
|
public readonly deletedAt!: Date |
||||
|
} |
||||
|
UserInfo.init( |
||||
|
{ |
||||
|
id: { |
||||
|
type: DataTypes.INTEGER, |
||||
|
autoIncrement: true, |
||||
|
primaryKey: true, |
||||
|
}, |
||||
|
user_id: { |
||||
|
type: DataTypes.INTEGER, |
||||
|
allowNull: false, |
||||
|
}, |
||||
|
nickname: { |
||||
|
type: DataTypes.STRING, |
||||
|
allowNull: false, |
||||
|
}, |
||||
|
email: { |
||||
|
type: DataTypes.STRING, |
||||
|
}, |
||||
|
avatar: { |
||||
|
type: DataTypes.STRING, |
||||
|
}, |
||||
|
tel: { |
||||
|
type: DataTypes.STRING, |
||||
|
}, |
||||
|
}, |
||||
|
{ |
||||
|
modelName: "UserInfo", |
||||
|
sequelize, |
||||
|
timestamps: true, |
||||
|
paranoid: true, // 对模型施加了一个软删除
|
||||
|
}, |
||||
|
) |
||||
|
// 覆盖User的toJSON方法
|
||||
|
interface UserInfo { |
||||
|
toJSON: () => UserInfoOuput |
||||
|
} |
||||
|
UserInfo.associate = function (models) { |
||||
|
models["UserInfo"].belongsTo(models["User"], { foreignKey: "user_id" }) |
||||
|
} |
||||
|
return UserInfo |
||||
|
} |
@ -1,20 +0,0 @@ |
|||||
import { Sequelize, DataTypes } from "sequelize" |
|
||||
|
|
||||
type DT = typeof DataTypes |
|
||||
module.exports = function (sequelize: Sequelize, DataTypes: DT) { |
|
||||
const User = sequelize.define( |
|
||||
"ha-user", |
|
||||
{ |
|
||||
username: { |
|
||||
type: DataTypes.STRING, |
|
||||
allowNull: false, |
|
||||
}, |
|
||||
password: { |
|
||||
type: DataTypes.STRING, |
|
||||
allowNull: false, |
|
||||
}, |
|
||||
}, |
|
||||
{}, |
|
||||
) |
|
||||
return User |
|
||||
} |
|
@ -1,31 +0,0 @@ |
|||||
import { Sequelize, DataTypes } from "sequelize" |
|
||||
|
|
||||
type DT = typeof DataTypes |
|
||||
module.exports = function (sequelize: Sequelize, DataTypes: DT) { |
|
||||
const UserInfo = sequelize.define( |
|
||||
"ha-user_info", |
|
||||
{ |
|
||||
nickname: { |
|
||||
type: DataTypes.STRING, |
|
||||
allowNull: false, |
|
||||
}, |
|
||||
email: { |
|
||||
type: DataTypes.STRING, |
|
||||
}, |
|
||||
avatar: { |
|
||||
type: DataTypes.STRING, |
|
||||
}, |
|
||||
tel: { |
|
||||
type: DataTypes.STRING, |
|
||||
}, |
|
||||
}, |
|
||||
{}, |
|
||||
) |
|
||||
|
|
||||
// @ts-ignore
|
|
||||
UserInfo.associate = function (models) { |
|
||||
models["ha-user"].hasOne(models["ha-user_info"]) |
|
||||
models["ha-user_info"].belongsTo(models["ha-user"], { foreignKey: "user_id" }) |
|
||||
} |
|
||||
return UserInfo |
|
||||
} |
|
Loading…
Reference in new issue