import mongoose, { Schema, Document, Model } from 'mongoose';

export interface ITempImportRow extends Document {
  batchId: string;
  rowNumber: number;
  name: string;
  gender: string;
  mobile: string;
  email: string;
  address: string;
  rawCity: string;
  rawArea: string;
  status: 'Valid' | 'Warning' | 'Error';
  reason: string;
  duplicateMemberId?: mongoose.Types.ObjectId; // References Member if duplicate warning
  createdAt: Date;
}

const TempImportRowSchema = new Schema<ITempImportRow>({
  batchId: { type: String, required: true, index: true },
  rowNumber: { type: Number, required: true },
  name: { type: String, trim: true, default: '' },
  gender: { type: String, trim: true, default: '' },
  mobile: { type: String, trim: true, default: '' },
  email: { type: String, trim: true, default: '' },
  address: { type: String, trim: true, default: '' },
  rawCity: { type: String, trim: true, default: '' },
  rawArea: { type: String, trim: true, default: '' },
  status: {
    type: String,
    enum: ['Valid', 'Warning', 'Error'],
    required: true,
    default: 'Valid'
  },
  reason: { type: String, trim: true, default: '' },
  duplicateMemberId: { type: Schema.Types.ObjectId, ref: 'Member' },
  createdAt: { type: Date, default: Date.now, expires: 86400 } // TTL 24 Hours
});

export const TempImportRow: Model<ITempImportRow> =
  mongoose.models.TempImportRow || mongoose.model<ITempImportRow>('TempImportRow', TempImportRowSchema);
export default TempImportRow;
