/**
 * Media Kit Model
 * Manages media kits for the PR Content Engine
 */

import mongoose, { Schema, Document } from 'mongoose';

// ============================================
// TYPE DEFINITIONS
// ============================================

export interface IMediaKit extends Document {
  companyId: string;
  name: string;
  companyOverview: string;
  founderOverview: string;
  keyAchievements: string;
  awardsRecognition: string;
  contactLayout: string;
  heroImage?: string;
  status: 'draft' | 'generated' | 'reviewed' | 'published';
  tags?: string[];
  version?: number;
  language?: string;
  createdAt: Date;
  updatedAt: Date;
}

// ============================================
// MAIN SCHEMA
// ============================================

const MediaKitSchema = new Schema<IMediaKit>({
  companyId: {
    type: String,
    required: [true, 'Company ID is required'],
    index: true
  },
  name: {
    type: String,
    required: [true, 'Name is required'],
    trim: true,
    maxlength: [200, 'Name cannot exceed 200 characters']
  },
  companyOverview: { type: String, default: '' },
  founderOverview: { type: String, default: '' },
  keyAchievements: { type: String, default: '' },
  awardsRecognition: { type: String, default: '' },
  contactLayout: { type: String, default: '' },
  heroImage: { type: String, trim: true },
  status: {
    type: String,
    enum: ['draft', 'generated', 'reviewed', 'published'],
    default: 'draft'
  },
  tags: [{ type: String, trim: true }],
  version: { type: Number, default: 1 },
  language: { type: String, default: 'en' },
}, {
  timestamps: true
});

// ============================================
// INDEXES
// ============================================

MediaKitSchema.index({ companyId: 1, status: 1 });

// ============================================
// EXPORT
// ============================================

export const MediaKit = mongoose.model<IMediaKit>('MediaKit', MediaKitSchema);