User.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import {
  2. DataTypes,
  3. Model,
  4. InferAttributes,
  5. InferCreationAttributes,
  6. CreationOptional
  7. } from "sequelize";
  8. import { UserRole } from "./User/UserRole";
  9. import { ObjectIdType } from "@/modules/DataModule";
  10. export class User extends Model<
  11. InferAttributes<User>,
  12. InferCreationAttributes<User>
  13. > {
  14. declare _id: CreationOptional<ObjectIdType>;
  15. declare username: string;
  16. declare name: string;
  17. declare role: CreationOptional<UserRole>;
  18. declare createdAt: CreationOptional<Date>;
  19. declare updatedAt: CreationOptional<Date>;
  20. }
  21. export const schema = {
  22. _id: {
  23. type: DataTypes.OBJECTID,
  24. primaryKey: true,
  25. allowNull: false
  26. },
  27. username: {
  28. type: DataTypes.STRING,
  29. allowNull: false
  30. },
  31. name: {
  32. type: DataTypes.STRING,
  33. allowNull: false
  34. },
  35. role: {
  36. type: DataTypes.ENUM(...Object.values(UserRole)),
  37. defaultValue: UserRole.USER,
  38. allowNull: false
  39. },
  40. // createdBy: {
  41. // type: DataTypes.OBJECTID,
  42. // allowNull: false
  43. // },
  44. createdAt: DataTypes.DATE,
  45. updatedAt: DataTypes.DATE,
  46. _name: {
  47. type: DataTypes.VIRTUAL,
  48. get() {
  49. return `users`;
  50. }
  51. }
  52. };
  53. export const options = {};
  54. export const setup = async () => {
  55. // User.afterSave(async record => {});
  56. // User.afterDestroy(async record => {});
  57. User.addHook("afterFind", (user, options) => {
  58. console.log("AFTER FIND USER", user, options);
  59. });
  60. };
  61. export default User;