import mongoose, { Schema, models, model } from "mongoose";

// Persistente Fahrtenbuch-Historie — der Kilometerrechner (MileageCalculator)
// war bisher rein zustandslos (jede Fahrt musste einzeln neu berechnet
// werden, ohne Historie). Bewusst getrennt vom Expense-Modell: eine Fahrt
// landet hier immer, unabhängig davon, ob sie zusätzlich als Ausgabe erfasst
// wird (nicht jede geloggte Fahrt soll zwingend die Buchhaltung berühren).
export interface MileageTripDoc {
  _id: string;
  date: Date;
  km: number;
  ratePerKm: number;
  amount: number;
  purpose: string;
  createdBy: mongoose.Types.ObjectId;
  createdAt: Date;
}

const mileageTripSchema = new Schema<MileageTripDoc>(
  {
    date: { type: Date, required: true, index: true },
    km: { type: Number, required: true, min: 0 },
    ratePerKm: { type: Number, required: true, min: 0 },
    amount: { type: Number, required: true, min: 0 },
    purpose: { type: String, default: "", trim: true, maxlength: 300 },
    createdBy: { type: Schema.Types.ObjectId, ref: "Client", required: true },
  },
  { timestamps: { createdAt: true, updatedAt: false } }
);

export const MileageTrip =
  (models.MileageTrip as mongoose.Model<MileageTripDoc>) || model<MileageTripDoc>("MileageTrip", mileageTripSchema);
