import mongooseModel from "mongoose";
import { toImageUrl } from "../utils/imageUrl";
const mongoose = require("mongoose");

const Occasion = mongoose.Schema(
  {
    // Stable identifier the app already uses (matches the hardcoded
    // OCCASIONS[].id values: "birthday", "anniversary", etc.) so existing
    // app code can keep keying off this instead of the Mongo _id.
    key: {
      type: String,
      required: true,
      unique: true,
      trim: true,
    },
    title: {
      type: String,
      required: true,
      trim: true,
    },
    // Default message pre-filled into the event note when this occasion is
    // selected (the app's `autoNote`).
    autoNote: {
      type: String,
      default: "",
    },
    // Stored as a relative S3 key (folder/filename), same convention as
    // Product.images / StoreInformation.storeImage — expanded to a full
    // URL on read via the toJSON/toObject transform below.
    icon: {
      type: String,
      default: "",
    },
    sortOrder: {
      type: Number,
      default: 0,
    },
    isActive: {
      type: Boolean,
      default: true,
    },
  },
  { timestamps: true },
);

const expandIconUrl = (_doc: any, ret: any) => {
  if (ret.icon) ret.icon = toImageUrl(ret.icon);
  return ret;
};
Occasion.set("toObject", { transform: expandIconUrl });
Occasion.set("toJSON", { transform: expandIconUrl });

export default mongoose.model("Occasion", Occasion);
