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

export interface IRevenueCatWebhookEvent extends Document {
  eventId: string;
  eventType: string;
  appUserId: string;
  processedAt: Date;
}

const RevenueCatWebhookEventSchema = new Schema<IRevenueCatWebhookEvent>(
  {
    eventId: { type: String, required: true, unique: true, trim: true },
    eventType: { type: String, required: true, trim: true },
    appUserId: { type: String, required: true, trim: true },
    processedAt: { type: Date, default: () => new Date() },
  },
  { timestamps: true },
);

RevenueCatWebhookEventSchema.index(
  { processedAt: 1 },
  { expireAfterSeconds: 90 * 86400 },
);

const RevenueCatWebhookEventModel: Model<IRevenueCatWebhookEvent> =
  model<IRevenueCatWebhookEvent>(
    "RevenueCatWebhookEvent",
    RevenueCatWebhookEventSchema,
  );

export default RevenueCatWebhookEventModel;
