use std::cmp::Ordering; use serde::{Deserialize, Serialize}; #[derive(sqlx::Type, Serialize, Deserialize, PartialEq, Debug, Clone)] #[sqlx(type_name = "septa_route_type", rename_all = "snake_case")] pub enum RouteType { Trolley, SubwayElevated, RegionalRail, Bus, TracklessTrolley, } #[derive(::sqlx::FromRow, Serialize, Deserialize, Debug, Clone)] pub struct Route { pub name: String, pub short_name: String, pub color_hex: String, pub route_type: RouteType, pub id: String, pub directions: Vec, } impl PartialEq for Route { fn eq(&self, other: &Self) -> bool { self.id == other.id } } impl Eq for Route {} impl Ord for Route { fn cmp(&self, other: &Self) -> Ordering { self.id.cmp(&other.id) } } impl PartialOrd for Route { fn partial_cmp(&self, other: &Self) -> Option { Some(self.id.cmp(&other.id)) } } #[derive(::sqlx::FromRow, Serialize, Deserialize, Debug, Clone)] pub struct InterlinedRoute { pub interline_id: String, pub interline_name: String, pub interlined_routes: Vec, }