import mongoose, { Document, Schema } from 'mongoose';

export const PLATFORMS = ['windows', 'macos', 'linux'] as const;
export type Platform = (typeof PLATFORMS)[number];

export interface IDesktopReleaseDocument extends Document {
  version: string;
  platform: Platform;
  installer_filename: string;
  original_filename: string;
  release_notes: string[];
  mandatory: boolean;
  is_active: boolean;
  file_size: number;
  release_date: Date;
  createdAt: Date;
  updatedAt: Date;
}

const desktopReleaseSchema = new Schema<IDesktopReleaseDocument>(
  {
    version: { type: String, required: true, trim: true },
    platform: { type: String, enum: PLATFORMS, required: true, default: 'windows' },
    installer_filename: { type: String, required: true },
    original_filename: { type: String, required: true },
    release_notes: { type: [String], default: [] },
    mandatory: { type: Boolean, default: false },
    is_active: { type: Boolean, default: false },
    file_size: { type: Number, default: 0 },
    release_date: { type: Date, default: Date.now },
  },
  { timestamps: true },
);

desktopReleaseSchema.index({ version: 1, platform: 1 }, { unique: true });
desktopReleaseSchema.index({ platform: 1, is_active: 1 });

export default mongoose.model<IDesktopReleaseDocument>('DesktopRelease', desktopReleaseSchema);
