File size: 1,422 Bytes
f0953a4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import { DataTypes, Model, Optional } from "sequelize";
import sequelize from "../config/database";

interface UserAttributes {
  id: number;
  userId?: number;
  username: string;
  password: string;
  role: number; // 修改为数字类型
}

interface UserCreationAttributes extends Optional<UserAttributes, "id"> {}

class User extends Model<UserAttributes, UserCreationAttributes> implements UserAttributes {
  public id!: number;
  public userId!: number;
  public username!: string;
  public password!: string;
  public role!: number; // 实现数字类型的角色属性
}

User.init(
  {
    id: {
      type: DataTypes.INTEGER,
      autoIncrement: true,
      primaryKey: true,
      allowNull: false, // 显式设置为不可为空
    },
    userId: {
      type: DataTypes.UUID, // 对外暴露的不可预测ID
      defaultValue: DataTypes.UUIDV4,
      unique: true,
      allowNull: false, // 显式设置为不可为空
    },
    username: {
      type: DataTypes.STRING,
      allowNull: false,
      unique: true,
    },
    password: {
      type: DataTypes.STRING,
      allowNull: false,
    },
    role: {
      type: DataTypes.INTEGER, // 修改为数字类型
      allowNull: false,
      defaultValue: 0, // 默认值为普通用户
    },
  },
  {
    sequelize,
    modelName: "User",
    tableName: "users",
  }
);

// 角色映射
// 0: 普通用户
// 1: 管理员

export default User;