import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { Document } from 'mongoose';

export type AhaRuleVersionDocument = AhaRuleVersion & Document;

@Schema({ _id: false })
export class AhaKeyEventRule {
  @Prop({ required: true })
  key: string;

  @Prop({ required: true })
  label: string;

  @Prop({ type: [String], required: true, default: [] })
  event_names: string[];

  @Prop({ required: true, min: 1 })
  min_count: number;

  @Prop({ required: true, default: true })
  required: boolean;
}

export const AhaKeyEventRuleSchema =
  SchemaFactory.createForClass(AhaKeyEventRule);

@Schema({ timestamps: true, collection: 'aha_rule_versions' })
export class AhaRuleVersion {
  @Prop({ required: true })
  version: string;

  @Prop({ required: true })
  label: string;

  @Prop()
  description?: string;

  @Prop({ required: true, default: false })
  is_active: boolean;

  @Prop({ type: [AhaKeyEventRuleSchema], required: true, default: [] })
  key_events: AhaKeyEventRule[];

  @Prop({ type: [String], default: [] })
  allowed_key_screens: string[];

  @Prop({ required: true, min: 1 })
  min_distinct_key_screens: number;

  @Prop({ required: true, min: 0 })
  min_return_days: number;

  @Prop()
  created_by?: string;
}

export const AhaRuleVersionSchema =
  SchemaFactory.createForClass(AhaRuleVersion);

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