import {
  Column,
  CreateDateColumn,
  Entity,
  Index,
  PrimaryGeneratedColumn,
  UpdateDateColumn,
} from "typeorm";

export enum IdentidadEstado {
  ACTIVA = "activa",
  SUSPENDIDA = "suspendida",
}

export enum RolPlataforma {
  NINGUNO = "ninguno",
  ADMIN_PLATAFORMA = "admin_plataforma",
}

// La persona. Un correo = una fila = un hash de contraseña. Esto es
// contraseña de persona (a diferencia de Tenant.dbPasswordEncrypted, que es
// una credencial de conexion): hashear aca es correcto.
@Entity("identidades")
export class Identidad {
  @PrimaryGeneratedColumn()
  id: number;

  @Column({ length: 255, unique: true })
  @Index()
  email: string;

  @Column({ length: 255 })
  nombre: string;

  @Column({ name: "password_hash", length: 255 })
  passwordHash: string;

  @Column({ type: "enum", enum: IdentidadEstado, default: IdentidadEstado.ACTIVA })
  estado: IdentidadEstado;

  @Column({
    name: "rol_plataforma",
    type: "enum",
    enum: RolPlataforma,
    default: RolPlataforma.NINGUNO,
  })
  rolPlataforma: RolPlataforma;

  @CreateDateColumn({ name: "created_at" })
  createdAt: Date;

  @UpdateDateColumn({ name: "updated_at" })
  updatedAt: Date;
}
