import mongoose, { Schema, models, model } from "mongoose";

export interface PortfolioItemDoc {
  _id: string;
  title: string;
  titleEn: string;
  category: string;
  images: string[];
  // Titelbild für Übersichts-Kacheln (Startseite "Featured", Portfolio-
  // Grid, Admin-Zeile) — frei wählbar statt immer automatisch images[0].
  // Leer/veraltet (z. B. wenn das gewählte Bild entfernt wurde) fällt
  // überall auf images[0] zurück, siehe die jeweiligen Renderstellen.
  coverImage: string;
  description: string;
  descriptionEn: string;
  eventLabel: string;
  modelInstagram: string[];
  tags: string[];
  visible: boolean;
  featured: boolean;
  // Veröffentlichungszeitpunkt — ein Wert in der Zukunft plant den Beitrag
  // (erscheint automatisch erst dann öffentlich, analog zum Blog). Alt-
  // Dokumente ohne Wert gelten als "sofort veröffentlicht".
  publishedAt: Date;
  sortOrder: number;
  createdAt: Date;
  updatedAt: Date;
}

const portfolioItemSchema = new Schema<PortfolioItemDoc>(
  {
    title: { type: String, required: true, trim: true },
    titleEn: { type: String, default: "", trim: true },
    category: { type: String, default: "Cosplay", trim: true },
    images: { type: [String], default: [] },
    coverImage: { type: String, default: "" },
    description: { type: String, default: "", trim: true },
    descriptionEn: { type: String, default: "", trim: true },
    eventLabel: { type: String, default: "", trim: true },
    modelInstagram: { type: [String], default: [] },
    tags: { type: [String], default: [] },
    visible: { type: Boolean, default: true },
    featured: { type: Boolean, default: false },
    publishedAt: { type: Date, default: Date.now, index: true },
    sortOrder: { type: Number, default: 0 },
  },
  { timestamps: true }
);

export const PortfolioItem =
  (models.PortfolioItem as mongoose.Model<PortfolioItemDoc>) ||
  model<PortfolioItemDoc>("PortfolioItem", portfolioItemSchema);
