
table "passengers" {
  schema = schema.solidarity_service
  column "passenger_id" {
    null = false
    type = uuid
  }
  column "alias" {
    null = false
    type = varchar(15)
  }
  column "last_name" {
    null = true
    type = text
  }
  column "first_name" {
    null = true
    type = text
  }
  column "grade" {
    null = true
    type = int
  }
  column "picture" {
    null = true
    type = varchar(200)
  }
  column "verified_identity"{
    null = true
    type = bool
  }
  column "operator" {
    null = false
    type = varchar(35)
  }
  column "preferences" {
    null = true
    type = jsonb
  }
  primary_key {
    columns = [column.passenger_id]
  }
}


table "drivers" {
  schema = schema.solidarity_service
  column "driver_id" {
    null = false
    type = uuid
  }
  column "driver_departure_route" {
    null = false
    type = jsonb
  }
  column "driver_radius" {
    null = false
    type = integer
  }
  column "last_name" {
    null = true
    type = text
  }
  column "first_name" {
    null = true
    type = text
  }
  column "grade" {
    null = true
    type = int
  }
  column "alias" {
    null = false
    type = varchar(15)
  }
  column "picture" {
    null = true
    type = text
  }
  column "verified_identity"{
    null = true
    type = bool
  }
  column "preferences" {
    null = true
    type = jsonb
  }
  column "availabilities_type" {
    null = false
    type = enum.availabilities_type
  }
  column "availabilities" {
    null = false
    type = jsonb
  }
  column "car" {
    null = true
    type = jsonb
  }
  column "operator" {
    null = false
    type = varchar(35)
  }
  primary_key {
    columns = [column.driver_id]
  }
}


table "bookings" {
  schema = schema.solidarity_service
  column "booking_id" {
    null = false
    type = uuid
  }
  column "driver_id" {
    null = false
    type = uuid
  }
  column "operator" {
    null = false
    type = varchar(35)
  }
  column "passenger_id" {
    null = false
    type = uuid
  }
  column "booking_status" {
    null = false
    type = enum.bookingstatus
  }
  column "departure_address" {
    null = false
    type = jsonb
  }
  column "destination_address" {
    null = false
    type = jsonb
  }
  column "pickup_date" {
    null = false
    type = int
  }
  column "duration"{
    null = false
    type = int
  }
  column "distance"{
    null = false
    type = float
  }
  primary_key {
    columns = [column.booking_id]
  }
  foreign_key "bookings_driver_id_fkey" {
    columns     = [column.driver_id]
    ref_columns = [table.drivers.column.driver_id]
  }
  foreign_key "group_members_passenger_id_fkey" {
    columns     = [column.passenger_id]
    ref_columns = [table.passengers.column.passenger_id]
  }
}
enum "bookingstatus" {
  schema = schema.solidarity_service
  values = ["INITIATED", "WAITING_PASSENGER_CONFIRMATION", "WAITING_DRIVER_CONFIRMATION", "CONFIRMED", "CANCELLED", "COMPLETED_PENDING_VALIDATION", "VALIDATED"]
}
enum "availabilities_type" {
  schema = schema.solidarity_service
  values = ["PUNCTUAL","REGULAR"]
}

schema "solidarity_service" {
}
