var mongoose = require('mongoose'); // ===== Broccolini Bot Models ===== const ticketSchema = new mongoose.Schema({ gmailThreadId: { type: String, required: true, unique: true, index: true }, discordThreadId: String, broccoliniTicketId: Number, lastSyncedBroccoliniArticleId: Number, senderEmail: { type: String, required: true }, subject: String, createdAt: { type: Date, default: Date.now }, status: { type: String, default: 'open', enum: ['open', 'closed'] }, transcriptMessageId: String, claimedBy: String, escalated: { type: Boolean, default: false }, escalationTier: { type: Number, default: 0 }, ticketNumber: Number, renameCount: { type: Number, default: 0 }, renameWindowStart: Date, priority: { type: String, default: 'normal', enum: ['low', 'normal', 'medium', 'high'] }, ticketTag: String, lastActivity: Date, reminderSent: { type: Boolean, default: false }, welcomeMessageId: String, claimerId: String, staffChannelId: String, parentCategoryId: String, unclaimedRemindersSent: { type: [Number], default: [] }, lastMessageAuthorIsStaff: { type: Boolean, default: false }, pendingDelete: { type: Boolean, default: false } }); ticketSchema.index({ status: 1, lastActivity: 1 }); ticketSchema.index({ senderEmail: 1, status: 1 }); ticketSchema.index({ discordThreadId: 1 }); mongoose.model('Ticket', ticketSchema); mongoose.model('TicketCounter', new mongoose.Schema({ senderLocal: { type: String, required: true, unique: true }, counter: { type: Number, default: 1 } })); mongoose.model('Transcript', new mongoose.Schema({ gmailThreadId: { type: String, required: true }, transcriptMessageId: String, createdAt: { type: Date, default: Date.now } })); mongoose.model('Tag', new mongoose.Schema({ name: { type: String, required: true, unique: true }, content: { type: String, required: true }, createdAt: { type: Date, default: Date.now }, createdBy: String, useCount: { type: Number, default: 0 } })); mongoose.model('GuildSettings', new mongoose.Schema({ guildId: { type: String, required: true, unique: true }, emailRouting: { type: String, enum: ['thread', 'category'], default: 'category' }, updatedAt: { type: Date, default: Date.now } })); mongoose.model('StaffSettings', new mongoose.Schema({ userId: { type: String, required: true, unique: true }, guildId: { type: String, required: true }, notifyDm: { type: Boolean, default: false }, updatedAt: { type: Date, default: Date.now } })); mongoose.model('StaffSignature', new mongoose.Schema({ userId: { type: String, required: true, unique: true }, guildId: { type: String, required: true }, valediction: { type: String, default: '' }, displayName: { type: String, default: '' }, tagline: { type: String, default: '' }, updatedAt: { type: Date, default: Date.now } }));