import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { HydratedDocument } from 'mongoose';

@Schema({ _id: false })
export class CarFuelRates {
  @Prop({ default: 0, min: 0 })
  petrolPerKm: number;

  @Prop({ default: 0, min: 0 })
  dieselPerKm: number;

  @Prop({ default: 0, min: 0 })
  cngPerKm: number;

  @Prop({ default: 0, min: 0 })
  electricPerKm: number;
}

export const CarFuelRatesSchema = SchemaFactory.createForClass(CarFuelRates);

@Schema({ _id: false })
export class BikeFuelRates {
  @Prop({ default: 0, min: 0 })
  petrolPerKm: number;

  @Prop({ default: 0, min: 0 })
  electricPerKm: number;
}

export const BikeFuelRatesSchema = SchemaFactory.createForClass(BikeFuelRates);

export type FuelRatesDocument = HydratedDocument<FuelRates>;

@Schema({ timestamps: true, collection: 'fuel_rates' })
export class FuelRates {
  @Prop({ required: true, unique: true, default: 'default' })
  key: string;

  @Prop({ type: CarFuelRatesSchema, default: () => ({}) })
  car: CarFuelRates;

  @Prop({ type: BikeFuelRatesSchema, default: () => ({}) })
  bike: BikeFuelRates;

  /** @deprecated Legacy flat fields — migrated into `car` on read. */
  @Prop({ default: 0, min: 0 })
  petrolPerKm?: number;

  /** @deprecated */
  @Prop({ default: 0, min: 0 })
  dieselPerKm?: number;

  /** @deprecated */
  @Prop({ default: 0, min: 0 })
  cngPerKm?: number;
}

export const FuelRatesSchema = SchemaFactory.createForClass(FuelRates);
