@sideline/domain 0.9.0 → 0.11.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 (195) 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 +39 -23
  6. package/dist/cjs/api/EventApi.js.map +1 -1
  7. package/dist/cjs/api/EventRsvpApi.js +11 -9
  8. package/dist/cjs/api/EventRsvpApi.js.map +1 -1
  9. package/dist/cjs/api/EventSeriesApi.js +44 -24
  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 +19 -5
  16. package/dist/cjs/api/RoleApi.js.map +1 -1
  17. package/dist/cjs/api/Roster.js +19 -13
  18. package/dist/cjs/api/Roster.js.map +1 -1
  19. package/dist/cjs/api/TeamSettingsApi.js +13 -12
  20. package/dist/cjs/api/TeamSettingsApi.js.map +1 -1
  21. package/dist/cjs/api/TrainingTypeApi.js +27 -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 +8 -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 -5
  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/TrainingType.js +2 -1
  47. package/dist/cjs/models/TrainingType.js.map +1 -1
  48. package/dist/cjs/models/User.js +5 -4
  49. package/dist/cjs/models/User.js.map +1 -1
  50. package/dist/cjs/rpc/event/EventRpcEvents.js +14 -12
  51. package/dist/cjs/rpc/event/EventRpcEvents.js.map +1 -1
  52. package/dist/cjs/rpc/event/EventRpcGroup.js +16 -8
  53. package/dist/cjs/rpc/event/EventRpcGroup.js.map +1 -1
  54. package/dist/cjs/rpc/event/EventRpcModels.js +41 -16
  55. package/dist/cjs/rpc/event/EventRpcModels.js.map +1 -1
  56. package/dist/cjs/rpc/guild/GuildRpcGroup.js +3 -3
  57. package/dist/cjs/rpc/guild/GuildRpcGroup.js.map +1 -1
  58. package/dist/dts/api/AgeThresholdApi.d.ts +6 -1
  59. package/dist/dts/api/AgeThresholdApi.d.ts.map +1 -1
  60. package/dist/dts/api/Auth.d.ts +22 -21
  61. package/dist/dts/api/Auth.d.ts.map +1 -1
  62. package/dist/dts/api/EventApi.d.ts +109 -69
  63. package/dist/dts/api/EventApi.d.ts.map +1 -1
  64. package/dist/dts/api/EventRsvpApi.d.ts +25 -25
  65. package/dist/dts/api/EventSeriesApi.d.ts +128 -72
  66. package/dist/dts/api/EventSeriesApi.d.ts.map +1 -1
  67. package/dist/dts/api/GroupApi.d.ts +49 -44
  68. package/dist/dts/api/GroupApi.d.ts.map +1 -1
  69. package/dist/dts/api/ICalApi.d.ts +28 -0
  70. package/dist/dts/api/ICalApi.d.ts.map +1 -0
  71. package/dist/dts/api/RoleApi.d.ts +31 -9
  72. package/dist/dts/api/RoleApi.d.ts.map +1 -1
  73. package/dist/dts/api/Roster.d.ts +50 -33
  74. package/dist/dts/api/Roster.d.ts.map +1 -1
  75. package/dist/dts/api/TeamSettingsApi.d.ts +36 -36
  76. package/dist/dts/api/TeamSettingsApi.d.ts.map +1 -1
  77. package/dist/dts/api/TrainingTypeApi.d.ts +62 -25
  78. package/dist/dts/api/TrainingTypeApi.d.ts.map +1 -1
  79. package/dist/dts/index.d.ts +2 -0
  80. package/dist/dts/index.d.ts.map +1 -1
  81. package/dist/dts/models/AgeThresholdRule.d.ts +22 -22
  82. package/dist/dts/models/ChannelSyncEvent.d.ts +55 -55
  83. package/dist/dts/models/Event.d.ts +81 -55
  84. package/dist/dts/models/Event.d.ts.map +1 -1
  85. package/dist/dts/models/EventRsvp.d.ts +11 -11
  86. package/dist/dts/models/EventSeries.d.ts +81 -55
  87. package/dist/dts/models/EventSeries.d.ts.map +1 -1
  88. package/dist/dts/models/GroupModel.d.ts +22 -22
  89. package/dist/dts/models/ICalToken.d.ts +69 -0
  90. package/dist/dts/models/ICalToken.d.ts.map +1 -0
  91. package/dist/dts/models/OAuthConnection.d.ts +8 -8
  92. package/dist/dts/models/RoleSyncEvent.d.ts +55 -55
  93. package/dist/dts/models/TeamInvite.d.ts +11 -11
  94. package/dist/dts/models/TeamMember.d.ts +22 -22
  95. package/dist/dts/models/TrainingType.d.ts +24 -11
  96. package/dist/dts/models/TrainingType.d.ts.map +1 -1
  97. package/dist/dts/models/User.d.ts +44 -44
  98. package/dist/dts/models/User.d.ts.map +1 -1
  99. package/dist/dts/rpc/SyncRpcs.d.ts +16 -12
  100. package/dist/dts/rpc/SyncRpcs.d.ts.map +1 -1
  101. package/dist/dts/rpc/event/EventRpcEvents.d.ts +12 -12
  102. package/dist/dts/rpc/event/EventRpcEvents.d.ts.map +1 -1
  103. package/dist/dts/rpc/event/EventRpcGroup.d.ts +14 -10
  104. package/dist/dts/rpc/event/EventRpcGroup.d.ts.map +1 -1
  105. package/dist/dts/rpc/event/EventRpcModels.d.ts +113 -45
  106. package/dist/dts/rpc/event/EventRpcModels.d.ts.map +1 -1
  107. package/dist/dts/rpc/guild/GuildRpcGroup.d.ts +3 -3
  108. package/dist/esm/api/AgeThresholdApi.js +5 -0
  109. package/dist/esm/api/AgeThresholdApi.js.map +1 -1
  110. package/dist/esm/api/Auth.js +8 -7
  111. package/dist/esm/api/Auth.js.map +1 -1
  112. package/dist/esm/api/EventApi.js +38 -23
  113. package/dist/esm/api/EventApi.js.map +1 -1
  114. package/dist/esm/api/EventRsvpApi.js +11 -9
  115. package/dist/esm/api/EventRsvpApi.js.map +1 -1
  116. package/dist/esm/api/EventSeriesApi.js +43 -24
  117. package/dist/esm/api/EventSeriesApi.js.map +1 -1
  118. package/dist/esm/api/GroupApi.js +20 -13
  119. package/dist/esm/api/GroupApi.js.map +1 -1
  120. package/dist/esm/api/ICalApi.js +16 -0
  121. package/dist/esm/api/ICalApi.js.map +1 -0
  122. package/dist/esm/api/RoleApi.js +16 -4
  123. package/dist/esm/api/RoleApi.js.map +1 -1
  124. package/dist/esm/api/Roster.js +17 -12
  125. package/dist/esm/api/Roster.js.map +1 -1
  126. package/dist/esm/api/TeamSettingsApi.js +13 -12
  127. package/dist/esm/api/TeamSettingsApi.js.map +1 -1
  128. package/dist/esm/api/TrainingTypeApi.js +25 -7
  129. package/dist/esm/api/TrainingTypeApi.js.map +1 -1
  130. package/dist/esm/index.js +2 -0
  131. package/dist/esm/index.js.map +1 -1
  132. package/dist/esm/models/AgeThresholdRule.js +2 -2
  133. package/dist/esm/models/AgeThresholdRule.js.map +1 -1
  134. package/dist/esm/models/ChannelSyncEvent.js +5 -5
  135. package/dist/esm/models/ChannelSyncEvent.js.map +1 -1
  136. package/dist/esm/models/Event.js +8 -5
  137. package/dist/esm/models/Event.js.map +1 -1
  138. package/dist/esm/models/EventRsvp.js +1 -1
  139. package/dist/esm/models/EventRsvp.js.map +1 -1
  140. package/dist/esm/models/EventSeries.js +8 -5
  141. package/dist/esm/models/EventSeries.js.map +1 -1
  142. package/dist/esm/models/GroupModel.js +2 -2
  143. package/dist/esm/models/GroupModel.js.map +1 -1
  144. package/dist/esm/models/ICalToken.js +10 -0
  145. package/dist/esm/models/ICalToken.js.map +1 -0
  146. package/dist/esm/models/OAuthConnection.js +1 -1
  147. package/dist/esm/models/OAuthConnection.js.map +1 -1
  148. package/dist/esm/models/RoleSyncEvent.js +5 -5
  149. package/dist/esm/models/RoleSyncEvent.js.map +1 -1
  150. package/dist/esm/models/TeamInvite.js +1 -1
  151. package/dist/esm/models/TeamInvite.js.map +1 -1
  152. package/dist/esm/models/TeamMember.js +1 -1
  153. package/dist/esm/models/TeamMember.js.map +1 -1
  154. package/dist/esm/models/TrainingType.js +2 -1
  155. package/dist/esm/models/TrainingType.js.map +1 -1
  156. package/dist/esm/models/User.js +5 -4
  157. package/dist/esm/models/User.js.map +1 -1
  158. package/dist/esm/rpc/event/EventRpcEvents.js +13 -12
  159. package/dist/esm/rpc/event/EventRpcEvents.js.map +1 -1
  160. package/dist/esm/rpc/event/EventRpcGroup.js +17 -9
  161. package/dist/esm/rpc/event/EventRpcGroup.js.map +1 -1
  162. package/dist/esm/rpc/event/EventRpcModels.js +35 -15
  163. package/dist/esm/rpc/event/EventRpcModels.js.map +1 -1
  164. package/dist/esm/rpc/guild/GuildRpcGroup.js +3 -3
  165. package/dist/esm/rpc/guild/GuildRpcGroup.js.map +1 -1
  166. package/package.json +2 -2
  167. package/src/api/AgeThresholdApi.ts +7 -0
  168. package/src/api/Auth.ts +8 -7
  169. package/src/api/EventApi.ts +36 -23
  170. package/src/api/EventRsvpApi.ts +9 -9
  171. package/src/api/EventSeriesApi.ts +41 -24
  172. package/src/api/GroupApi.ts +21 -13
  173. package/src/api/ICalApi.ts +32 -0
  174. package/src/api/RoleApi.ts +17 -3
  175. package/src/api/Roster.ts +17 -11
  176. package/src/api/TeamSettingsApi.ts +13 -12
  177. package/src/api/TrainingTypeApi.ts +22 -7
  178. package/src/index.ts +4 -0
  179. package/src/models/AgeThresholdRule.ts +2 -2
  180. package/src/models/ChannelSyncEvent.ts +5 -5
  181. package/src/models/Event.ts +8 -5
  182. package/src/models/EventRsvp.ts +1 -1
  183. package/src/models/EventSeries.ts +8 -5
  184. package/src/models/GroupModel.ts +2 -2
  185. package/src/models/ICalToken.ts +10 -0
  186. package/src/models/OAuthConnection.ts +1 -1
  187. package/src/models/RoleSyncEvent.ts +5 -5
  188. package/src/models/TeamInvite.ts +1 -1
  189. package/src/models/TeamMember.ts +1 -1
  190. package/src/models/TrainingType.ts +2 -1
  191. package/src/models/User.ts +5 -4
  192. package/src/rpc/event/EventRpcEvents.ts +13 -12
  193. package/src/rpc/event/EventRpcGroup.ts +25 -8
  194. package/src/rpc/event/EventRpcModels.ts +44 -15
  195. package/src/rpc/guild/GuildRpcGroup.ts +3 -3
@@ -0,0 +1,10 @@
1
+ import { Model } from '@effect/sql';
2
+ import { Schema } from 'effect';
3
+ import { UserId } from '~/models/User.js';
4
+
5
+ export class ICalToken extends Model.Class<ICalToken>('ICalToken')({
6
+ id: Model.Generated(Schema.String),
7
+ user_id: UserId,
8
+ token: Schema.String,
9
+ created_at: Model.DateTimeInsertFromDate,
10
+ }) {}
@@ -10,7 +10,7 @@ export class OAuthConnection extends Model.Class<OAuthConnection>('OAuthConnecti
10
10
  user_id: UserId,
11
11
  provider: Schema.String,
12
12
  access_token: Model.Sensitive(Schema.String),
13
- refresh_token: Model.Sensitive(Schema.NullOr(Schema.String)),
13
+ refresh_token: Model.Sensitive(Schema.OptionFromNullOr(Schema.String)),
14
14
  created_at: Model.DateTimeInsertFromDate,
15
15
  updated_at: Model.DateTimeUpdateFromDate,
16
16
  }) {}
@@ -21,10 +21,10 @@ export class RoleSyncEvent extends Model.Class<RoleSyncEvent>('RoleSyncEvent')({
21
21
  guild_id: Schema.String,
22
22
  event_type: RoleSyncEventType,
23
23
  role_id: RoleId,
24
- role_name: Schema.NullOr(Schema.String),
25
- team_member_id: Schema.NullOr(TeamMemberId),
26
- discord_user_id: Schema.NullOr(Schema.String),
27
- processed_at: Schema.NullOr(Schema.String),
28
- error: Schema.NullOr(Schema.String),
24
+ role_name: Schema.OptionFromNullOr(Schema.String),
25
+ team_member_id: Schema.OptionFromNullOr(TeamMemberId),
26
+ discord_user_id: Schema.OptionFromNullOr(Schema.String),
27
+ processed_at: Schema.OptionFromNullOr(Schema.String),
28
+ error: Schema.OptionFromNullOr(Schema.String),
29
29
  created_at: Model.DateTimeInsertFromDate,
30
30
  }) {}
@@ -14,5 +14,5 @@ export class TeamInvite extends Model.Class<TeamInvite>('TeamInvite')({
14
14
  active: Schema.Boolean,
15
15
  created_by: UserId,
16
16
  created_at: Model.DateTimeInsertFromDate,
17
- expires_at: Schema.NullOr(Schemas.DateTimeFromDate),
17
+ expires_at: Schema.OptionFromNullOr(Schemas.DateTimeFromDate),
18
18
  }) {}
@@ -11,6 +11,6 @@ export class TeamMember extends Model.Class<TeamMember>('TeamMember')({
11
11
  team_id: TeamId,
12
12
  user_id: UserId,
13
13
  active: Schema.Boolean,
14
- jersey_number: Model.FieldExcept('insert')(Schema.NullOr(Schema.Number)),
14
+ jersey_number: Model.FieldExcept('insert')(Schema.OptionFromNullOr(Schema.Number)),
15
15
  joined_at: Model.DateTimeInsertFromDate,
16
16
  }) {}
@@ -10,6 +10,7 @@ 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
+ owner_group_id: Schema.OptionFromNullOr(GroupId),
14
+ member_group_id: Schema.OptionFromNullOr(GroupId),
14
15
  created_at: Model.DateTimeInsertFromDate,
15
16
  }) {}
@@ -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>()(
@@ -45,8 +46,8 @@ export class RsvpReminderEvent extends Schema.TaggedClass<RsvpReminderEvent>()('
45
46
  guild_id: Discord.Snowflake,
46
47
  event_id: Event.EventId,
47
48
  title: Schema.String,
48
- start_at: Schema.String,
49
- discord_channel_id: Schema.NullOr(Schema.String),
49
+ start_at: Schemas.DateTimeFromIsoString,
50
+ discord_channel_id: Schema.OptionFromNullOr(Discord.Snowflake),
50
51
  }) {}
51
52
 
52
53
  export const UnprocessedEventSyncEvent = Schema.Union(
@@ -10,11 +10,14 @@ import {
10
10
  CreateEventResult,
11
11
  EventDiscordMessage,
12
12
  EventEmbedInfo,
13
+ GuildEventListResult,
14
+ GuildNotFound,
13
15
  RsvpAttendeesResult,
14
16
  RsvpCountsResult,
15
17
  RsvpDeadlinePassed,
16
18
  RsvpEventNotFound,
17
19
  RsvpMemberNotFound,
20
+ RsvpNotGroupMember,
18
21
  RsvpReminderSummary,
19
22
  } from './EventRpcModels.js';
20
23
 
@@ -32,8 +35,8 @@ export const EventRpcGroup = RpcGroup.make(
32
35
  Rpc.make('SaveDiscordMessageId', {
33
36
  payload: {
34
37
  event_id: Event.EventId,
35
- discord_channel_id: Schema.String,
36
- discord_message_id: Schema.String,
38
+ discord_channel_id: Discord.Snowflake,
39
+ discord_message_id: Discord.Snowflake,
37
40
  },
38
41
  }),
39
42
  Rpc.make('GetDiscordMessageId', {
@@ -46,10 +49,15 @@ export const EventRpcGroup = RpcGroup.make(
46
49
  team_id: Team.TeamId,
47
50
  discord_user_id: Discord.Snowflake,
48
51
  response: EventRsvp.RsvpResponse,
49
- message: Schema.NullOr(Schema.String),
52
+ message: Schema.OptionFromNullOr(Schema.String),
50
53
  },
51
54
  success: RsvpCountsResult,
52
- error: Schema.Union(RsvpMemberNotFound, RsvpDeadlinePassed, RsvpEventNotFound),
55
+ error: Schema.Union(
56
+ RsvpMemberNotFound,
57
+ RsvpDeadlinePassed,
58
+ RsvpEventNotFound,
59
+ RsvpNotGroupMember,
60
+ ),
53
61
  }),
54
62
  Rpc.make('GetRsvpCounts', {
55
63
  payload: { event_id: Event.EventId },
@@ -60,7 +68,7 @@ export const EventRpcGroup = RpcGroup.make(
60
68
  success: Schema.OptionFromNullOr(EventEmbedInfo),
61
69
  }),
62
70
  Rpc.make('GetChannelEvents', {
63
- payload: { discord_channel_id: Schema.String },
71
+ payload: { discord_channel_id: Discord.Snowflake },
64
72
  success: Schema.Array(ChannelEventEntry),
65
73
  }),
66
74
  Rpc.make('GetRsvpAttendees', {
@@ -71,6 +79,15 @@ export const EventRpcGroup = RpcGroup.make(
71
79
  payload: { event_id: Event.EventId },
72
80
  success: RsvpReminderSummary,
73
81
  }),
82
+ Rpc.make('GetUpcomingGuildEvents', {
83
+ payload: {
84
+ guild_id: Discord.Snowflake,
85
+ offset: Schema.Number,
86
+ limit: Schema.Number,
87
+ },
88
+ success: GuildEventListResult,
89
+ error: GuildNotFound,
90
+ }),
74
91
  Rpc.make('CreateEvent', {
75
92
  payload: {
76
93
  guild_id: Discord.Snowflake,
@@ -78,9 +95,9 @@ export const EventRpcGroup = RpcGroup.make(
78
95
  event_type: Event.EventType,
79
96
  title: Schema.String,
80
97
  start_at: Schema.String,
81
- end_at: Schema.NullOr(Schema.String),
82
- location: Schema.NullOr(Schema.String),
83
- description: Schema.NullOr(Schema.String),
98
+ end_at: Schema.OptionFromNullOr(Schema.String),
99
+ location: Schema.OptionFromNullOr(Schema.String),
100
+ description: Schema.OptionFromNullOr(Schema.String),
84
101
  },
85
102
  success: CreateEventResult,
86
103
  error: Schema.Union(CreateEventNotMember, CreateEventForbidden, CreateEventInvalidDate),
@@ -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,6 +51,11 @@ export class RsvpEventNotFound extends Schema.TaggedError<RsvpEventNotFound>()(
49
51
  {},
50
52
  ) {}
51
53
 
54
+ export class RsvpNotGroupMember extends Schema.TaggedError<RsvpNotGroupMember>()(
55
+ 'RsvpNotGroupMember',
56
+ {},
57
+ ) {}
58
+
52
59
  export class CreateEventNotMember extends Schema.TaggedError<CreateEventNotMember>()(
53
60
  'CreateEventNotMember',
54
61
  {},
@@ -69,11 +76,33 @@ export class CreateEventResult extends Schema.Class<CreateEventResult>('CreateEv
69
76
  title: Schema.String,
70
77
  }) {}
71
78
 
79
+ export class GuildEventListEntry extends Schema.Class<GuildEventListEntry>('GuildEventListEntry')({
80
+ event_id: Schema.String,
81
+ title: Schema.String,
82
+ start_at: Schemas.DateTimeFromIsoString,
83
+ end_at: Schema.OptionFromNullOr(Schemas.DateTimeFromIsoString),
84
+ location: Schema.OptionFromNullOr(Schema.String),
85
+ event_type: Schema.String,
86
+ yes_count: Schema.Number,
87
+ no_count: Schema.Number,
88
+ maybe_count: Schema.Number,
89
+ }) {}
90
+
91
+ export class GuildEventListResult extends Schema.Class<GuildEventListResult>(
92
+ 'GuildEventListResult',
93
+ )({
94
+ events: Schema.Array(GuildEventListEntry),
95
+ total: Schema.Number,
96
+ team_id: Schema.String,
97
+ }) {}
98
+
99
+ export class GuildNotFound extends Schema.TaggedError<GuildNotFound>()('GuildNotFound', {}) {}
100
+
72
101
  export class RsvpAttendeeEntry extends Schema.Class<RsvpAttendeeEntry>('RsvpAttendeeEntry')({
73
- discord_id: Schema.NullOr(Schema.String),
74
- name: Schema.NullOr(Schema.String),
102
+ discord_id: Schema.OptionFromNullOr(Snowflake),
103
+ name: Schema.OptionFromNullOr(Schema.String),
75
104
  response: Schema.Literal('yes', 'no', 'maybe'),
76
- message: Schema.NullOr(Schema.String),
105
+ message: Schema.OptionFromNullOr(Schema.String),
77
106
  }) {}
78
107
 
79
108
  export class RsvpAttendeesResult extends Schema.Class<RsvpAttendeesResult>('RsvpAttendeesResult')({
@@ -84,9 +113,9 @@ export class RsvpAttendeesResult extends Schema.Class<RsvpAttendeesResult>('Rsvp
84
113
  export class NonResponderRpcEntry extends Schema.Class<NonResponderRpcEntry>(
85
114
  'NonResponderRpcEntry',
86
115
  )({
87
- discord_id: Schema.NullOr(Schema.String),
88
- name: Schema.NullOr(Schema.String),
89
- username: Schema.NullOr(Schema.String),
116
+ discord_id: Schema.OptionFromNullOr(Snowflake),
117
+ name: Schema.OptionFromNullOr(Schema.String),
118
+ username: Schema.OptionFromNullOr(Schema.String),
90
119
  }) {}
91
120
 
92
121
  export class RsvpReminderSummary extends Schema.Class<RsvpReminderSummary>('RsvpReminderSummary')({
@@ -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
  }),