import {
  BaseEntity,
  Column,
  Entity,
  ManyToOne,
  JoinColumn,
  PrimaryGeneratedColumn,
} from "typeorm";
import { User } from "../user/user";

@Entity({ name: "RefreshToken" })
export class RefreshToken extends BaseEntity {
  @PrimaryGeneratedColumn("uuid")
  id: string;

  @Column({ name: "token", type: "varchar", length: 1000 })
  token: string;

  @Column({ name: "userId" })
  userId: string;

  @ManyToOne(() => User)
  @JoinColumn({ name: "userId" })
  user: User;

  @Column({ name: "expiresAt", type: "timestamp" })
  expiresAt: Date;

  @Column({ name: "isRevoked", default: false })
  isRevoked: boolean;

  @Column({ name: "createdByIp", nullable: true })
  createdByIp: string;

  @Column({
    name: "created_at",
    type: "timestamp",
    default: () => "CURRENT_TIMESTAMP",
  })
  created_at: Date;

  @Column({
    name: "updated_at",
    type: "timestamp",
    default: () => "CURRENT_TIMESTAMP",
  })
  updated_at: Date;
}
