gistools/readers/gbfs/schema_v1/
system_hours.rs

1use alloc::{string::String, vec::Vec};
2use serde::{Deserialize, Serialize};
3
4/// # GBFS System Hours Schema V1.1 OR GBFS System Hours Schema V1.0
5/// Describes the system hours of operation.
6///
7/// ## Links
8/// - [GBFS Specification V1.1](https://github.com/MobilityData/gbfs/blob/v1.1/gbfs.md#system_hoursjson)
9/// - [GBFS Specification V1.0](https://github.com/MobilityData/gbfs/blob/v1.0/gbfs.md#system_hoursjson)
10pub type GBFSSystemHoursV1 = GBFSSystemHoursV11;
11
12/// GBFS System Hours User Type
13#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq)]
14pub enum GBFSSystemHourTypeV1 {
15    /// GBFS System Hours User Type
16    #[serde(rename = "member")]
17    #[default]
18    Member,
19    /// GBFS System Hours User Type
20    #[serde(rename = "nonmember")]
21    NonMember,
22}
23
24/// GBFS System Hours Day
25#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq)]
26pub enum GBFSSystemHourDayV1 {
27    /// Sunday
28    #[serde(rename = "sun")]
29    #[default]
30    Sun,
31    /// Monday
32    #[serde(rename = "mon")]
33    Mon,
34    /// Tuesday
35    #[serde(rename = "tue")]
36    Tue,
37    /// Wednesday
38    #[serde(rename = "wed")]
39    Wed,
40    /// Thursday
41    #[serde(rename = "thu")]
42    Thu,
43    /// Friday
44    #[serde(rename = "fri")]
45    Fri,
46    /// Saturday
47    #[serde(rename = "sat")]
48    Sat,
49}
50
51/// GBFS System Hour
52#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq)]
53pub struct GBFSSystemHourV1 {
54    /// GBFS System Hours User Type
55    pub user_types: Vec<GBFSSystemHourTypeV1>,
56    /// GBFS System Hours Day
57    pub days: Vec<GBFSSystemHourDayV1>,
58    /// Start time
59    pub start_time: String,
60    /// End time
61    pub end_time: String,
62}
63
64/// GBFS System Hours Data
65#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq)]
66pub struct GBFSSystemHoursDataV1 {
67    /// Rental hours
68    pub rental_hours: Vec<GBFSSystemHourV1>,
69}
70
71/// GBFS System Hours Schema V1.1 Interface
72#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq)]
73pub struct GBFSSystemHoursV11 {
74    /// Last time the data in the feed was updated in POSIX time.
75    pub last_updated: u64,
76    /// Number of seconds before the data in the feed will be updated again.
77    pub ttl: u64,
78    /// GBFS version number (1.1).
79    pub version: String,
80    /// Data containing system hours of operations.
81    pub data: GBFSSystemHoursDataV1,
82}
83
84/// GBFS System Hours Schema V1.0 Interface
85#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq)]
86pub struct GBFSSystemHoursV10 {
87    /// Last time the data in the feed was updated in POSIX time.
88    pub last_updated: u64,
89    /// Number of seconds before the data in the feed will be updated again.
90    pub ttl: u64,
91    /// Data containing system hours of operations.
92    pub data: GBFSSystemHoursDataV1,
93}