import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import mongoose, { Document } from 'mongoose';
import { User } from '../users/users.model';

export type UserAnalyticsDocument = UserAnalytics & Document;


@Schema({ timestamps: false, _id: false })
export class DailyAnalytics {
  @Prop({ type: String, required: [true, 'Date is required'] })
  date: string; // YYYY-MM-DD

  @Prop({ type: Number, default: 0 })
  count: number;
}


@Schema({ timestamps: true, autoIndex: true})
export class UserAnalytics {
  @Prop({
    required: [true, 'User is required'],
    ref: 'User',
    type: mongoose.Schema.Types.ObjectId,
    unique: true,
  }) 
  user: User;

  @Prop({ type: [DailyAnalytics], default: [] })
  messageSent: DailyAnalytics[];

  @Prop({ type: [DailyAnalytics], default: [] })
  imageGenerated: DailyAnalytics[];

  @Prop({ type: [DailyAnalytics], default: [] })
  urlRead: DailyAnalytics[];

  @Prop({ type: [DailyAnalytics], default: [] })
  fileRead: DailyAnalytics[];

  @Prop({ type: [DailyAnalytics], default: [] })
  messageBlocked: DailyAnalytics[];

  @Prop({ type: [DailyAnalytics], default: [] })
  imageBlocked: DailyAnalytics[];

  createdAt: Date;
  updatedAt: Date;
}

export const UserAnalyticsSchema = SchemaFactory.createForClass(UserAnalytics);
