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

export enum UserRole {
  SUPER_ADMIN = "super_admin",
  ADMIN = "admin",
  OPERATIVO = "operativo",
  RECEPCION = "recepcion",
  MECANICO = "mecanico",
}

@Entity("taller_usuarios")
export class Usuario {
  @PrimaryGeneratedColumn()
  id: number;

  @Column({ length: 100, unique: true })
  @Index()
  username: string;

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

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

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

  @Column({
    type: "enum",
    enum: UserRole,
    default: UserRole.OPERATIVO,
  })
  rol: UserRole;

  @Column({ type: "json", nullable: true })
  permisos?: Record<string, "none" | "read" | "write">;

  @Column({ default: true })
  @Index()
  activo: boolean;

  @Column({ name: "ultimo_login", type: "datetime", nullable: true })
  ultimoLogin: Date;

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

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