import { Entity, Column, PrimaryGeneratedColumn, CreateDateColumn, UpdateDateColumn, OneToMany, } from 'typeorm'; import { Order } from './order.entity'; import { UserCourse } from './user-course.entity'; import { Comment } from './comment.entity'; export enum UserRole { USER = 'user', ADMIN = 'admin', } @Entity('users') export class User { @PrimaryGeneratedColumn() id: number; @Column({ type: 'varchar', length: 100, unique: true }) email: string; @Column({ type: 'varchar', length: 255, name: 'password_hash' }) passwordHash: string; @Column({ type: 'varchar', length: 50 }) nickname: string; @Column({ type: 'varchar', length: 255, nullable: true }) avatar: string; @Column({ type: 'boolean', default: false, name: 'is_vip' }) isVip: boolean; @Column({ type: 'varchar', default: UserRole.USER }) role: UserRole; @CreateDateColumn({ name: 'created_at' }) createdAt: Date; @UpdateDateColumn({ name: 'updated_at' }) updatedAt: Date; @OneToMany(() => Order, (order) => order.user) orders: Order[]; @OneToMany(() => UserCourse, (userCourse) => userCourse.user) userCourses: UserCourse[]; @OneToMany(() => Comment, (comment) => comment.user) comments: Comment[]; }