import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, Index, ManyToOne, JoinColumn, } from 'typeorm'; import { User } from './user.entity.js'; @Entity({ schema: 'auth', name: 'password_resets' }) @Index('idx_password_resets_user_id', ['userId']) @Index('idx_password_resets_token', ['token']) @Index('idx_password_resets_expires_at', ['expiresAt']) export class PasswordReset { @PrimaryGeneratedColumn('uuid') id: string; @Column({ type: 'uuid', nullable: false, name: 'user_id' }) userId: string; @Column({ type: 'varchar', length: 500, unique: true, nullable: false }) token: string; @Column({ type: 'timestamp', nullable: false, name: 'expires_at' }) expiresAt: Date; @Column({ type: 'timestamp', nullable: true, name: 'used_at' }) usedAt: Date | null; @Column({ type: 'inet', nullable: true, name: 'ip_address' }) ipAddress: string | null; // Relaciones @ManyToOne(() => User, (user) => user.passwordResets, { onDelete: 'CASCADE', }) @JoinColumn({ name: 'user_id' }) user: User; // Timestamps @CreateDateColumn({ name: 'created_at', type: 'timestamp' }) createdAt: Date; }