vlr_scraper/model/
event.rs

1use serde::{Deserialize, Serialize};
2use strum_macros::EnumString;
3
4/// Filter for the type of events to retrieve.
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
6pub enum EventType {
7    Upcoming,
8    Completed,
9}
10
11/// Paginated response containing a list of events.
12#[derive(Debug, Clone, Serialize)]
13pub struct EventsData {
14    pub events: Vec<Event>,
15    pub page: u8,
16    pub total_pages: u8,
17}
18
19/// A single esports event (tournament/league).
20#[derive(Debug, Clone, Serialize)]
21pub struct Event {
22    pub status: EventStatus,
23    pub region: String,
24    pub id: u32,
25    pub title: String,
26    pub slug: String,
27    pub href: String,
28    pub icon_url: String,
29    pub price: String,
30    pub dates: String,
31}
32
33/// The current status of an event.
34#[derive(
35    Debug, Default, Clone, Serialize, EnumString, strum_macros::Display, strum_macros::FromRepr,
36)]
37#[strum(serialize_all = "lowercase")]
38pub enum EventStatus {
39    Completed,
40    Ongoing,
41    Upcoming,
42    #[default]
43    #[strum(disabled)]
44    Unknown,
45}
46
47/// Region filter for event queries.
48#[derive(Debug, Clone, strum_macros::Display)]
49#[strum(serialize_all = "kebab-case")]
50pub enum Region {
51    All,
52    NorthAmerica,
53    Europe,
54    Brazil,
55    AsiaPacific,
56    Korea,
57    Japan,
58    LatinAmerica,
59    Oceania,
60    MiddleEastNorthAfrica,
61    GameChangers,
62    Collegiate,
63}