@sideline/domain 0.8.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/dist/cjs/api/AgeThresholdApi.js +7 -1
  2. package/dist/cjs/api/AgeThresholdApi.js.map +1 -1
  3. package/dist/cjs/api/Auth.js +9 -8
  4. package/dist/cjs/api/Auth.js.map +1 -1
  5. package/dist/cjs/api/EventApi.js +26 -23
  6. package/dist/cjs/api/EventApi.js.map +1 -1
  7. package/dist/cjs/api/EventRsvpApi.js +28 -10
  8. package/dist/cjs/api/EventRsvpApi.js.map +1 -1
  9. package/dist/cjs/api/EventSeriesApi.js +33 -27
  10. package/dist/cjs/api/EventSeriesApi.js.map +1 -1
  11. package/dist/cjs/api/GroupApi.js +22 -14
  12. package/dist/cjs/api/GroupApi.js.map +1 -1
  13. package/dist/cjs/api/ICalApi.js +25 -0
  14. package/dist/cjs/api/ICalApi.js.map +1 -0
  15. package/dist/cjs/api/RoleApi.js +11 -3
  16. package/dist/cjs/api/RoleApi.js.map +1 -1
  17. package/dist/cjs/api/Roster.js +10 -10
  18. package/dist/cjs/api/Roster.js.map +1 -1
  19. package/dist/cjs/api/TeamSettingsApi.js +21 -12
  20. package/dist/cjs/api/TeamSettingsApi.js.map +1 -1
  21. package/dist/cjs/api/TrainingTypeApi.js +17 -8
  22. package/dist/cjs/api/TrainingTypeApi.js.map +1 -1
  23. package/dist/cjs/index.js +5 -1
  24. package/dist/cjs/models/AgeThresholdRule.js +2 -2
  25. package/dist/cjs/models/AgeThresholdRule.js.map +1 -1
  26. package/dist/cjs/models/ChannelSyncEvent.js +5 -5
  27. package/dist/cjs/models/ChannelSyncEvent.js.map +1 -1
  28. package/dist/cjs/models/Event.js +5 -5
  29. package/dist/cjs/models/Event.js.map +1 -1
  30. package/dist/cjs/models/EventRsvp.js +1 -1
  31. package/dist/cjs/models/EventRsvp.js.map +1 -1
  32. package/dist/cjs/models/EventSeries.js +8 -7
  33. package/dist/cjs/models/EventSeries.js.map +1 -1
  34. package/dist/cjs/models/GroupModel.js +2 -2
  35. package/dist/cjs/models/GroupModel.js.map +1 -1
  36. package/dist/cjs/models/ICalToken.js +17 -0
  37. package/dist/cjs/models/ICalToken.js.map +1 -0
  38. package/dist/cjs/models/OAuthConnection.js +1 -1
  39. package/dist/cjs/models/OAuthConnection.js.map +1 -1
  40. package/dist/cjs/models/RoleSyncEvent.js +5 -5
  41. package/dist/cjs/models/RoleSyncEvent.js.map +1 -1
  42. package/dist/cjs/models/TeamInvite.js +1 -1
  43. package/dist/cjs/models/TeamInvite.js.map +1 -1
  44. package/dist/cjs/models/TeamMember.js +1 -1
  45. package/dist/cjs/models/TeamMember.js.map +1 -1
  46. package/dist/cjs/models/TeamSettings.js +2 -0
  47. package/dist/cjs/models/TeamSettings.js.map +1 -1
  48. package/dist/cjs/models/TrainingType.js +1 -1
  49. package/dist/cjs/models/TrainingType.js.map +1 -1
  50. package/dist/cjs/models/User.js +5 -4
  51. package/dist/cjs/models/User.js.map +1 -1
  52. package/dist/cjs/rpc/event/EventRpcEvents.js +24 -12
  53. package/dist/cjs/rpc/event/EventRpcEvents.js.map +1 -1
  54. package/dist/cjs/rpc/event/EventRpcGroup.js +30 -4
  55. package/dist/cjs/rpc/event/EventRpcGroup.js.map +1 -1
  56. package/dist/cjs/rpc/event/EventRpcModels.js +60 -13
  57. package/dist/cjs/rpc/event/EventRpcModels.js.map +1 -1
  58. package/dist/cjs/rpc/guild/GuildRpcGroup.js +3 -3
  59. package/dist/cjs/rpc/guild/GuildRpcGroup.js.map +1 -1
  60. package/dist/dts/api/AgeThresholdApi.d.ts +6 -1
  61. package/dist/dts/api/AgeThresholdApi.d.ts.map +1 -1
  62. package/dist/dts/api/Auth.d.ts +22 -21
  63. package/dist/dts/api/Auth.d.ts.map +1 -1
  64. package/dist/dts/api/EventApi.d.ts +73 -73
  65. package/dist/dts/api/EventApi.d.ts.map +1 -1
  66. package/dist/dts/api/EventRsvpApi.d.ts +52 -19
  67. package/dist/dts/api/EventRsvpApi.d.ts.map +1 -1
  68. package/dist/dts/api/EventSeriesApi.d.ts +89 -81
  69. package/dist/dts/api/EventSeriesApi.d.ts.map +1 -1
  70. package/dist/dts/api/GroupApi.d.ts +49 -44
  71. package/dist/dts/api/GroupApi.d.ts.map +1 -1
  72. package/dist/dts/api/ICalApi.d.ts +28 -0
  73. package/dist/dts/api/ICalApi.d.ts.map +1 -0
  74. package/dist/dts/api/RoleApi.d.ts +13 -8
  75. package/dist/dts/api/RoleApi.d.ts.map +1 -1
  76. package/dist/dts/api/Roster.d.ts +32 -32
  77. package/dist/dts/api/TeamSettingsApi.d.ts +60 -36
  78. package/dist/dts/api/TeamSettingsApi.d.ts.map +1 -1
  79. package/dist/dts/api/TrainingTypeApi.d.ts +28 -23
  80. package/dist/dts/api/TrainingTypeApi.d.ts.map +1 -1
  81. package/dist/dts/index.d.ts +2 -0
  82. package/dist/dts/index.d.ts.map +1 -1
  83. package/dist/dts/models/AgeThresholdRule.d.ts +22 -22
  84. package/dist/dts/models/ChannelSyncEvent.d.ts +55 -55
  85. package/dist/dts/models/Event.d.ts +57 -57
  86. package/dist/dts/models/EventRsvp.d.ts +11 -11
  87. package/dist/dts/models/EventSeries.d.ts +68 -66
  88. package/dist/dts/models/EventSeries.d.ts.map +1 -1
  89. package/dist/dts/models/GroupModel.d.ts +22 -22
  90. package/dist/dts/models/ICalToken.d.ts +69 -0
  91. package/dist/dts/models/ICalToken.d.ts.map +1 -0
  92. package/dist/dts/models/OAuthConnection.d.ts +8 -8
  93. package/dist/dts/models/RoleSyncEvent.d.ts +55 -55
  94. package/dist/dts/models/TeamInvite.d.ts +11 -11
  95. package/dist/dts/models/TeamMember.d.ts +22 -22
  96. package/dist/dts/models/TeamSettings.d.ts +26 -0
  97. package/dist/dts/models/TeamSettings.d.ts.map +1 -1
  98. package/dist/dts/models/TrainingType.d.ts +11 -11
  99. package/dist/dts/models/User.d.ts +44 -44
  100. package/dist/dts/models/User.d.ts.map +1 -1
  101. package/dist/dts/rpc/SyncRpcs.d.ts +24 -9
  102. package/dist/dts/rpc/SyncRpcs.d.ts.map +1 -1
  103. package/dist/dts/rpc/event/EventRpcEvents.d.ts +24 -11
  104. package/dist/dts/rpc/event/EventRpcEvents.d.ts.map +1 -1
  105. package/dist/dts/rpc/event/EventRpcGroup.d.ts +22 -7
  106. package/dist/dts/rpc/event/EventRpcGroup.d.ts.map +1 -1
  107. package/dist/dts/rpc/event/EventRpcModels.d.ts +165 -36
  108. package/dist/dts/rpc/event/EventRpcModels.d.ts.map +1 -1
  109. package/dist/dts/rpc/guild/GuildRpcGroup.d.ts +3 -3
  110. package/dist/esm/api/AgeThresholdApi.js +5 -0
  111. package/dist/esm/api/AgeThresholdApi.js.map +1 -1
  112. package/dist/esm/api/Auth.js +8 -7
  113. package/dist/esm/api/Auth.js.map +1 -1
  114. package/dist/esm/api/EventApi.js +25 -23
  115. package/dist/esm/api/EventApi.js.map +1 -1
  116. package/dist/esm/api/EventRsvpApi.js +25 -9
  117. package/dist/esm/api/EventRsvpApi.js.map +1 -1
  118. package/dist/esm/api/EventSeriesApi.js +33 -28
  119. package/dist/esm/api/EventSeriesApi.js.map +1 -1
  120. package/dist/esm/api/GroupApi.js +20 -13
  121. package/dist/esm/api/GroupApi.js.map +1 -1
  122. package/dist/esm/api/ICalApi.js +16 -0
  123. package/dist/esm/api/ICalApi.js.map +1 -0
  124. package/dist/esm/api/RoleApi.js +9 -2
  125. package/dist/esm/api/RoleApi.js.map +1 -1
  126. package/dist/esm/api/Roster.js +10 -10
  127. package/dist/esm/api/Roster.js.map +1 -1
  128. package/dist/esm/api/TeamSettingsApi.js +21 -12
  129. package/dist/esm/api/TeamSettingsApi.js.map +1 -1
  130. package/dist/esm/api/TrainingTypeApi.js +15 -7
  131. package/dist/esm/api/TrainingTypeApi.js.map +1 -1
  132. package/dist/esm/index.js +2 -0
  133. package/dist/esm/index.js.map +1 -1
  134. package/dist/esm/models/AgeThresholdRule.js +2 -2
  135. package/dist/esm/models/AgeThresholdRule.js.map +1 -1
  136. package/dist/esm/models/ChannelSyncEvent.js +5 -5
  137. package/dist/esm/models/ChannelSyncEvent.js.map +1 -1
  138. package/dist/esm/models/Event.js +5 -5
  139. package/dist/esm/models/Event.js.map +1 -1
  140. package/dist/esm/models/EventRsvp.js +1 -1
  141. package/dist/esm/models/EventRsvp.js.map +1 -1
  142. package/dist/esm/models/EventSeries.js +7 -6
  143. package/dist/esm/models/EventSeries.js.map +1 -1
  144. package/dist/esm/models/GroupModel.js +2 -2
  145. package/dist/esm/models/GroupModel.js.map +1 -1
  146. package/dist/esm/models/ICalToken.js +10 -0
  147. package/dist/esm/models/ICalToken.js.map +1 -0
  148. package/dist/esm/models/OAuthConnection.js +1 -1
  149. package/dist/esm/models/OAuthConnection.js.map +1 -1
  150. package/dist/esm/models/RoleSyncEvent.js +5 -5
  151. package/dist/esm/models/RoleSyncEvent.js.map +1 -1
  152. package/dist/esm/models/TeamInvite.js +1 -1
  153. package/dist/esm/models/TeamInvite.js.map +1 -1
  154. package/dist/esm/models/TeamMember.js +1 -1
  155. package/dist/esm/models/TeamMember.js.map +1 -1
  156. package/dist/esm/models/TeamSettings.js +2 -0
  157. package/dist/esm/models/TeamSettings.js.map +1 -1
  158. package/dist/esm/models/TrainingType.js +1 -1
  159. package/dist/esm/models/TrainingType.js.map +1 -1
  160. package/dist/esm/models/User.js +5 -4
  161. package/dist/esm/models/User.js.map +1 -1
  162. package/dist/esm/rpc/event/EventRpcEvents.js +21 -11
  163. package/dist/esm/rpc/event/EventRpcEvents.js.map +1 -1
  164. package/dist/esm/rpc/event/EventRpcGroup.js +31 -5
  165. package/dist/esm/rpc/event/EventRpcGroup.js.map +1 -1
  166. package/dist/esm/rpc/event/EventRpcModels.js +49 -12
  167. package/dist/esm/rpc/event/EventRpcModels.js.map +1 -1
  168. package/dist/esm/rpc/guild/GuildRpcGroup.js +3 -3
  169. package/dist/esm/rpc/guild/GuildRpcGroup.js.map +1 -1
  170. package/package.json +2 -2
  171. package/src/api/AgeThresholdApi.ts +7 -0
  172. package/src/api/Auth.ts +8 -7
  173. package/src/api/EventApi.ts +27 -23
  174. package/src/api/EventRsvpApi.ts +27 -6
  175. package/src/api/EventSeriesApi.ts +33 -28
  176. package/src/api/GroupApi.ts +21 -13
  177. package/src/api/ICalApi.ts +32 -0
  178. package/src/api/RoleApi.ts +10 -2
  179. package/src/api/Roster.ts +10 -10
  180. package/src/api/TeamSettingsApi.ts +21 -12
  181. package/src/api/TrainingTypeApi.ts +16 -7
  182. package/src/index.ts +4 -0
  183. package/src/models/AgeThresholdRule.ts +2 -2
  184. package/src/models/ChannelSyncEvent.ts +5 -5
  185. package/src/models/Event.ts +5 -5
  186. package/src/models/EventRsvp.ts +1 -1
  187. package/src/models/EventSeries.ts +9 -6
  188. package/src/models/GroupModel.ts +2 -2
  189. package/src/models/ICalToken.ts +10 -0
  190. package/src/models/OAuthConnection.ts +1 -1
  191. package/src/models/RoleSyncEvent.ts +5 -5
  192. package/src/models/TeamInvite.ts +1 -1
  193. package/src/models/TeamMember.ts +1 -1
  194. package/src/models/TeamSettings.ts +2 -0
  195. package/src/models/TrainingType.ts +1 -1
  196. package/src/models/User.ts +5 -4
  197. package/src/rpc/event/EventRpcEvents.ts +22 -10
  198. package/src/rpc/event/EventRpcGroup.ts +38 -4
  199. package/src/rpc/event/EventRpcModels.ts +71 -12
  200. package/src/rpc/guild/GuildRpcGroup.ts +3 -3
@@ -5,6 +5,8 @@ import { TeamId } from '~/models/Team.js';
5
5
  export class TeamSettings extends Model.Class<TeamSettings>('TeamSettings')({
6
6
  team_id: TeamId,
7
7
  event_horizon_days: Schema.Int,
8
+ min_players_threshold: Schema.Int,
9
+ rsvp_reminder_hours: Schema.Int,
8
10
  created_at: Model.DateTimeInsertFromDate,
9
11
  updated_at: Model.DateTimeUpdateFromDate,
10
12
  }) {}
@@ -10,6 +10,6 @@ export class TrainingType extends Model.Class<TrainingType>('TrainingType')({
10
10
  id: Model.Generated(TrainingTypeId),
11
11
  team_id: TeamId,
12
12
  name: Schema.String,
13
- group_id: Schema.NullOr(GroupId),
13
+ group_id: Schema.OptionFromNullOr(GroupId),
14
14
  created_at: Model.DateTimeInsertFromDate,
15
15
  }) {}
@@ -1,6 +1,7 @@
1
1
  import { Model } from '@effect/sql';
2
2
  import * as Schemas from '@sideline/effect-lib/Schemas';
3
3
  import { Schema } from 'effect';
4
+ import { Snowflake } from '~/models/Discord.js';
4
5
 
5
6
  export const UserId = Schema.String.pipe(Schema.brand('UserId'));
6
7
  export type UserId = typeof UserId.Type;
@@ -13,12 +14,12 @@ export type Locale = typeof Locale.Type;
13
14
 
14
15
  export class User extends Model.Class<User>('User')({
15
16
  id: Model.Generated(UserId),
16
- discord_id: Schema.String,
17
+ discord_id: Snowflake,
17
18
  username: Schema.String,
18
- avatar: Schema.NullOr(Schema.String),
19
- name: Schema.NullOr(Schema.String),
19
+ avatar: Schema.OptionFromNullOr(Schema.String),
20
+ name: Schema.OptionFromNullOr(Schema.String),
20
21
  birth_date: Schema.OptionFromNullOr(Schemas.DateTimeFromDate),
21
- gender: Schema.NullOr(Gender),
22
+ gender: Schema.OptionFromNullOr(Gender),
22
23
  locale: Locale,
23
24
  created_at: Model.DateTimeInsertFromDate,
24
25
  is_profile_complete: Schema.Boolean,
@@ -1,3 +1,4 @@
1
+ import * as Schemas from '@sideline/effect-lib/Schemas';
1
2
  import { Schema } from 'effect';
2
3
  import { Discord, Event, Team } from '~/index.js';
3
4
 
@@ -7,12 +8,12 @@ export class EventCreatedEvent extends Schema.TaggedClass<EventCreatedEvent>()('
7
8
  guild_id: Discord.Snowflake,
8
9
  event_id: Event.EventId,
9
10
  title: Schema.String,
10
- description: Schema.NullOr(Schema.String),
11
- start_at: Schema.String,
12
- end_at: Schema.NullOr(Schema.String),
13
- location: Schema.NullOr(Schema.String),
11
+ description: Schema.OptionFromNullOr(Schema.String),
12
+ start_at: Schemas.DateTimeFromIsoString,
13
+ end_at: Schema.OptionFromNullOr(Schemas.DateTimeFromIsoString),
14
+ location: Schema.OptionFromNullOr(Schema.String),
14
15
  event_type: Schema.String,
15
- discord_channel_id: Schema.NullOr(Schema.String),
16
+ discord_channel_id: Schema.OptionFromNullOr(Discord.Snowflake),
16
17
  }) {}
17
18
 
18
19
  export class EventUpdatedEvent extends Schema.TaggedClass<EventUpdatedEvent>()('event_updated', {
@@ -21,12 +22,12 @@ export class EventUpdatedEvent extends Schema.TaggedClass<EventUpdatedEvent>()('
21
22
  guild_id: Discord.Snowflake,
22
23
  event_id: Event.EventId,
23
24
  title: Schema.String,
24
- description: Schema.NullOr(Schema.String),
25
- start_at: Schema.String,
26
- end_at: Schema.NullOr(Schema.String),
27
- location: Schema.NullOr(Schema.String),
25
+ description: Schema.OptionFromNullOr(Schema.String),
26
+ start_at: Schemas.DateTimeFromIsoString,
27
+ end_at: Schema.OptionFromNullOr(Schemas.DateTimeFromIsoString),
28
+ location: Schema.OptionFromNullOr(Schema.String),
28
29
  event_type: Schema.String,
29
- discord_channel_id: Schema.NullOr(Schema.String),
30
+ discord_channel_id: Schema.OptionFromNullOr(Discord.Snowflake),
30
31
  }) {}
31
32
 
32
33
  export class EventCancelledEvent extends Schema.TaggedClass<EventCancelledEvent>()(
@@ -39,10 +40,21 @@ export class EventCancelledEvent extends Schema.TaggedClass<EventCancelledEvent>
39
40
  },
40
41
  ) {}
41
42
 
43
+ export class RsvpReminderEvent extends Schema.TaggedClass<RsvpReminderEvent>()('rsvp_reminder', {
44
+ id: Schema.String,
45
+ team_id: Team.TeamId,
46
+ guild_id: Discord.Snowflake,
47
+ event_id: Event.EventId,
48
+ title: Schema.String,
49
+ start_at: Schemas.DateTimeFromIsoString,
50
+ discord_channel_id: Schema.OptionFromNullOr(Discord.Snowflake),
51
+ }) {}
52
+
42
53
  export const UnprocessedEventSyncEvent = Schema.Union(
43
54
  EventCreatedEvent,
44
55
  EventUpdatedEvent,
45
56
  EventCancelledEvent,
57
+ RsvpReminderEvent,
46
58
  );
47
59
 
48
60
  export type UnprocessedEventSyncEvent = Schema.Schema.Type<typeof UnprocessedEventSyncEvent>;
@@ -4,13 +4,20 @@ import { Discord, Event, EventRsvp, Team } from '~/index.js';
4
4
  import { UnprocessedEventSyncEvent } from './EventRpcEvents.js';
5
5
  import {
6
6
  ChannelEventEntry,
7
+ CreateEventForbidden,
8
+ CreateEventInvalidDate,
9
+ CreateEventNotMember,
10
+ CreateEventResult,
7
11
  EventDiscordMessage,
8
12
  EventEmbedInfo,
13
+ GuildEventListResult,
14
+ GuildNotFound,
9
15
  RsvpAttendeesResult,
10
16
  RsvpCountsResult,
11
17
  RsvpDeadlinePassed,
12
18
  RsvpEventNotFound,
13
19
  RsvpMemberNotFound,
20
+ RsvpReminderSummary,
14
21
  } from './EventRpcModels.js';
15
22
 
16
23
  export const EventRpcGroup = RpcGroup.make(
@@ -27,8 +34,8 @@ export const EventRpcGroup = RpcGroup.make(
27
34
  Rpc.make('SaveDiscordMessageId', {
28
35
  payload: {
29
36
  event_id: Event.EventId,
30
- discord_channel_id: Schema.String,
31
- discord_message_id: Schema.String,
37
+ discord_channel_id: Discord.Snowflake,
38
+ discord_message_id: Discord.Snowflake,
32
39
  },
33
40
  }),
34
41
  Rpc.make('GetDiscordMessageId', {
@@ -41,7 +48,7 @@ export const EventRpcGroup = RpcGroup.make(
41
48
  team_id: Team.TeamId,
42
49
  discord_user_id: Discord.Snowflake,
43
50
  response: EventRsvp.RsvpResponse,
44
- message: Schema.NullOr(Schema.String),
51
+ message: Schema.OptionFromNullOr(Schema.String),
45
52
  },
46
53
  success: RsvpCountsResult,
47
54
  error: Schema.Union(RsvpMemberNotFound, RsvpDeadlinePassed, RsvpEventNotFound),
@@ -55,11 +62,38 @@ export const EventRpcGroup = RpcGroup.make(
55
62
  success: Schema.OptionFromNullOr(EventEmbedInfo),
56
63
  }),
57
64
  Rpc.make('GetChannelEvents', {
58
- payload: { discord_channel_id: Schema.String },
65
+ payload: { discord_channel_id: Discord.Snowflake },
59
66
  success: Schema.Array(ChannelEventEntry),
60
67
  }),
61
68
  Rpc.make('GetRsvpAttendees', {
62
69
  payload: { event_id: Event.EventId, offset: Schema.Number, limit: Schema.Number },
63
70
  success: RsvpAttendeesResult,
64
71
  }),
72
+ Rpc.make('GetRsvpReminderSummary', {
73
+ payload: { event_id: Event.EventId },
74
+ success: RsvpReminderSummary,
75
+ }),
76
+ Rpc.make('GetUpcomingGuildEvents', {
77
+ payload: {
78
+ guild_id: Discord.Snowflake,
79
+ offset: Schema.Number,
80
+ limit: Schema.Number,
81
+ },
82
+ success: GuildEventListResult,
83
+ error: GuildNotFound,
84
+ }),
85
+ Rpc.make('CreateEvent', {
86
+ payload: {
87
+ guild_id: Discord.Snowflake,
88
+ discord_user_id: Discord.Snowflake,
89
+ event_type: Event.EventType,
90
+ title: Schema.String,
91
+ start_at: Schema.String,
92
+ end_at: Schema.OptionFromNullOr(Schema.String),
93
+ location: Schema.OptionFromNullOr(Schema.String),
94
+ description: Schema.OptionFromNullOr(Schema.String),
95
+ },
96
+ success: CreateEventResult,
97
+ error: Schema.Union(CreateEventNotMember, CreateEventForbidden, CreateEventInvalidDate),
98
+ }),
65
99
  ).prefix('Event/');
@@ -1,8 +1,10 @@
1
+ import * as Schemas from '@sideline/effect-lib/Schemas';
1
2
  import { Schema } from 'effect';
3
+ import { Snowflake } from '~/models/Discord.js';
2
4
 
3
5
  export class EventDiscordMessage extends Schema.Class<EventDiscordMessage>('EventDiscordMessage')({
4
- discord_channel_id: Schema.String,
5
- discord_message_id: Schema.String,
6
+ discord_channel_id: Snowflake,
7
+ discord_message_id: Snowflake,
6
8
  }) {}
7
9
 
8
10
  export class RsvpCountsResult extends Schema.Class<RsvpCountsResult>('RsvpCountsResult')({
@@ -15,8 +17,8 @@ export class RsvpCountsResult extends Schema.Class<RsvpCountsResult>('RsvpCounts
15
17
  export class EventEmbedInfo extends Schema.Class<EventEmbedInfo>('EventEmbedInfo')({
16
18
  title: Schema.String,
17
19
  description: Schema.OptionFromNullOr(Schema.String),
18
- start_at: Schema.String,
19
- end_at: Schema.OptionFromNullOr(Schema.String),
20
+ start_at: Schemas.DateTimeFromIsoString,
21
+ end_at: Schema.OptionFromNullOr(Schemas.DateTimeFromIsoString),
20
22
  location: Schema.OptionFromNullOr(Schema.String),
21
23
  event_type: Schema.String,
22
24
  }) {}
@@ -25,13 +27,13 @@ export class ChannelEventEntry extends Schema.Class<ChannelEventEntry>('ChannelE
25
27
  event_id: Schema.String,
26
28
  team_id: Schema.String,
27
29
  title: Schema.String,
28
- description: Schema.NullOr(Schema.String),
29
- start_at: Schema.String,
30
- end_at: Schema.NullOr(Schema.String),
31
- location: Schema.NullOr(Schema.String),
30
+ description: Schema.OptionFromNullOr(Schema.String),
31
+ start_at: Schemas.DateTimeFromIsoString,
32
+ end_at: Schema.OptionFromNullOr(Schemas.DateTimeFromIsoString),
33
+ location: Schema.OptionFromNullOr(Schema.String),
32
34
  event_type: Schema.String,
33
35
  status: Schema.String,
34
- discord_message_id: Schema.String,
36
+ discord_message_id: Snowflake,
35
37
  }) {}
36
38
 
37
39
  export class RsvpMemberNotFound extends Schema.TaggedError<RsvpMemberNotFound>()(
@@ -49,14 +51,71 @@ export class RsvpEventNotFound extends Schema.TaggedError<RsvpEventNotFound>()(
49
51
  {},
50
52
  ) {}
51
53
 
54
+ export class CreateEventNotMember extends Schema.TaggedError<CreateEventNotMember>()(
55
+ 'CreateEventNotMember',
56
+ {},
57
+ ) {}
58
+
59
+ export class CreateEventForbidden extends Schema.TaggedError<CreateEventForbidden>()(
60
+ 'CreateEventForbidden',
61
+ {},
62
+ ) {}
63
+
64
+ export class CreateEventInvalidDate extends Schema.TaggedError<CreateEventInvalidDate>()(
65
+ 'CreateEventInvalidDate',
66
+ {},
67
+ ) {}
68
+
69
+ export class CreateEventResult extends Schema.Class<CreateEventResult>('CreateEventResult')({
70
+ event_id: Schema.String,
71
+ title: Schema.String,
72
+ }) {}
73
+
74
+ export class GuildEventListEntry extends Schema.Class<GuildEventListEntry>('GuildEventListEntry')({
75
+ event_id: Schema.String,
76
+ title: Schema.String,
77
+ start_at: Schemas.DateTimeFromIsoString,
78
+ end_at: Schema.OptionFromNullOr(Schemas.DateTimeFromIsoString),
79
+ location: Schema.OptionFromNullOr(Schema.String),
80
+ event_type: Schema.String,
81
+ yes_count: Schema.Number,
82
+ no_count: Schema.Number,
83
+ maybe_count: Schema.Number,
84
+ }) {}
85
+
86
+ export class GuildEventListResult extends Schema.Class<GuildEventListResult>(
87
+ 'GuildEventListResult',
88
+ )({
89
+ events: Schema.Array(GuildEventListEntry),
90
+ total: Schema.Number,
91
+ team_id: Schema.String,
92
+ }) {}
93
+
94
+ export class GuildNotFound extends Schema.TaggedError<GuildNotFound>()('GuildNotFound', {}) {}
95
+
52
96
  export class RsvpAttendeeEntry extends Schema.Class<RsvpAttendeeEntry>('RsvpAttendeeEntry')({
53
- discord_id: Schema.NullOr(Schema.String),
54
- name: Schema.NullOr(Schema.String),
97
+ discord_id: Schema.OptionFromNullOr(Snowflake),
98
+ name: Schema.OptionFromNullOr(Schema.String),
55
99
  response: Schema.Literal('yes', 'no', 'maybe'),
56
- message: Schema.NullOr(Schema.String),
100
+ message: Schema.OptionFromNullOr(Schema.String),
57
101
  }) {}
58
102
 
59
103
  export class RsvpAttendeesResult extends Schema.Class<RsvpAttendeesResult>('RsvpAttendeesResult')({
60
104
  attendees: Schema.Array(RsvpAttendeeEntry),
61
105
  total: Schema.Number,
62
106
  }) {}
107
+
108
+ export class NonResponderRpcEntry extends Schema.Class<NonResponderRpcEntry>(
109
+ 'NonResponderRpcEntry',
110
+ )({
111
+ discord_id: Schema.OptionFromNullOr(Snowflake),
112
+ name: Schema.OptionFromNullOr(Schema.String),
113
+ username: Schema.OptionFromNullOr(Schema.String),
114
+ }) {}
115
+
116
+ export class RsvpReminderSummary extends Schema.Class<RsvpReminderSummary>('RsvpReminderSummary')({
117
+ yesCount: Schema.Number,
118
+ noCount: Schema.Number,
119
+ maybeCount: Schema.Number,
120
+ nonResponders: Schema.Array(NonResponderRpcEntry),
121
+ }) {}
@@ -21,7 +21,7 @@ export const GuildRpcGroup = RpcGroup.make(
21
21
  channel_id: Discord.Snowflake,
22
22
  name: Schema.String,
23
23
  type: Schema.Number,
24
- parent_id: Schema.NullOr(Discord.Snowflake),
24
+ parent_id: Schema.OptionFromNullOr(Discord.Snowflake),
25
25
  }),
26
26
  ),
27
27
  },
@@ -33,7 +33,7 @@ export const GuildRpcGroup = RpcGroup.make(
33
33
  Schema.Struct({
34
34
  discord_id: Schema.String,
35
35
  username: Schema.String,
36
- avatar: Schema.NullOr(Schema.String),
36
+ avatar: Schema.OptionFromNullOr(Schema.String),
37
37
  roles: Schema.Array(Schema.String),
38
38
  }),
39
39
  ),
@@ -44,7 +44,7 @@ export const GuildRpcGroup = RpcGroup.make(
44
44
  guild_id: Discord.Snowflake,
45
45
  discord_id: Schema.String,
46
46
  username: Schema.String,
47
- avatar: Schema.NullOr(Schema.String),
47
+ avatar: Schema.OptionFromNullOr(Schema.String),
48
48
  roles: Schema.Array(Schema.String),
49
49
  },
50
50
  }),