import { DateTime } from 'luxon'
import { BaseModel, column } from '@adonisjs/lucid/orm'
import { IntlCouriers, IntlCouriersRateType } from '../../types/enum.js'

export default class IntlCourierRate extends BaseModel {
  @column({ isPrimary: true })
  declare id: number

  @column()
  declare intl_courier_rate_group_id: number

  @column({
    serialize: (value) => {
      return { id: value, name: IntlCouriers[value as keyof typeof IntlCouriers] }
    },
  })
  declare courier: IntlCouriers

  @column()
  declare weight_from: number

  @column()
  declare weight_to: number

  @column({
    serialize: (value) => {
      return { id: value, name: IntlCouriersRateType[value as keyof typeof IntlCouriersRateType] }
    },
  })
  declare rate_type: IntlCouriersRateType

  @column()
  declare value: number

  @column.dateTime({ autoCreate: true })
  declare created_at: DateTime

  @column.dateTime({ autoCreate: true, autoUpdate: true })
  declare updated_at: DateTime
}
