@sideline/domain 0.7.1 → 0.9.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.
- package/dist/cjs/api/Auth.js +2 -2
- package/dist/cjs/api/Auth.js.map +1 -1
- package/dist/cjs/api/EventRsvpApi.js +23 -4
- package/dist/cjs/api/EventRsvpApi.js.map +1 -1
- package/dist/cjs/api/EventSeriesApi.js +6 -3
- package/dist/cjs/api/EventSeriesApi.js.map +1 -1
- package/dist/cjs/api/GroupApi.js +1 -1
- package/dist/cjs/api/GroupApi.js.map +1 -1
- package/dist/cjs/api/Roster.js +2 -2
- package/dist/cjs/api/Roster.js.map +1 -1
- package/dist/cjs/api/TeamSettingsApi.js +8 -0
- package/dist/cjs/api/TeamSettingsApi.js.map +1 -1
- package/dist/cjs/models/EventSeries.js +3 -2
- package/dist/cjs/models/EventSeries.js.map +1 -1
- package/dist/cjs/models/TeamSettings.js +2 -0
- package/dist/cjs/models/TeamSettings.js.map +1 -1
- package/dist/cjs/models/User.js +2 -2
- package/dist/cjs/models/User.js.map +1 -1
- package/dist/cjs/rpc/event/EventRpcEvents.js +12 -2
- package/dist/cjs/rpc/event/EventRpcEvents.js.map +1 -1
- package/dist/cjs/rpc/event/EventRpcGroup.js +18 -0
- package/dist/cjs/rpc/event/EventRpcGroup.js.map +1 -1
- package/dist/cjs/rpc/event/EventRpcModels.js +25 -1
- package/dist/cjs/rpc/event/EventRpcModels.js.map +1 -1
- package/dist/cjs/rpc/guild/GuildRpcGroup.js +4 -4
- package/dist/cjs/rpc/guild/GuildRpcGroup.js.map +1 -1
- package/dist/dts/api/Auth.d.ts +8 -8
- package/dist/dts/api/EventApi.d.ts +4 -4
- package/dist/dts/api/EventRsvpApi.d.ts +38 -1
- package/dist/dts/api/EventRsvpApi.d.ts.map +1 -1
- package/dist/dts/api/EventSeriesApi.d.ts +17 -9
- package/dist/dts/api/EventSeriesApi.d.ts.map +1 -1
- package/dist/dts/api/GroupApi.d.ts +3 -3
- package/dist/dts/api/Roster.d.ts +8 -8
- package/dist/dts/api/TeamSettingsApi.d.ts +24 -0
- package/dist/dts/api/TeamSettingsApi.d.ts.map +1 -1
- package/dist/dts/models/Event.d.ts +6 -6
- package/dist/dts/models/EventSeries.d.ts +17 -15
- package/dist/dts/models/EventSeries.d.ts.map +1 -1
- package/dist/dts/models/TeamSettings.d.ts +26 -0
- package/dist/dts/models/TeamSettings.d.ts.map +1 -1
- package/dist/dts/models/User.d.ts +22 -22
- package/dist/dts/rpc/SyncRpcs.d.ts +17 -6
- package/dist/dts/rpc/SyncRpcs.d.ts.map +1 -1
- package/dist/dts/rpc/event/EventRpcEvents.d.ts +14 -1
- package/dist/dts/rpc/event/EventRpcEvents.d.ts.map +1 -1
- package/dist/dts/rpc/event/EventRpcGroup.d.ts +14 -3
- package/dist/dts/rpc/event/EventRpcGroup.d.ts.map +1 -1
- package/dist/dts/rpc/event/EventRpcModels.d.ts +66 -0
- package/dist/dts/rpc/event/EventRpcModels.d.ts.map +1 -1
- package/dist/dts/rpc/guild/GuildRpcGroup.d.ts +4 -4
- package/dist/esm/api/Auth.js +2 -2
- package/dist/esm/api/Auth.js.map +1 -1
- package/dist/esm/api/EventRsvpApi.js +20 -3
- package/dist/esm/api/EventRsvpApi.js.map +1 -1
- package/dist/esm/api/EventSeriesApi.js +7 -4
- package/dist/esm/api/EventSeriesApi.js.map +1 -1
- package/dist/esm/api/GroupApi.js +1 -1
- package/dist/esm/api/GroupApi.js.map +1 -1
- package/dist/esm/api/Roster.js +2 -2
- package/dist/esm/api/Roster.js.map +1 -1
- package/dist/esm/api/TeamSettingsApi.js +8 -0
- package/dist/esm/api/TeamSettingsApi.js.map +1 -1
- package/dist/esm/models/EventSeries.js +2 -1
- package/dist/esm/models/EventSeries.js.map +1 -1
- package/dist/esm/models/TeamSettings.js +2 -0
- package/dist/esm/models/TeamSettings.js.map +1 -1
- package/dist/esm/models/User.js +2 -2
- package/dist/esm/models/User.js.map +1 -1
- package/dist/esm/rpc/event/EventRpcEvents.js +10 -1
- package/dist/esm/rpc/event/EventRpcEvents.js.map +1 -1
- package/dist/esm/rpc/event/EventRpcGroup.js +19 -1
- package/dist/esm/rpc/event/EventRpcGroup.js.map +1 -1
- package/dist/esm/rpc/event/EventRpcModels.js +18 -0
- package/dist/esm/rpc/event/EventRpcModels.js.map +1 -1
- package/dist/esm/rpc/guild/GuildRpcGroup.js +4 -4
- package/dist/esm/rpc/guild/GuildRpcGroup.js.map +1 -1
- package/package.json +1 -1
- package/src/api/Auth.ts +2 -2
- package/src/api/EventRsvpApi.ts +22 -0
- package/src/api/EventSeriesApi.ts +5 -4
- package/src/api/GroupApi.ts +1 -1
- package/src/api/Roster.ts +2 -2
- package/src/api/TeamSettingsApi.ts +8 -0
- package/src/models/EventSeries.ts +4 -1
- package/src/models/TeamSettings.ts +2 -0
- package/src/models/User.ts +2 -2
- package/src/rpc/event/EventRpcEvents.ts +11 -0
- package/src/rpc/event/EventRpcGroup.ts +23 -0
- package/src/rpc/event/EventRpcModels.ts +35 -0
- package/src/rpc/guild/GuildRpcGroup.ts +4 -4
|
@@ -30,8 +30,8 @@ export const GuildRpcGroup = /*#__PURE__*/RpcGroup.make(Rpc.make('RegisterGuild'
|
|
|
30
30
|
guild_id: Discord.Snowflake,
|
|
31
31
|
members: Schema.Array(Schema.Struct({
|
|
32
32
|
discord_id: Schema.String,
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
username: Schema.String,
|
|
34
|
+
avatar: Schema.NullOr(Schema.String),
|
|
35
35
|
roles: Schema.Array(Schema.String)
|
|
36
36
|
}))
|
|
37
37
|
}
|
|
@@ -39,8 +39,8 @@ export const GuildRpcGroup = /*#__PURE__*/RpcGroup.make(Rpc.make('RegisterGuild'
|
|
|
39
39
|
payload: {
|
|
40
40
|
guild_id: Discord.Snowflake,
|
|
41
41
|
discord_id: Schema.String,
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
username: Schema.String,
|
|
43
|
+
avatar: Schema.NullOr(Schema.String),
|
|
44
44
|
roles: Schema.Array(Schema.String)
|
|
45
45
|
}
|
|
46
46
|
})).prefix('Guild/');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GuildRpcGroup.js","names":["Rpc","RpcGroup","Schema","Discord","GuildRpcGroup","make","payload","guild_id","Snowflake","guild_name","String","success","Boolean","channels","Array","Struct","channel_id","name","type","Number","parent_id","NullOr","members","discord_id","
|
|
1
|
+
{"version":3,"file":"GuildRpcGroup.js","names":["Rpc","RpcGroup","Schema","Discord","GuildRpcGroup","make","payload","guild_id","Snowflake","guild_name","String","success","Boolean","channels","Array","Struct","channel_id","name","type","Number","parent_id","NullOr","members","discord_id","username","avatar","roles","prefix"],"sources":["../../../../src/rpc/guild/GuildRpcGroup.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,GAAG,EAAEC,QAAQ,QAAQ,aAAa;AAC3C,SAASC,MAAM,QAAQ,QAAQ;AAC/B,SAASC,OAAO,QAAQ,gBAAa;AAErC,OAAO,MAAMC,aAAa,gBAAGH,QAAQ,CAACI,IAAI,CACxCL,GAAG,CAACK,IAAI,CAAC,eAAe,EAAE;EACxBC,OAAO,EAAE;IAAEC,QAAQ,EAAEJ,OAAO,CAACK,SAAS;IAAEC,UAAU,EAAEP,MAAM,CAACQ;EAAM;CAClE,CAAC,EACFV,GAAG,CAACK,IAAI,CAAC,iBAAiB,EAAE;EAC1BC,OAAO,EAAE;IAAEC,QAAQ,EAAEJ,OAAO,CAACK;EAAS;CACvC,CAAC,EACFR,GAAG,CAACK,IAAI,CAAC,mBAAmB,EAAE;EAC5BC,OAAO,EAAE;IAAEC,QAAQ,EAAEJ,OAAO,CAACK;EAAS,CAAE;EACxCG,OAAO,EAAET,MAAM,CAACU;CACjB,CAAC,EACFZ,GAAG,CAACK,IAAI,CAAC,mBAAmB,EAAE;EAC5BC,OAAO,EAAE;IACPC,QAAQ,EAAEJ,OAAO,CAACK,SAAS;IAC3BK,QAAQ,EAAEX,MAAM,CAACY,KAAK,CACpBZ,MAAM,CAACa,MAAM,CAAC;MACZC,UAAU,EAAEb,OAAO,CAACK,SAAS;MAC7BS,IAAI,EAAEf,MAAM,CAACQ,MAAM;MACnBQ,IAAI,EAAEhB,MAAM,CAACiB,MAAM;MACnBC,SAAS,EAAElB,MAAM,CAACmB,MAAM,CAAClB,OAAO,CAACK,SAAS;KAC3C,CAAC;;CAGP,CAAC,EACFR,GAAG,CAACK,IAAI,CAAC,kBAAkB,EAAE;EAC3BC,OAAO,EAAE;IACPC,QAAQ,EAAEJ,OAAO,CAACK,SAAS;IAC3Bc,OAAO,EAAEpB,MAAM,CAACY,KAAK,CACnBZ,MAAM,CAACa,MAAM,CAAC;MACZQ,UAAU,EAAErB,MAAM,CAACQ,MAAM;MACzBc,QAAQ,EAAEtB,MAAM,CAACQ,MAAM;MACvBe,MAAM,EAAEvB,MAAM,CAACmB,MAAM,CAACnB,MAAM,CAACQ,MAAM,CAAC;MACpCgB,KAAK,EAAExB,MAAM,CAACY,KAAK,CAACZ,MAAM,CAACQ,MAAM;KAClC,CAAC;;CAGP,CAAC,EACFV,GAAG,CAACK,IAAI,CAAC,gBAAgB,EAAE;EACzBC,OAAO,EAAE;IACPC,QAAQ,EAAEJ,OAAO,CAACK,SAAS;IAC3Be,UAAU,EAAErB,MAAM,CAACQ,MAAM;IACzBc,QAAQ,EAAEtB,MAAM,CAACQ,MAAM;IACvBe,MAAM,EAAEvB,MAAM,CAACmB,MAAM,CAACnB,MAAM,CAACQ,MAAM,CAAC;IACpCgB,KAAK,EAAExB,MAAM,CAACY,KAAK,CAACZ,MAAM,CAACQ,MAAM;;CAEpC,CAAC,CACH,CAACiB,MAAM,CAAC,QAAQ,CAAC","ignoreList":[]}
|
package/package.json
CHANGED
package/src/api/Auth.ts
CHANGED
|
@@ -25,8 +25,8 @@ export class UserTeam extends Schema.Class<UserTeam>('UserTeam')({
|
|
|
25
25
|
export class CurrentUser extends Schema.Class<CurrentUser>('CurrentUser')({
|
|
26
26
|
id: UserId,
|
|
27
27
|
discordId: Schema.String,
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
username: Schema.String,
|
|
29
|
+
avatar: Schema.NullOr(Schema.String),
|
|
30
30
|
isProfileComplete: Schema.Boolean,
|
|
31
31
|
name: Schema.NullOr(Schema.String),
|
|
32
32
|
birthDate: Schema.NullOr(Schema.String),
|
package/src/api/EventRsvpApi.ts
CHANGED
|
@@ -9,6 +9,7 @@ import { TeamMemberId } from '~/models/TeamMember.js';
|
|
|
9
9
|
export class RsvpEntry extends Schema.Class<RsvpEntry>('RsvpEntry')({
|
|
10
10
|
teamMemberId: TeamMemberId,
|
|
11
11
|
memberName: Schema.NullOr(Schema.String),
|
|
12
|
+
username: Schema.NullOr(Schema.String),
|
|
12
13
|
response: RsvpResponse,
|
|
13
14
|
message: Schema.NullOr(Schema.String),
|
|
14
15
|
}) {}
|
|
@@ -21,6 +22,7 @@ export class EventRsvpDetail extends Schema.Class<EventRsvpDetail>('EventRsvpDet
|
|
|
21
22
|
noCount: Schema.Number,
|
|
22
23
|
maybeCount: Schema.Number,
|
|
23
24
|
canRsvp: Schema.Boolean,
|
|
25
|
+
minPlayersThreshold: Schema.Number,
|
|
24
26
|
}) {}
|
|
25
27
|
|
|
26
28
|
export class SubmitRsvpRequest extends Schema.Class<SubmitRsvpRequest>('SubmitRsvpRequest')({
|
|
@@ -46,6 +48,18 @@ export class RsvpDeadlinePassed extends Schema.TaggedError<RsvpDeadlinePassed>()
|
|
|
46
48
|
HttpApiSchema.annotations({ status: 400 }),
|
|
47
49
|
) {}
|
|
48
50
|
|
|
51
|
+
export class NonResponderEntry extends Schema.Class<NonResponderEntry>('NonResponderEntry')({
|
|
52
|
+
teamMemberId: TeamMemberId,
|
|
53
|
+
memberName: Schema.NullOr(Schema.String),
|
|
54
|
+
username: Schema.NullOr(Schema.String),
|
|
55
|
+
}) {}
|
|
56
|
+
|
|
57
|
+
export class NonRespondersResponse extends Schema.Class<NonRespondersResponse>(
|
|
58
|
+
'NonRespondersResponse',
|
|
59
|
+
)({
|
|
60
|
+
nonResponders: Schema.Array(NonResponderEntry),
|
|
61
|
+
}) {}
|
|
62
|
+
|
|
49
63
|
export class EventRsvpApiGroup extends HttpApiGroup.make('eventRsvp')
|
|
50
64
|
.add(
|
|
51
65
|
HttpApiEndpoint.get('getRsvps', '/teams/:teamId/events/:eventId/rsvps')
|
|
@@ -64,4 +78,12 @@ export class EventRsvpApiGroup extends HttpApiGroup.make('eventRsvp')
|
|
|
64
78
|
.setPath(Schema.Struct({ teamId: TeamId, eventId: EventId }))
|
|
65
79
|
.setPayload(SubmitRsvpRequest)
|
|
66
80
|
.middleware(AuthMiddleware),
|
|
81
|
+
)
|
|
82
|
+
.add(
|
|
83
|
+
HttpApiEndpoint.get('getNonResponders', '/teams/:teamId/events/:eventId/rsvps/non-responders')
|
|
84
|
+
.addSuccess(NonRespondersResponse)
|
|
85
|
+
.addError(Forbidden, { status: 403 })
|
|
86
|
+
.addError(EventNotFound, { status: 404 })
|
|
87
|
+
.setPath(Schema.Struct({ teamId: TeamId, eventId: EventId }))
|
|
88
|
+
.middleware(AuthMiddleware),
|
|
67
89
|
) {}
|
|
@@ -3,7 +3,7 @@ import { Schema } from 'effect';
|
|
|
3
3
|
import { AuthMiddleware } from '~/api/Auth.js';
|
|
4
4
|
import { Forbidden } from '~/api/EventApi.js';
|
|
5
5
|
import {
|
|
6
|
-
|
|
6
|
+
DaysOfWeek,
|
|
7
7
|
EventSeriesId,
|
|
8
8
|
EventSeriesStatus,
|
|
9
9
|
RecurrenceFrequency,
|
|
@@ -16,7 +16,7 @@ export class EventSeriesInfo extends Schema.Class<EventSeriesInfo>('EventSeriesI
|
|
|
16
16
|
teamId: TeamId,
|
|
17
17
|
title: Schema.String,
|
|
18
18
|
frequency: RecurrenceFrequency,
|
|
19
|
-
|
|
19
|
+
daysOfWeek: DaysOfWeek,
|
|
20
20
|
startDate: Schema.String,
|
|
21
21
|
endDate: Schema.NullOr(Schema.String),
|
|
22
22
|
status: EventSeriesStatus,
|
|
@@ -34,7 +34,7 @@ export class EventSeriesDetail extends Schema.Class<EventSeriesDetail>('EventSer
|
|
|
34
34
|
title: Schema.String,
|
|
35
35
|
description: Schema.NullOr(Schema.String),
|
|
36
36
|
frequency: RecurrenceFrequency,
|
|
37
|
-
|
|
37
|
+
daysOfWeek: DaysOfWeek,
|
|
38
38
|
startDate: Schema.String,
|
|
39
39
|
endDate: Schema.NullOr(Schema.String),
|
|
40
40
|
status: EventSeriesStatus,
|
|
@@ -55,7 +55,7 @@ export class CreateEventSeriesRequest extends Schema.Class<CreateEventSeriesRequ
|
|
|
55
55
|
trainingTypeId: Schema.NullOr(TrainingTypeId),
|
|
56
56
|
description: Schema.NullOr(Schema.String),
|
|
57
57
|
frequency: RecurrenceFrequency,
|
|
58
|
-
|
|
58
|
+
daysOfWeek: DaysOfWeek,
|
|
59
59
|
startDate: Schema.String,
|
|
60
60
|
endDate: Schema.NullOr(Schema.String),
|
|
61
61
|
startTime: Schema.String,
|
|
@@ -70,6 +70,7 @@ export class UpdateEventSeriesRequest extends Schema.Class<UpdateEventSeriesRequ
|
|
|
70
70
|
title: Schema.optionalWith(Schema.NonEmptyString, { as: 'Option' }),
|
|
71
71
|
trainingTypeId: Schema.optionalWith(Schema.OptionFromNullOr(TrainingTypeId), { as: 'Option' }),
|
|
72
72
|
description: Schema.optionalWith(Schema.OptionFromNullOr(Schema.String), { as: 'Option' }),
|
|
73
|
+
daysOfWeek: Schema.optionalWith(DaysOfWeek, { as: 'Option' }),
|
|
73
74
|
startTime: Schema.optionalWith(Schema.String, { as: 'Option' }),
|
|
74
75
|
endTime: Schema.optionalWith(Schema.OptionFromNullOr(Schema.String), { as: 'Option' }),
|
|
75
76
|
location: Schema.optionalWith(Schema.OptionFromNullOr(Schema.String), { as: 'Option' }),
|
package/src/api/GroupApi.ts
CHANGED
package/src/api/Roster.ts
CHANGED
|
@@ -17,8 +17,8 @@ export class RosterPlayer extends Schema.Class<RosterPlayer>('RosterPlayer')({
|
|
|
17
17
|
birthDate: Schema.NullOr(Schema.String),
|
|
18
18
|
gender: Schema.NullOr(Gender),
|
|
19
19
|
jerseyNumber: Schema.NullOr(Schema.Number),
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
username: Schema.String,
|
|
21
|
+
avatar: Schema.NullOr(Schema.String),
|
|
22
22
|
}) {}
|
|
23
23
|
|
|
24
24
|
export class UpdatePlayerRequest extends Schema.Class<UpdatePlayerRequest>('UpdatePlayerRequest')({
|
|
@@ -7,6 +7,8 @@ import { TeamId } from '~/models/Team.js';
|
|
|
7
7
|
export class TeamSettingsInfo extends Schema.Class<TeamSettingsInfo>('TeamSettingsInfo')({
|
|
8
8
|
teamId: TeamId,
|
|
9
9
|
eventHorizonDays: Schema.Int,
|
|
10
|
+
minPlayersThreshold: Schema.Int,
|
|
11
|
+
rsvpReminderHours: Schema.Int,
|
|
10
12
|
discordChannelTraining: Schema.NullOr(Schema.String),
|
|
11
13
|
discordChannelMatch: Schema.NullOr(Schema.String),
|
|
12
14
|
discordChannelTournament: Schema.NullOr(Schema.String),
|
|
@@ -19,6 +21,12 @@ export class UpdateTeamSettingsRequest extends Schema.Class<UpdateTeamSettingsRe
|
|
|
19
21
|
'UpdateTeamSettingsRequest',
|
|
20
22
|
)({
|
|
21
23
|
eventHorizonDays: Schema.Int.pipe(Schema.between(1, 365)),
|
|
24
|
+
minPlayersThreshold: Schema.optionalWith(Schema.Int.pipe(Schema.between(0, 100)), {
|
|
25
|
+
as: 'Option',
|
|
26
|
+
}),
|
|
27
|
+
rsvpReminderHours: Schema.optionalWith(Schema.Int.pipe(Schema.between(0, 168)), {
|
|
28
|
+
as: 'Option',
|
|
29
|
+
}),
|
|
22
30
|
discordChannelTraining: Schema.optionalWith(Schema.OptionFromNullOr(Schema.String), {
|
|
23
31
|
as: 'Option',
|
|
24
32
|
}),
|
|
@@ -13,6 +13,9 @@ export type RecurrenceFrequency = typeof RecurrenceFrequency.Type;
|
|
|
13
13
|
export const DayOfWeek = Schema.Int.pipe(Schema.between(0, 6), Schema.brand('DayOfWeek'));
|
|
14
14
|
export type DayOfWeek = typeof DayOfWeek.Type;
|
|
15
15
|
|
|
16
|
+
export const DaysOfWeek = Schema.Array(DayOfWeek).pipe(Schema.minItems(1), Schema.maxItems(7));
|
|
17
|
+
export type DaysOfWeek = typeof DaysOfWeek.Type;
|
|
18
|
+
|
|
16
19
|
export const EventSeriesStatus = Schema.Literal('active', 'cancelled');
|
|
17
20
|
export type EventSeriesStatus = typeof EventSeriesStatus.Type;
|
|
18
21
|
|
|
@@ -26,7 +29,7 @@ export class EventSeries extends Model.Class<EventSeries>('EventSeries')({
|
|
|
26
29
|
end_time: Schema.NullOr(Schema.String),
|
|
27
30
|
location: Schema.NullOr(Schema.String),
|
|
28
31
|
frequency: RecurrenceFrequency,
|
|
29
|
-
|
|
32
|
+
days_of_week: DaysOfWeek,
|
|
30
33
|
start_date: Schema.DateFromSelf,
|
|
31
34
|
end_date: Schema.NullOr(Schema.DateFromSelf),
|
|
32
35
|
status: Model.FieldExcept('update')(EventSeriesStatus),
|
|
@@ -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
|
}) {}
|
package/src/models/User.ts
CHANGED
|
@@ -14,8 +14,8 @@ export type Locale = typeof Locale.Type;
|
|
|
14
14
|
export class User extends Model.Class<User>('User')({
|
|
15
15
|
id: Model.Generated(UserId),
|
|
16
16
|
discord_id: Schema.String,
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
username: Schema.String,
|
|
18
|
+
avatar: Schema.NullOr(Schema.String),
|
|
19
19
|
name: Schema.NullOr(Schema.String),
|
|
20
20
|
birth_date: Schema.OptionFromNullOr(Schemas.DateTimeFromDate),
|
|
21
21
|
gender: Schema.NullOr(Gender),
|
|
@@ -39,10 +39,21 @@ export class EventCancelledEvent extends Schema.TaggedClass<EventCancelledEvent>
|
|
|
39
39
|
},
|
|
40
40
|
) {}
|
|
41
41
|
|
|
42
|
+
export class RsvpReminderEvent extends Schema.TaggedClass<RsvpReminderEvent>()('rsvp_reminder', {
|
|
43
|
+
id: Schema.String,
|
|
44
|
+
team_id: Team.TeamId,
|
|
45
|
+
guild_id: Discord.Snowflake,
|
|
46
|
+
event_id: Event.EventId,
|
|
47
|
+
title: Schema.String,
|
|
48
|
+
start_at: Schema.String,
|
|
49
|
+
discord_channel_id: Schema.NullOr(Schema.String),
|
|
50
|
+
}) {}
|
|
51
|
+
|
|
42
52
|
export const UnprocessedEventSyncEvent = Schema.Union(
|
|
43
53
|
EventCreatedEvent,
|
|
44
54
|
EventUpdatedEvent,
|
|
45
55
|
EventCancelledEvent,
|
|
56
|
+
RsvpReminderEvent,
|
|
46
57
|
);
|
|
47
58
|
|
|
48
59
|
export type UnprocessedEventSyncEvent = Schema.Schema.Type<typeof UnprocessedEventSyncEvent>;
|
|
@@ -4,6 +4,10 @@ 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,
|
|
9
13
|
RsvpAttendeesResult,
|
|
@@ -11,6 +15,7 @@ import {
|
|
|
11
15
|
RsvpDeadlinePassed,
|
|
12
16
|
RsvpEventNotFound,
|
|
13
17
|
RsvpMemberNotFound,
|
|
18
|
+
RsvpReminderSummary,
|
|
14
19
|
} from './EventRpcModels.js';
|
|
15
20
|
|
|
16
21
|
export const EventRpcGroup = RpcGroup.make(
|
|
@@ -62,4 +67,22 @@ export const EventRpcGroup = RpcGroup.make(
|
|
|
62
67
|
payload: { event_id: Event.EventId, offset: Schema.Number, limit: Schema.Number },
|
|
63
68
|
success: RsvpAttendeesResult,
|
|
64
69
|
}),
|
|
70
|
+
Rpc.make('GetRsvpReminderSummary', {
|
|
71
|
+
payload: { event_id: Event.EventId },
|
|
72
|
+
success: RsvpReminderSummary,
|
|
73
|
+
}),
|
|
74
|
+
Rpc.make('CreateEvent', {
|
|
75
|
+
payload: {
|
|
76
|
+
guild_id: Discord.Snowflake,
|
|
77
|
+
discord_user_id: Discord.Snowflake,
|
|
78
|
+
event_type: Event.EventType,
|
|
79
|
+
title: Schema.String,
|
|
80
|
+
start_at: Schema.String,
|
|
81
|
+
end_at: Schema.NullOr(Schema.String),
|
|
82
|
+
location: Schema.NullOr(Schema.String),
|
|
83
|
+
description: Schema.NullOr(Schema.String),
|
|
84
|
+
},
|
|
85
|
+
success: CreateEventResult,
|
|
86
|
+
error: Schema.Union(CreateEventNotMember, CreateEventForbidden, CreateEventInvalidDate),
|
|
87
|
+
}),
|
|
65
88
|
).prefix('Event/');
|
|
@@ -49,6 +49,26 @@ export class RsvpEventNotFound extends Schema.TaggedError<RsvpEventNotFound>()(
|
|
|
49
49
|
{},
|
|
50
50
|
) {}
|
|
51
51
|
|
|
52
|
+
export class CreateEventNotMember extends Schema.TaggedError<CreateEventNotMember>()(
|
|
53
|
+
'CreateEventNotMember',
|
|
54
|
+
{},
|
|
55
|
+
) {}
|
|
56
|
+
|
|
57
|
+
export class CreateEventForbidden extends Schema.TaggedError<CreateEventForbidden>()(
|
|
58
|
+
'CreateEventForbidden',
|
|
59
|
+
{},
|
|
60
|
+
) {}
|
|
61
|
+
|
|
62
|
+
export class CreateEventInvalidDate extends Schema.TaggedError<CreateEventInvalidDate>()(
|
|
63
|
+
'CreateEventInvalidDate',
|
|
64
|
+
{},
|
|
65
|
+
) {}
|
|
66
|
+
|
|
67
|
+
export class CreateEventResult extends Schema.Class<CreateEventResult>('CreateEventResult')({
|
|
68
|
+
event_id: Schema.String,
|
|
69
|
+
title: Schema.String,
|
|
70
|
+
}) {}
|
|
71
|
+
|
|
52
72
|
export class RsvpAttendeeEntry extends Schema.Class<RsvpAttendeeEntry>('RsvpAttendeeEntry')({
|
|
53
73
|
discord_id: Schema.NullOr(Schema.String),
|
|
54
74
|
name: Schema.NullOr(Schema.String),
|
|
@@ -60,3 +80,18 @@ export class RsvpAttendeesResult extends Schema.Class<RsvpAttendeesResult>('Rsvp
|
|
|
60
80
|
attendees: Schema.Array(RsvpAttendeeEntry),
|
|
61
81
|
total: Schema.Number,
|
|
62
82
|
}) {}
|
|
83
|
+
|
|
84
|
+
export class NonResponderRpcEntry extends Schema.Class<NonResponderRpcEntry>(
|
|
85
|
+
'NonResponderRpcEntry',
|
|
86
|
+
)({
|
|
87
|
+
discord_id: Schema.NullOr(Schema.String),
|
|
88
|
+
name: Schema.NullOr(Schema.String),
|
|
89
|
+
username: Schema.NullOr(Schema.String),
|
|
90
|
+
}) {}
|
|
91
|
+
|
|
92
|
+
export class RsvpReminderSummary extends Schema.Class<RsvpReminderSummary>('RsvpReminderSummary')({
|
|
93
|
+
yesCount: Schema.Number,
|
|
94
|
+
noCount: Schema.Number,
|
|
95
|
+
maybeCount: Schema.Number,
|
|
96
|
+
nonResponders: Schema.Array(NonResponderRpcEntry),
|
|
97
|
+
}) {}
|
|
@@ -32,8 +32,8 @@ export const GuildRpcGroup = RpcGroup.make(
|
|
|
32
32
|
members: Schema.Array(
|
|
33
33
|
Schema.Struct({
|
|
34
34
|
discord_id: Schema.String,
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
username: Schema.String,
|
|
36
|
+
avatar: Schema.NullOr(Schema.String),
|
|
37
37
|
roles: Schema.Array(Schema.String),
|
|
38
38
|
}),
|
|
39
39
|
),
|
|
@@ -43,8 +43,8 @@ export const GuildRpcGroup = RpcGroup.make(
|
|
|
43
43
|
payload: {
|
|
44
44
|
guild_id: Discord.Snowflake,
|
|
45
45
|
discord_id: Schema.String,
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
username: Schema.String,
|
|
47
|
+
avatar: Schema.NullOr(Schema.String),
|
|
48
48
|
roles: Schema.Array(Schema.String),
|
|
49
49
|
},
|
|
50
50
|
}),
|