数据库实体

// 导入 TypeORM 中常用的装饰器和类型,用于定义实体、列、主键等。
import { Entity, Column, PrimaryGeneratedColumn, CreateDateColumn, Generated } from 'typeorm'

// 使用 @Entity 装饰器将 Login 类标记为数据库中的实体(表)。
@Entity()
export class Login {
  // @PrimaryGeneratedColumn('uuid') 装饰器指定 id 字段为主键,
  // 且自动生成的值类型为 UUID(唯一标识符)。注意:属性类型是 number,通常 UUID 类型用 string 表示,需确认是否符合预期。
  @PrimaryGeneratedColumn('uuid')
  id: number

  // @Column 装饰器用于定义数据库表中的一列。
  // 这里指定 name 列的数据类型为 char,字符长度为 255。
  @Column({ type: 'char', length: '255' })
  name: string

  // 定义 password 字段:
  // - select: false 表示查询时默认不返回此字段,适用于敏感数据隐藏。
  // - comment: '注释' 说明此列的用途或其它信息。
  // - default: '默认值' 指定了当数据未提供时的默认值。
  // - nullable: true 表示该列可以为空。
  @Column({ select: false, comment: '注释', default: '默认值', nullable: true })
  password: string

  // @Generated('uuid') 装饰器用于指定 uuid 字段由数据库生成 UUID 值。
  // 通常与 @Column 装饰器一同使用,如果只有 @Generated 可能需要确保数据库默认值配置正确。
  @Generated('uuid')
  uuid: string

  // @CreateDateColumn 装饰器会在记录创建时自动设置当前时间,
  // 同时指定数据类型为 timestamp(时间戳)。
  @CreateDateColumn({ type: 'timestamp' })
  createTime: Date

  // 定义 sex 字段:
  // - 数据类型为枚举(enum),枚举的取值范围是 [1, 2, 3]。
  // - default: 1 指定默认值为 1。
  @Column({ type: 'enum', enum: [1, 2, 3], default: 1 })
  sex: number

  // @Column('simple-array') 装饰器表示该列存储的是一个简单数组,
  // 数组中的元素会被存储为逗号分隔的字符串。
  @Column('simple-array')
  names: string[]

  // @Column('simple-json') 装饰器表示该列存储 JSON 数据,
  // 这里定义的数据结构包括 name(字符串)和 age(数字)。
  @Column('simple-json')
  json: { name: string; age: number }
}