import { DateTime } from 'luxon'
import { BaseModel, column, belongsTo } from '@adonisjs/lucid/orm'
import type { BelongsTo } from '@adonisjs/lucid/types/relations'
import Customer from './customer.js'
import User from './user.js'

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

  @column()
  declare customer_id: number | null

  @column()
  declare user_id: number | null

  @column()
  declare webhook_url: string

  @column()
  declare header_name: string | null

  @column()
  declare header_value: string | null

  @column({
    serialize: (value) => value === 1 || value === true || value === '1',
  })
  declare is_active: boolean

  @belongsTo(() => Customer, {
    foreignKey: 'customer_id',
  })
  declare customer_details: BelongsTo<typeof Customer>

  @belongsTo(() => User, {
    foreignKey: 'user_id',
  })
  declare user_details: BelongsTo<typeof User>

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

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