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

export interface IGameAttempt extends Document {
  user: mongoose.Types.ObjectId;
  game: mongoose.Types.ObjectId;
  answers: string; // 81-char string, user's current or submitted board
  status: 'in_progress' | 'completed' | 'failed';
  score: number;
  timeTaken: number; // in seconds
  startedAt: Date;
  completedAt?: Date;
}

const gameAttemptSchema = new Schema<IGameAttempt>({
  user: { type: Schema.Types.ObjectId, ref: 'User', required: true },
  game: { type: Schema.Types.ObjectId, ref: 'Game', required: true },
  answers: { type: String, required: true },
  status: { type: String, enum: ['in_progress', 'completed', 'failed'], default: 'in_progress' },
  score: { type: Number, default: 0 },
  timeTaken: { type: Number, default: 0 },
  startedAt: { type: Date, default: Date.now },
  completedAt: { type: Date },
});

gameAttemptSchema.index({ user: 1, game: 1 });

export default mongoose.model<IGameAttempt>('GameAttempt', gameAttemptSchema);
