import mongoose, { Schema } from 'mongoose';

const newsletterSchema = new Schema(
  {
    email: {
      type: String,
      required: [true, 'Email is required'],
      unique: true,
      lowercase: true,
      trim: true,
    },
    name: {
      type: String,
      required: false,
      trim: true,
    },
    source: {
      type: String,
      required: false,
      default: 'website',
    },
    status: {
      type: String,
      enum: ['subscribed', 'unsubscribed'],
      default: 'subscribed',
    },
    subscribedAt: {
      type: Date,
      default: Date.now,
    },
    unsubscribedAt: {
      type: Date,
      default: null,
    },
  },
  { timestamps: true }
);

newsletterSchema.index({ email: 1 }, { unique: true });

function NewsletterModel(dbObject: typeof mongoose) {
  if (dbObject.models.newsletters) {
    return dbObject.models.newsletters;
  }

  return dbObject.model('newsletters', newsletterSchema);
}

export default NewsletterModel;