import mongoose, { Document, Schema } from "mongoose";

export interface IAdminDocument extends Document {
  id: string;
  name: string;
  email: string;
  password?: string;
  role: string;
  avatar: string | null;
  tokenVersion: number;
  refreshToken?: string | null;
  resetToken?: string | null;
  resetTokenExpiry?: Date | null;
  twoFactorEnabled: boolean;
  twoFactorSecret?: string | null;
  twoFactorVerifiedAt?: Date | null;
  createdAt: Date;
  updatedAt: Date;
}

const adminSchema = new Schema<IAdminDocument>(
  {
    name: String,
    email: { type: String, unique: true },
    password: { type: String, select: false },
    role: { type: String, default: "admin" },
    avatar: { type: String, default: null },
    tokenVersion: { type: Number, default: 0 },
    refreshToken: { type: String, default: null, select: false },
    resetToken: { type: String, default: null, select: false },
    resetTokenExpiry: { type: Date, default: null, select: false },
    twoFactorEnabled: {
      type: Boolean,
      default: false,
    },

    twoFactorSecret: {
      type: String,
      default: null,
    },

    twoFactorVerifiedAt: {
      type: Date,
      default: null,
    },
  },
  { timestamps: true },
);

export default mongoose.model<IAdminDocument>("Admin", adminSchema);
