1use strum::Display;
2
3#[derive(Copy, Clone, Debug, Display)]
4#[strum(serialize_all = "snake_case")]
5pub enum MediaField {
6    DurationMs,
7    Height,
8    MediaKey,
9    PreviewImageUrl,
10    Type,
11    Url,
12    Width,
13    PublicMetrics,
14    NonPublicMetrics,
15    OrganicMetrics,
16    PromotedMetrics,
17    AltText,
18    Variants
19}
20
21#[derive(Copy, Clone, Debug, Display)]
22#[strum(serialize_all = "snake_case")]
23pub enum PlaceField {
24    ContainedWithin,
25    Country,
26    CountryCode,
27    FullName,
28    Geo,
29    Id,
30    Name,
31    PlaceType,
32}
33
34#[derive(Copy, Clone, Debug, Display)]
35#[strum(serialize_all = "snake_case")]
36pub enum PollField {
37    DurationMinutes,
38    EndDatetime,
39    Id,
40    Options,
41    VotingStatus,
42}
43
44#[derive(Copy, Clone, Debug, Display)]
45#[strum(serialize_all = "snake_case")]
46pub enum TweetField {
47    Attachments,
48    AuthorId,
49    ContextAnnotations,
50    ConversationId,
51    CreatedAt,
52    Entities,
53    Geo,
54    Id,
55    InReplyToUserId,
56    Lang,
57    NonPublicMetrics,
58    PublicMetrics,
59    OrganicMetrics,
60    PromotedMetrics,
61    PossiblySensitive,
62    ReferencedTweets,
63    ReplySettings,
64    Source,
65    Text,
66    Withheld,
67}
68
69#[derive(Copy, Clone, Debug, Display)]
70#[strum(serialize_all = "snake_case")]
71pub enum UserField {
72    CreatedAt,
73    Description,
74    Entities,
75    Id,
76    Location,
77    Name,
78    PinnedTweetId,
79    ProfileImageUrl,
80    Protected,
81    PublicMetrics,
82    Url,
83    Username,
84    Verified,
85    Withheld,
86}
87
88#[derive(Copy, Clone, Debug, Display)]
89#[strum(serialize_all = "snake_case")]
90pub enum SpaceField {
91    HostIds,
92    CreatedAt,
93    CreatorId,
94    Id,
95    Lang,
96    InvitedUserIds,
97    ParticipantCount,
98    SpeakerIds,
99    StartedAt,
100    EndedAt,
101    SubscriberCount,
102    TopicIds,
103    State,
104    Title,
105    UpdatedAt,
106    ScheduledStart,
107    IsTicketed,
108}
109
110#[derive(Copy, Clone, Debug, Display)]
111#[strum(serialize_all = "snake_case")]
112pub enum TopicField {
113    Id,
114    Name,
115    Description,
116}
117
118#[derive(Copy, Clone, Debug, Display)]
119#[strum(serialize_all = "snake_case")]
120pub enum ListField {
121    CreatedAt,
122    FollowerCount,
123    MemberCount,
124    Private,
125    Description,
126    OwnerId,
127}