/**
 * PR Quote Model
 * Manages quotes generated by the AI Quote Generator
 */

import mongoose, { Schema, Document } from 'mongoose';

// ============================================
// TYPE DEFINITIONS
// ============================================

export type QuoteType = 'founder-quote' | 'ceo-quote' | 'leadership-quote' | 'expert-quote';

export interface IPRQuote extends Omit<Document, 'isSelected'> {
  companyId: string;
  contentId: string;
  contentType: string;
  quoteType: QuoteType;
  quoteText: string;
  attribution: string;
  context?: string;
  tone: string;
  language?: string;
  isSelected: boolean;
  createdAt: Date;
  updatedAt: Date;
}

// ============================================
// MAIN SCHEMA
// ============================================

const PRQuoteSchema = new Schema<IPRQuote>({
  companyId: {
    type: String,
    required: [true, 'Company ID is required'],
    index: true
  },
  contentId: {
    type: String,
    required: [true, 'Content ID is required'],
    index: true
  },
  contentType: {
    type: String,
    required: [true, 'Content type is required'],
    enum: ['press-release', 'news-story', 'thought-leadership', 'media-outreach'],
  },
  quoteType: {
    type: String,
    enum: ['founder-quote', 'ceo-quote', 'leadership-quote', 'expert-quote'],
    default: 'founder-quote'
  },
  quoteText: {
    type: String,
    required: [true, 'Quote text is required'],
    trim: true
  },
  attribution: {
    type: String,
    required: [true, 'Attribution is required'],
    trim: true
  },
  context: { type: String, default: '' },
  tone: {
    type: String,
    enum: ['professional', 'educational', 'authoritative', 'conversational'],
    default: 'professional'
  },
  language: { type: String, default: 'en' },
  isSelected: { type: Boolean, default: false },
}, {
  timestamps: true
});

// ============================================
// INDEXES
// ============================================

PRQuoteSchema.index({ companyId: 1, contentId: 1 });
PRQuoteSchema.index({ companyId: 1, quoteType: 1 });

// ============================================
// EXPORT
// ============================================

export const PRQuote = mongoose.model<IPRQuote>('PRQuote', PRQuoteSchema);