@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.
- package/dist/cjs/api/AgeThresholdApi.js +7 -1
- package/dist/cjs/api/AgeThresholdApi.js.map +1 -1
- package/dist/cjs/api/Auth.js +9 -8
- package/dist/cjs/api/Auth.js.map +1 -1
- package/dist/cjs/api/EventApi.js +26 -23
- package/dist/cjs/api/EventApi.js.map +1 -1
- package/dist/cjs/api/EventRsvpApi.js +28 -10
- package/dist/cjs/api/EventRsvpApi.js.map +1 -1
- package/dist/cjs/api/EventSeriesApi.js +33 -27
- package/dist/cjs/api/EventSeriesApi.js.map +1 -1
- package/dist/cjs/api/GroupApi.js +22 -14
- package/dist/cjs/api/GroupApi.js.map +1 -1
- package/dist/cjs/api/ICalApi.js +25 -0
- package/dist/cjs/api/ICalApi.js.map +1 -0
- package/dist/cjs/api/RoleApi.js +11 -3
- package/dist/cjs/api/RoleApi.js.map +1 -1
- package/dist/cjs/api/Roster.js +10 -10
- package/dist/cjs/api/Roster.js.map +1 -1
- package/dist/cjs/api/TeamSettingsApi.js +21 -12
- package/dist/cjs/api/TeamSettingsApi.js.map +1 -1
- package/dist/cjs/api/TrainingTypeApi.js +17 -8
- package/dist/cjs/api/TrainingTypeApi.js.map +1 -1
- package/dist/cjs/index.js +5 -1
- package/dist/cjs/models/AgeThresholdRule.js +2 -2
- package/dist/cjs/models/AgeThresholdRule.js.map +1 -1
- package/dist/cjs/models/ChannelSyncEvent.js +5 -5
- package/dist/cjs/models/ChannelSyncEvent.js.map +1 -1
- package/dist/cjs/models/Event.js +5 -5
- package/dist/cjs/models/Event.js.map +1 -1
- package/dist/cjs/models/EventRsvp.js +1 -1
- package/dist/cjs/models/EventRsvp.js.map +1 -1
- package/dist/cjs/models/EventSeries.js +8 -7
- package/dist/cjs/models/EventSeries.js.map +1 -1
- package/dist/cjs/models/GroupModel.js +2 -2
- package/dist/cjs/models/GroupModel.js.map +1 -1
- package/dist/cjs/models/ICalToken.js +17 -0
- package/dist/cjs/models/ICalToken.js.map +1 -0
- package/dist/cjs/models/OAuthConnection.js +1 -1
- package/dist/cjs/models/OAuthConnection.js.map +1 -1
- package/dist/cjs/models/RoleSyncEvent.js +5 -5
- package/dist/cjs/models/RoleSyncEvent.js.map +1 -1
- package/dist/cjs/models/TeamInvite.js +1 -1
- package/dist/cjs/models/TeamInvite.js.map +1 -1
- package/dist/cjs/models/TeamMember.js +1 -1
- package/dist/cjs/models/TeamMember.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/TrainingType.js +1 -1
- package/dist/cjs/models/TrainingType.js.map +1 -1
- package/dist/cjs/models/User.js +5 -4
- package/dist/cjs/models/User.js.map +1 -1
- package/dist/cjs/rpc/event/EventRpcEvents.js +24 -12
- package/dist/cjs/rpc/event/EventRpcEvents.js.map +1 -1
- package/dist/cjs/rpc/event/EventRpcGroup.js +30 -4
- package/dist/cjs/rpc/event/EventRpcGroup.js.map +1 -1
- package/dist/cjs/rpc/event/EventRpcModels.js +60 -13
- package/dist/cjs/rpc/event/EventRpcModels.js.map +1 -1
- package/dist/cjs/rpc/guild/GuildRpcGroup.js +3 -3
- package/dist/cjs/rpc/guild/GuildRpcGroup.js.map +1 -1
- package/dist/dts/api/AgeThresholdApi.d.ts +6 -1
- package/dist/dts/api/AgeThresholdApi.d.ts.map +1 -1
- package/dist/dts/api/Auth.d.ts +22 -21
- package/dist/dts/api/Auth.d.ts.map +1 -1
- package/dist/dts/api/EventApi.d.ts +73 -73
- package/dist/dts/api/EventApi.d.ts.map +1 -1
- package/dist/dts/api/EventRsvpApi.d.ts +52 -19
- package/dist/dts/api/EventRsvpApi.d.ts.map +1 -1
- package/dist/dts/api/EventSeriesApi.d.ts +89 -81
- package/dist/dts/api/EventSeriesApi.d.ts.map +1 -1
- package/dist/dts/api/GroupApi.d.ts +49 -44
- package/dist/dts/api/GroupApi.d.ts.map +1 -1
- package/dist/dts/api/ICalApi.d.ts +28 -0
- package/dist/dts/api/ICalApi.d.ts.map +1 -0
- package/dist/dts/api/RoleApi.d.ts +13 -8
- package/dist/dts/api/RoleApi.d.ts.map +1 -1
- package/dist/dts/api/Roster.d.ts +32 -32
- package/dist/dts/api/TeamSettingsApi.d.ts +60 -36
- package/dist/dts/api/TeamSettingsApi.d.ts.map +1 -1
- package/dist/dts/api/TrainingTypeApi.d.ts +28 -23
- package/dist/dts/api/TrainingTypeApi.d.ts.map +1 -1
- package/dist/dts/index.d.ts +2 -0
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/models/AgeThresholdRule.d.ts +22 -22
- package/dist/dts/models/ChannelSyncEvent.d.ts +55 -55
- package/dist/dts/models/Event.d.ts +57 -57
- package/dist/dts/models/EventRsvp.d.ts +11 -11
- package/dist/dts/models/EventSeries.d.ts +68 -66
- package/dist/dts/models/EventSeries.d.ts.map +1 -1
- package/dist/dts/models/GroupModel.d.ts +22 -22
- package/dist/dts/models/ICalToken.d.ts +69 -0
- package/dist/dts/models/ICalToken.d.ts.map +1 -0
- package/dist/dts/models/OAuthConnection.d.ts +8 -8
- package/dist/dts/models/RoleSyncEvent.d.ts +55 -55
- package/dist/dts/models/TeamInvite.d.ts +11 -11
- package/dist/dts/models/TeamMember.d.ts +22 -22
- package/dist/dts/models/TeamSettings.d.ts +26 -0
- package/dist/dts/models/TeamSettings.d.ts.map +1 -1
- package/dist/dts/models/TrainingType.d.ts +11 -11
- package/dist/dts/models/User.d.ts +44 -44
- package/dist/dts/models/User.d.ts.map +1 -1
- package/dist/dts/rpc/SyncRpcs.d.ts +24 -9
- package/dist/dts/rpc/SyncRpcs.d.ts.map +1 -1
- package/dist/dts/rpc/event/EventRpcEvents.d.ts +24 -11
- package/dist/dts/rpc/event/EventRpcEvents.d.ts.map +1 -1
- package/dist/dts/rpc/event/EventRpcGroup.d.ts +22 -7
- package/dist/dts/rpc/event/EventRpcGroup.d.ts.map +1 -1
- package/dist/dts/rpc/event/EventRpcModels.d.ts +165 -36
- package/dist/dts/rpc/event/EventRpcModels.d.ts.map +1 -1
- package/dist/dts/rpc/guild/GuildRpcGroup.d.ts +3 -3
- package/dist/esm/api/AgeThresholdApi.js +5 -0
- package/dist/esm/api/AgeThresholdApi.js.map +1 -1
- package/dist/esm/api/Auth.js +8 -7
- package/dist/esm/api/Auth.js.map +1 -1
- package/dist/esm/api/EventApi.js +25 -23
- package/dist/esm/api/EventApi.js.map +1 -1
- package/dist/esm/api/EventRsvpApi.js +25 -9
- package/dist/esm/api/EventRsvpApi.js.map +1 -1
- package/dist/esm/api/EventSeriesApi.js +33 -28
- package/dist/esm/api/EventSeriesApi.js.map +1 -1
- package/dist/esm/api/GroupApi.js +20 -13
- package/dist/esm/api/GroupApi.js.map +1 -1
- package/dist/esm/api/ICalApi.js +16 -0
- package/dist/esm/api/ICalApi.js.map +1 -0
- package/dist/esm/api/RoleApi.js +9 -2
- package/dist/esm/api/RoleApi.js.map +1 -1
- package/dist/esm/api/Roster.js +10 -10
- package/dist/esm/api/Roster.js.map +1 -1
- package/dist/esm/api/TeamSettingsApi.js +21 -12
- package/dist/esm/api/TeamSettingsApi.js.map +1 -1
- package/dist/esm/api/TrainingTypeApi.js +15 -7
- package/dist/esm/api/TrainingTypeApi.js.map +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/models/AgeThresholdRule.js +2 -2
- package/dist/esm/models/AgeThresholdRule.js.map +1 -1
- package/dist/esm/models/ChannelSyncEvent.js +5 -5
- package/dist/esm/models/ChannelSyncEvent.js.map +1 -1
- package/dist/esm/models/Event.js +5 -5
- package/dist/esm/models/Event.js.map +1 -1
- package/dist/esm/models/EventRsvp.js +1 -1
- package/dist/esm/models/EventRsvp.js.map +1 -1
- package/dist/esm/models/EventSeries.js +7 -6
- package/dist/esm/models/EventSeries.js.map +1 -1
- package/dist/esm/models/GroupModel.js +2 -2
- package/dist/esm/models/GroupModel.js.map +1 -1
- package/dist/esm/models/ICalToken.js +10 -0
- package/dist/esm/models/ICalToken.js.map +1 -0
- package/dist/esm/models/OAuthConnection.js +1 -1
- package/dist/esm/models/OAuthConnection.js.map +1 -1
- package/dist/esm/models/RoleSyncEvent.js +5 -5
- package/dist/esm/models/RoleSyncEvent.js.map +1 -1
- package/dist/esm/models/TeamInvite.js +1 -1
- package/dist/esm/models/TeamInvite.js.map +1 -1
- package/dist/esm/models/TeamMember.js +1 -1
- package/dist/esm/models/TeamMember.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/TrainingType.js +1 -1
- package/dist/esm/models/TrainingType.js.map +1 -1
- package/dist/esm/models/User.js +5 -4
- package/dist/esm/models/User.js.map +1 -1
- package/dist/esm/rpc/event/EventRpcEvents.js +21 -11
- package/dist/esm/rpc/event/EventRpcEvents.js.map +1 -1
- package/dist/esm/rpc/event/EventRpcGroup.js +31 -5
- package/dist/esm/rpc/event/EventRpcGroup.js.map +1 -1
- package/dist/esm/rpc/event/EventRpcModels.js +49 -12
- package/dist/esm/rpc/event/EventRpcModels.js.map +1 -1
- package/dist/esm/rpc/guild/GuildRpcGroup.js +3 -3
- package/dist/esm/rpc/guild/GuildRpcGroup.js.map +1 -1
- package/package.json +2 -2
- package/src/api/AgeThresholdApi.ts +7 -0
- package/src/api/Auth.ts +8 -7
- package/src/api/EventApi.ts +27 -23
- package/src/api/EventRsvpApi.ts +27 -6
- package/src/api/EventSeriesApi.ts +33 -28
- package/src/api/GroupApi.ts +21 -13
- package/src/api/ICalApi.ts +32 -0
- package/src/api/RoleApi.ts +10 -2
- package/src/api/Roster.ts +10 -10
- package/src/api/TeamSettingsApi.ts +21 -12
- package/src/api/TrainingTypeApi.ts +16 -7
- package/src/index.ts +4 -0
- package/src/models/AgeThresholdRule.ts +2 -2
- package/src/models/ChannelSyncEvent.ts +5 -5
- package/src/models/Event.ts +5 -5
- package/src/models/EventRsvp.ts +1 -1
- package/src/models/EventSeries.ts +9 -6
- package/src/models/GroupModel.ts +2 -2
- package/src/models/ICalToken.ts +10 -0
- package/src/models/OAuthConnection.ts +1 -1
- package/src/models/RoleSyncEvent.ts +5 -5
- package/src/models/TeamInvite.ts +1 -1
- package/src/models/TeamMember.ts +1 -1
- package/src/models/TeamSettings.ts +2 -0
- package/src/models/TrainingType.ts +1 -1
- package/src/models/User.ts +5 -4
- package/src/rpc/event/EventRpcEvents.ts +22 -10
- package/src/rpc/event/EventRpcGroup.ts +38 -4
- package/src/rpc/event/EventRpcModels.ts +71 -12
- package/src/rpc/guild/GuildRpcGroup.ts +3 -3
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from '@effect/platform';
|
|
2
|
+
import * as Schemas from '@sideline/effect-lib/Schemas';
|
|
2
3
|
import { Schema } from 'effect';
|
|
3
4
|
import { AuthMiddleware } from '~/api/Auth.js';
|
|
4
5
|
import { Forbidden } from '~/api/EventApi.js';
|
|
6
|
+
import { Snowflake } from '~/models/Discord.js';
|
|
5
7
|
import {
|
|
6
|
-
|
|
8
|
+
DaysOfWeek,
|
|
7
9
|
EventSeriesId,
|
|
8
10
|
EventSeriesStatus,
|
|
9
11
|
RecurrenceFrequency,
|
|
@@ -16,34 +18,34 @@ export class EventSeriesInfo extends Schema.Class<EventSeriesInfo>('EventSeriesI
|
|
|
16
18
|
teamId: TeamId,
|
|
17
19
|
title: Schema.String,
|
|
18
20
|
frequency: RecurrenceFrequency,
|
|
19
|
-
|
|
20
|
-
startDate:
|
|
21
|
-
endDate: Schema.
|
|
21
|
+
daysOfWeek: DaysOfWeek,
|
|
22
|
+
startDate: Schemas.DateTimeFromIsoString,
|
|
23
|
+
endDate: Schema.OptionFromNullOr(Schemas.DateTimeFromIsoString),
|
|
22
24
|
status: EventSeriesStatus,
|
|
23
|
-
trainingTypeId: Schema.
|
|
24
|
-
trainingTypeName: Schema.
|
|
25
|
+
trainingTypeId: Schema.OptionFromNullOr(TrainingTypeId),
|
|
26
|
+
trainingTypeName: Schema.OptionFromNullOr(Schema.String),
|
|
25
27
|
startTime: Schema.String,
|
|
26
|
-
endTime: Schema.
|
|
27
|
-
location: Schema.
|
|
28
|
-
discordChannelId: Schema.
|
|
28
|
+
endTime: Schema.OptionFromNullOr(Schema.String),
|
|
29
|
+
location: Schema.OptionFromNullOr(Schema.String),
|
|
30
|
+
discordChannelId: Schema.OptionFromNullOr(Snowflake),
|
|
29
31
|
}) {}
|
|
30
32
|
|
|
31
33
|
export class EventSeriesDetail extends Schema.Class<EventSeriesDetail>('EventSeriesDetail')({
|
|
32
34
|
seriesId: EventSeriesId,
|
|
33
35
|
teamId: TeamId,
|
|
34
36
|
title: Schema.String,
|
|
35
|
-
description: Schema.
|
|
37
|
+
description: Schema.OptionFromNullOr(Schema.String),
|
|
36
38
|
frequency: RecurrenceFrequency,
|
|
37
|
-
|
|
38
|
-
startDate:
|
|
39
|
-
endDate: Schema.
|
|
39
|
+
daysOfWeek: DaysOfWeek,
|
|
40
|
+
startDate: Schemas.DateTimeFromIsoString,
|
|
41
|
+
endDate: Schema.OptionFromNullOr(Schemas.DateTimeFromIsoString),
|
|
40
42
|
status: EventSeriesStatus,
|
|
41
|
-
trainingTypeId: Schema.
|
|
42
|
-
trainingTypeName: Schema.
|
|
43
|
+
trainingTypeId: Schema.OptionFromNullOr(TrainingTypeId),
|
|
44
|
+
trainingTypeName: Schema.OptionFromNullOr(Schema.String),
|
|
43
45
|
startTime: Schema.String,
|
|
44
|
-
endTime: Schema.
|
|
45
|
-
location: Schema.
|
|
46
|
-
discordChannelId: Schema.
|
|
46
|
+
endTime: Schema.OptionFromNullOr(Schema.String),
|
|
47
|
+
location: Schema.OptionFromNullOr(Schema.String),
|
|
48
|
+
discordChannelId: Schema.OptionFromNullOr(Snowflake),
|
|
47
49
|
canEdit: Schema.Boolean,
|
|
48
50
|
canCancel: Schema.Boolean,
|
|
49
51
|
}) {}
|
|
@@ -52,16 +54,16 @@ export class CreateEventSeriesRequest extends Schema.Class<CreateEventSeriesRequ
|
|
|
52
54
|
'CreateEventSeriesRequest',
|
|
53
55
|
)({
|
|
54
56
|
title: Schema.NonEmptyString,
|
|
55
|
-
trainingTypeId: Schema.
|
|
56
|
-
description: Schema.
|
|
57
|
+
trainingTypeId: Schema.OptionFromNullOr(TrainingTypeId),
|
|
58
|
+
description: Schema.OptionFromNullOr(Schema.String),
|
|
57
59
|
frequency: RecurrenceFrequency,
|
|
58
|
-
|
|
59
|
-
startDate:
|
|
60
|
-
endDate: Schema.
|
|
60
|
+
daysOfWeek: DaysOfWeek,
|
|
61
|
+
startDate: Schemas.DateTimeFromIsoString,
|
|
62
|
+
endDate: Schema.OptionFromNullOr(Schemas.DateTimeFromIsoString),
|
|
61
63
|
startTime: Schema.String,
|
|
62
|
-
endTime: Schema.
|
|
63
|
-
location: Schema.
|
|
64
|
-
discordChannelId: Schema.
|
|
64
|
+
endTime: Schema.OptionFromNullOr(Schema.String),
|
|
65
|
+
location: Schema.OptionFromNullOr(Schema.String),
|
|
66
|
+
discordChannelId: Schema.OptionFromNullOr(Snowflake),
|
|
65
67
|
}) {}
|
|
66
68
|
|
|
67
69
|
export class UpdateEventSeriesRequest extends Schema.Class<UpdateEventSeriesRequest>(
|
|
@@ -70,11 +72,14 @@ export class UpdateEventSeriesRequest extends Schema.Class<UpdateEventSeriesRequ
|
|
|
70
72
|
title: Schema.optionalWith(Schema.NonEmptyString, { as: 'Option' }),
|
|
71
73
|
trainingTypeId: Schema.optionalWith(Schema.OptionFromNullOr(TrainingTypeId), { as: 'Option' }),
|
|
72
74
|
description: Schema.optionalWith(Schema.OptionFromNullOr(Schema.String), { as: 'Option' }),
|
|
75
|
+
daysOfWeek: Schema.optionalWith(DaysOfWeek, { as: 'Option' }),
|
|
73
76
|
startTime: Schema.optionalWith(Schema.String, { as: 'Option' }),
|
|
74
77
|
endTime: Schema.optionalWith(Schema.OptionFromNullOr(Schema.String), { as: 'Option' }),
|
|
75
78
|
location: Schema.optionalWith(Schema.OptionFromNullOr(Schema.String), { as: 'Option' }),
|
|
76
|
-
endDate: Schema.optionalWith(Schema.OptionFromNullOr(
|
|
77
|
-
|
|
79
|
+
endDate: Schema.optionalWith(Schema.OptionFromNullOr(Schemas.DateTimeFromIsoString), {
|
|
80
|
+
as: 'Option',
|
|
81
|
+
}),
|
|
82
|
+
discordChannelId: Schema.optionalWith(Schema.OptionFromNullOr(Snowflake), { as: 'Option' }),
|
|
78
83
|
}) {}
|
|
79
84
|
|
|
80
85
|
export class EventSeriesNotFound extends Schema.TaggedError<EventSeriesNotFound>()(
|
package/src/api/GroupApi.ts
CHANGED
|
@@ -10,18 +10,18 @@ import { TeamMemberId } from '~/models/TeamMember.js';
|
|
|
10
10
|
export class GroupInfo extends Schema.Class<GroupInfo>('GroupInfo')({
|
|
11
11
|
groupId: GroupId,
|
|
12
12
|
teamId: TeamId,
|
|
13
|
-
parentId: Schema.
|
|
13
|
+
parentId: Schema.OptionFromNullOr(GroupId),
|
|
14
14
|
name: Schema.String,
|
|
15
|
-
emoji: Schema.
|
|
15
|
+
emoji: Schema.OptionFromNullOr(Schema.String),
|
|
16
16
|
memberCount: Schema.Number,
|
|
17
17
|
}) {}
|
|
18
18
|
|
|
19
19
|
export class GroupDetail extends Schema.Class<GroupDetail>('GroupDetail')({
|
|
20
20
|
groupId: GroupId,
|
|
21
21
|
teamId: TeamId,
|
|
22
|
-
parentId: Schema.
|
|
22
|
+
parentId: Schema.OptionFromNullOr(GroupId),
|
|
23
23
|
name: Schema.String,
|
|
24
|
-
emoji: Schema.
|
|
24
|
+
emoji: Schema.OptionFromNullOr(Schema.String),
|
|
25
25
|
roles: Schema.Array(
|
|
26
26
|
Schema.Struct({
|
|
27
27
|
roleId: RoleId,
|
|
@@ -31,7 +31,7 @@ export class GroupDetail extends Schema.Class<GroupDetail>('GroupDetail')({
|
|
|
31
31
|
members: Schema.Array(
|
|
32
32
|
Schema.Struct({
|
|
33
33
|
memberId: TeamMemberId,
|
|
34
|
-
name: Schema.
|
|
34
|
+
name: Schema.OptionFromNullOr(Schema.String),
|
|
35
35
|
username: Schema.String,
|
|
36
36
|
}),
|
|
37
37
|
),
|
|
@@ -39,13 +39,13 @@ export class GroupDetail extends Schema.Class<GroupDetail>('GroupDetail')({
|
|
|
39
39
|
|
|
40
40
|
export class CreateGroupRequest extends Schema.Class<CreateGroupRequest>('CreateGroupRequest')({
|
|
41
41
|
name: Schema.NonEmptyString,
|
|
42
|
-
parentId: Schema.
|
|
43
|
-
emoji: Schema.
|
|
42
|
+
parentId: Schema.OptionFromNullOr(GroupId),
|
|
43
|
+
emoji: Schema.OptionFromNullOr(Schema.String),
|
|
44
44
|
}) {}
|
|
45
45
|
|
|
46
46
|
export class UpdateGroupRequest extends Schema.Class<UpdateGroupRequest>('UpdateGroupRequest')({
|
|
47
47
|
name: Schema.NonEmptyString,
|
|
48
|
-
emoji: Schema.
|
|
48
|
+
emoji: Schema.OptionFromNullOr(Schema.String),
|
|
49
49
|
}) {}
|
|
50
50
|
|
|
51
51
|
export class AddGroupMemberRequest extends Schema.Class<AddGroupMemberRequest>(
|
|
@@ -61,13 +61,13 @@ export class AssignGroupRoleRequest extends Schema.Class<AssignGroupRoleRequest>
|
|
|
61
61
|
}) {}
|
|
62
62
|
|
|
63
63
|
export class MoveGroupRequest extends Schema.Class<MoveGroupRequest>('MoveGroupRequest')({
|
|
64
|
-
parentId: Schema.
|
|
64
|
+
parentId: Schema.OptionFromNullOr(GroupId),
|
|
65
65
|
}) {}
|
|
66
66
|
|
|
67
67
|
export class ChannelMappingInfo extends Schema.Class<ChannelMappingInfo>('ChannelMappingInfo')({
|
|
68
68
|
discordChannelId: Snowflake,
|
|
69
|
-
discordChannelName: Schema.
|
|
70
|
-
discordRoleId: Schema.
|
|
69
|
+
discordChannelName: Schema.OptionFromNullOr(Schema.String),
|
|
70
|
+
discordRoleId: Schema.OptionFromNullOr(Snowflake),
|
|
71
71
|
}) {}
|
|
72
72
|
|
|
73
73
|
export class SetChannelMappingRequest extends Schema.Class<SetChannelMappingRequest>(
|
|
@@ -80,7 +80,7 @@ export class DiscordChannelInfo extends Schema.Class<DiscordChannelInfo>('Discor
|
|
|
80
80
|
id: Snowflake,
|
|
81
81
|
name: Schema.String,
|
|
82
82
|
type: Schema.Number,
|
|
83
|
-
parentId: Schema.
|
|
83
|
+
parentId: Schema.OptionFromNullOr(Snowflake),
|
|
84
84
|
}) {}
|
|
85
85
|
|
|
86
86
|
export class GroupNotFound extends Schema.TaggedError<GroupNotFound>()(
|
|
@@ -101,6 +101,12 @@ export class MemberNotFound extends Schema.TaggedError<MemberNotFound>()(
|
|
|
101
101
|
HttpApiSchema.annotations({ status: 404 }),
|
|
102
102
|
) {}
|
|
103
103
|
|
|
104
|
+
export class GroupNameAlreadyTaken extends Schema.TaggedError<GroupNameAlreadyTaken>()(
|
|
105
|
+
'GroupNameAlreadyTaken',
|
|
106
|
+
{},
|
|
107
|
+
HttpApiSchema.annotations({ status: 409 }),
|
|
108
|
+
) {}
|
|
109
|
+
|
|
104
110
|
export class GroupApiGroup extends HttpApiGroup.make('group')
|
|
105
111
|
.add(
|
|
106
112
|
HttpApiEndpoint.get('listGroups', '/teams/:teamId/groups')
|
|
@@ -113,6 +119,7 @@ export class GroupApiGroup extends HttpApiGroup.make('group')
|
|
|
113
119
|
HttpApiEndpoint.post('createGroup', '/teams/:teamId/groups')
|
|
114
120
|
.addSuccess(GroupInfo, { status: 201 })
|
|
115
121
|
.addError(Forbidden, { status: 403 })
|
|
122
|
+
.addError(GroupNameAlreadyTaken, { status: 409 })
|
|
116
123
|
.setPath(Schema.Struct({ teamId: TeamId }))
|
|
117
124
|
.setPayload(CreateGroupRequest)
|
|
118
125
|
.middleware(AuthMiddleware),
|
|
@@ -130,6 +137,7 @@ export class GroupApiGroup extends HttpApiGroup.make('group')
|
|
|
130
137
|
.addSuccess(GroupInfo)
|
|
131
138
|
.addError(Forbidden, { status: 403 })
|
|
132
139
|
.addError(GroupNotFound, { status: 404 })
|
|
140
|
+
.addError(GroupNameAlreadyTaken, { status: 409 })
|
|
133
141
|
.setPath(Schema.Struct({ teamId: TeamId, groupId: GroupId }))
|
|
134
142
|
.setPayload(UpdateGroupRequest)
|
|
135
143
|
.middleware(AuthMiddleware),
|
|
@@ -189,7 +197,7 @@ export class GroupApiGroup extends HttpApiGroup.make('group')
|
|
|
189
197
|
)
|
|
190
198
|
.add(
|
|
191
199
|
HttpApiEndpoint.get('getChannelMapping', '/teams/:teamId/groups/:groupId/channel-mapping')
|
|
192
|
-
.addSuccess(Schema.
|
|
200
|
+
.addSuccess(Schema.OptionFromNullOr(ChannelMappingInfo))
|
|
193
201
|
.addError(Forbidden, { status: 403 })
|
|
194
202
|
.addError(GroupNotFound, { status: 404 })
|
|
195
203
|
.setPath(Schema.Struct({ teamId: TeamId, groupId: GroupId }))
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from '@effect/platform';
|
|
2
|
+
import { Schema } from 'effect';
|
|
3
|
+
import { AuthMiddleware } from '~/api/Auth.js';
|
|
4
|
+
|
|
5
|
+
export class ICalTokenResponse extends Schema.Class<ICalTokenResponse>('ICalTokenResponse')({
|
|
6
|
+
token: Schema.String,
|
|
7
|
+
url: Schema.String,
|
|
8
|
+
}) {}
|
|
9
|
+
|
|
10
|
+
export class ICalTokenNotFound extends Schema.TaggedError<ICalTokenNotFound>()(
|
|
11
|
+
'ICalTokenNotFound',
|
|
12
|
+
{},
|
|
13
|
+
HttpApiSchema.annotations({ status: 404 }),
|
|
14
|
+
) {}
|
|
15
|
+
|
|
16
|
+
export class ICalApiGroup extends HttpApiGroup.make('ical')
|
|
17
|
+
.add(
|
|
18
|
+
HttpApiEndpoint.get('getICalToken', '/me/ical-token')
|
|
19
|
+
.addSuccess(ICalTokenResponse)
|
|
20
|
+
.middleware(AuthMiddleware),
|
|
21
|
+
)
|
|
22
|
+
.add(
|
|
23
|
+
HttpApiEndpoint.post('regenerateICalToken', '/me/ical-token/regenerate')
|
|
24
|
+
.addSuccess(ICalTokenResponse)
|
|
25
|
+
.middleware(AuthMiddleware),
|
|
26
|
+
)
|
|
27
|
+
.add(
|
|
28
|
+
HttpApiEndpoint.get('getICalFeed', '/ical/:token')
|
|
29
|
+
.addSuccess(Schema.Void)
|
|
30
|
+
.addError(ICalTokenNotFound, { status: 404 })
|
|
31
|
+
.setPath(Schema.Struct({ token: Schema.String })),
|
|
32
|
+
) {}
|
package/src/api/RoleApi.ts
CHANGED
|
@@ -27,8 +27,8 @@ export class CreateRoleRequest extends Schema.Class<CreateRoleRequest>('CreateRo
|
|
|
27
27
|
}) {}
|
|
28
28
|
|
|
29
29
|
export class UpdateRoleRequest extends Schema.Class<UpdateRoleRequest>('UpdateRoleRequest')({
|
|
30
|
-
name: Schema.
|
|
31
|
-
permissions: Schema.
|
|
30
|
+
name: Schema.OptionFromNullOr(Schema.NonEmptyString),
|
|
31
|
+
permissions: Schema.OptionFromNullOr(Schema.Array(Permission)),
|
|
32
32
|
}) {}
|
|
33
33
|
|
|
34
34
|
export class RoleNotFound extends Schema.TaggedError<RoleNotFound>()(
|
|
@@ -65,6 +65,12 @@ export class RoleInUse extends Schema.TaggedError<RoleInUse>()(
|
|
|
65
65
|
HttpApiSchema.annotations({ status: 409 }),
|
|
66
66
|
) {}
|
|
67
67
|
|
|
68
|
+
export class RoleNameAlreadyTaken extends Schema.TaggedError<RoleNameAlreadyTaken>()(
|
|
69
|
+
'RoleNameAlreadyTaken',
|
|
70
|
+
{},
|
|
71
|
+
HttpApiSchema.annotations({ status: 409 }),
|
|
72
|
+
) {}
|
|
73
|
+
|
|
68
74
|
export class RoleApiGroup extends HttpApiGroup.make('role')
|
|
69
75
|
.add(
|
|
70
76
|
HttpApiEndpoint.get('listRoles', '/teams/:teamId/roles')
|
|
@@ -77,6 +83,7 @@ export class RoleApiGroup extends HttpApiGroup.make('role')
|
|
|
77
83
|
HttpApiEndpoint.post('createRole', '/teams/:teamId/roles')
|
|
78
84
|
.addSuccess(RoleDetail, { status: 201 })
|
|
79
85
|
.addError(Forbidden, { status: 403 })
|
|
86
|
+
.addError(RoleNameAlreadyTaken, { status: 409 })
|
|
80
87
|
.setPath(Schema.Struct({ teamId: TeamId }))
|
|
81
88
|
.setPayload(CreateRoleRequest)
|
|
82
89
|
.middleware(AuthMiddleware),
|
|
@@ -95,6 +102,7 @@ export class RoleApiGroup extends HttpApiGroup.make('role')
|
|
|
95
102
|
.addError(Forbidden, { status: 403 })
|
|
96
103
|
.addError(RoleNotFound, { status: 404 })
|
|
97
104
|
.addError(CannotModifyBuiltIn, { status: 400 })
|
|
105
|
+
.addError(RoleNameAlreadyTaken, { status: 409 })
|
|
98
106
|
.setPath(Schema.Struct({ teamId: TeamId, roleId: RoleId }))
|
|
99
107
|
.setPayload(UpdateRoleRequest)
|
|
100
108
|
.middleware(AuthMiddleware),
|
package/src/api/Roster.ts
CHANGED
|
@@ -13,19 +13,19 @@ export class RosterPlayer extends Schema.Class<RosterPlayer>('RosterPlayer')({
|
|
|
13
13
|
discordId: Schema.String,
|
|
14
14
|
roleNames: Schema.Array(Schema.String),
|
|
15
15
|
permissions: Schema.Array(Permission),
|
|
16
|
-
name: Schema.
|
|
17
|
-
birthDate: Schema.
|
|
18
|
-
gender: Schema.
|
|
19
|
-
jerseyNumber: Schema.
|
|
16
|
+
name: Schema.OptionFromNullOr(Schema.String),
|
|
17
|
+
birthDate: Schema.OptionFromNullOr(Schema.String),
|
|
18
|
+
gender: Schema.OptionFromNullOr(Gender),
|
|
19
|
+
jerseyNumber: Schema.OptionFromNullOr(Schema.Number),
|
|
20
20
|
username: Schema.String,
|
|
21
|
-
avatar: Schema.
|
|
21
|
+
avatar: Schema.OptionFromNullOr(Schema.String),
|
|
22
22
|
}) {}
|
|
23
23
|
|
|
24
24
|
export class UpdatePlayerRequest extends Schema.Class<UpdatePlayerRequest>('UpdatePlayerRequest')({
|
|
25
|
-
name: Schema.
|
|
25
|
+
name: Schema.OptionFromNullOr(Schema.String),
|
|
26
26
|
birthDate: Schema.OptionFromNullOr(Schema.String),
|
|
27
|
-
gender: Schema.
|
|
28
|
-
jerseyNumber: Schema.
|
|
27
|
+
gender: Schema.OptionFromNullOr(Gender),
|
|
28
|
+
jerseyNumber: Schema.OptionFromNullOr(Schema.Number),
|
|
29
29
|
}) {}
|
|
30
30
|
|
|
31
31
|
export class PlayerNotFound extends Schema.TaggedError<PlayerNotFound>()(
|
|
@@ -69,8 +69,8 @@ export class CreateRosterRequest extends Schema.Class<CreateRosterRequest>('Crea
|
|
|
69
69
|
}) {}
|
|
70
70
|
|
|
71
71
|
export class UpdateRosterRequest extends Schema.Class<UpdateRosterRequest>('UpdateRosterRequest')({
|
|
72
|
-
name: Schema.
|
|
73
|
-
active: Schema.
|
|
72
|
+
name: Schema.OptionFromNullOr(Schema.String),
|
|
73
|
+
active: Schema.OptionFromNullOr(Schema.Boolean),
|
|
74
74
|
}) {}
|
|
75
75
|
|
|
76
76
|
export class AddRosterMemberRequest extends Schema.Class<AddRosterMemberRequest>(
|
|
@@ -2,39 +2,48 @@ import { HttpApiEndpoint, HttpApiGroup } from '@effect/platform';
|
|
|
2
2
|
import { Schema } from 'effect';
|
|
3
3
|
import { AuthMiddleware } from '~/api/Auth.js';
|
|
4
4
|
import { Forbidden } from '~/api/EventApi.js';
|
|
5
|
+
import { Snowflake } from '~/models/Discord.js';
|
|
5
6
|
import { TeamId } from '~/models/Team.js';
|
|
6
7
|
|
|
7
8
|
export class TeamSettingsInfo extends Schema.Class<TeamSettingsInfo>('TeamSettingsInfo')({
|
|
8
9
|
teamId: TeamId,
|
|
9
10
|
eventHorizonDays: Schema.Int,
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
minPlayersThreshold: Schema.Int,
|
|
12
|
+
rsvpReminderHours: Schema.Int,
|
|
13
|
+
discordChannelTraining: Schema.OptionFromNullOr(Snowflake),
|
|
14
|
+
discordChannelMatch: Schema.OptionFromNullOr(Snowflake),
|
|
15
|
+
discordChannelTournament: Schema.OptionFromNullOr(Snowflake),
|
|
16
|
+
discordChannelMeeting: Schema.OptionFromNullOr(Snowflake),
|
|
17
|
+
discordChannelSocial: Schema.OptionFromNullOr(Snowflake),
|
|
18
|
+
discordChannelOther: Schema.OptionFromNullOr(Snowflake),
|
|
16
19
|
}) {}
|
|
17
20
|
|
|
18
21
|
export class UpdateTeamSettingsRequest extends Schema.Class<UpdateTeamSettingsRequest>(
|
|
19
22
|
'UpdateTeamSettingsRequest',
|
|
20
23
|
)({
|
|
21
24
|
eventHorizonDays: Schema.Int.pipe(Schema.between(1, 365)),
|
|
22
|
-
|
|
25
|
+
minPlayersThreshold: Schema.optionalWith(Schema.Int.pipe(Schema.between(0, 100)), {
|
|
23
26
|
as: 'Option',
|
|
24
27
|
}),
|
|
25
|
-
|
|
28
|
+
rsvpReminderHours: Schema.optionalWith(Schema.Int.pipe(Schema.between(0, 168)), {
|
|
26
29
|
as: 'Option',
|
|
27
30
|
}),
|
|
28
|
-
|
|
31
|
+
discordChannelTraining: Schema.optionalWith(Schema.OptionFromNullOr(Snowflake), {
|
|
29
32
|
as: 'Option',
|
|
30
33
|
}),
|
|
31
|
-
|
|
34
|
+
discordChannelMatch: Schema.optionalWith(Schema.OptionFromNullOr(Snowflake), {
|
|
32
35
|
as: 'Option',
|
|
33
36
|
}),
|
|
34
|
-
|
|
37
|
+
discordChannelTournament: Schema.optionalWith(Schema.OptionFromNullOr(Snowflake), {
|
|
35
38
|
as: 'Option',
|
|
36
39
|
}),
|
|
37
|
-
|
|
40
|
+
discordChannelMeeting: Schema.optionalWith(Schema.OptionFromNullOr(Snowflake), {
|
|
41
|
+
as: 'Option',
|
|
42
|
+
}),
|
|
43
|
+
discordChannelSocial: Schema.optionalWith(Schema.OptionFromNullOr(Snowflake), {
|
|
44
|
+
as: 'Option',
|
|
45
|
+
}),
|
|
46
|
+
discordChannelOther: Schema.optionalWith(Schema.OptionFromNullOr(Snowflake), {
|
|
38
47
|
as: 'Option',
|
|
39
48
|
}),
|
|
40
49
|
}) {}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from '@effect/platform';
|
|
2
2
|
import { Schema } from 'effect';
|
|
3
3
|
import { AuthMiddleware } from '~/api/Auth.js';
|
|
4
|
+
import { Snowflake } from '~/models/Discord.js';
|
|
4
5
|
import { GroupId } from '~/models/GroupModel.js';
|
|
5
6
|
import { TeamId } from '~/models/Team.js';
|
|
6
7
|
import { TrainingTypeId } from '~/models/TrainingType.js';
|
|
@@ -9,16 +10,16 @@ export class TrainingTypeInfo extends Schema.Class<TrainingTypeInfo>('TrainingTy
|
|
|
9
10
|
trainingTypeId: TrainingTypeId,
|
|
10
11
|
teamId: TeamId,
|
|
11
12
|
name: Schema.String,
|
|
12
|
-
groupName: Schema.
|
|
13
|
+
groupName: Schema.OptionFromNullOr(Schema.String),
|
|
13
14
|
}) {}
|
|
14
15
|
|
|
15
16
|
export class TrainingTypeDetail extends Schema.Class<TrainingTypeDetail>('TrainingTypeDetail')({
|
|
16
17
|
trainingTypeId: TrainingTypeId,
|
|
17
18
|
teamId: TeamId,
|
|
18
19
|
name: Schema.String,
|
|
19
|
-
groupId: Schema.
|
|
20
|
-
groupName: Schema.
|
|
21
|
-
discordChannelId: Schema.
|
|
20
|
+
groupId: Schema.OptionFromNullOr(GroupId),
|
|
21
|
+
groupName: Schema.OptionFromNullOr(Schema.String),
|
|
22
|
+
discordChannelId: Schema.OptionFromNullOr(Snowflake),
|
|
22
23
|
canAdmin: Schema.Boolean,
|
|
23
24
|
}) {}
|
|
24
25
|
|
|
@@ -33,15 +34,15 @@ export class CreateTrainingTypeRequest extends Schema.Class<CreateTrainingTypeRe
|
|
|
33
34
|
'CreateTrainingTypeRequest',
|
|
34
35
|
)({
|
|
35
36
|
name: Schema.NonEmptyString,
|
|
36
|
-
groupId: Schema.
|
|
37
|
-
discordChannelId: Schema.
|
|
37
|
+
groupId: Schema.OptionFromNullOr(GroupId),
|
|
38
|
+
discordChannelId: Schema.OptionFromNullOr(Snowflake),
|
|
38
39
|
}) {}
|
|
39
40
|
|
|
40
41
|
export class UpdateTrainingTypeRequest extends Schema.Class<UpdateTrainingTypeRequest>(
|
|
41
42
|
'UpdateTrainingTypeRequest',
|
|
42
43
|
)({
|
|
43
44
|
name: Schema.NonEmptyString,
|
|
44
|
-
discordChannelId: Schema.optionalWith(Schema.OptionFromNullOr(
|
|
45
|
+
discordChannelId: Schema.optionalWith(Schema.OptionFromNullOr(Snowflake), { as: 'Option' }),
|
|
45
46
|
}) {}
|
|
46
47
|
|
|
47
48
|
export class TrainingTypeNotFound extends Schema.TaggedError<TrainingTypeNotFound>()(
|
|
@@ -56,6 +57,12 @@ export class Forbidden extends Schema.TaggedError<Forbidden>()(
|
|
|
56
57
|
HttpApiSchema.annotations({ status: 403 }),
|
|
57
58
|
) {}
|
|
58
59
|
|
|
60
|
+
export class TrainingTypeNameAlreadyTaken extends Schema.TaggedError<TrainingTypeNameAlreadyTaken>()(
|
|
61
|
+
'TrainingTypeNameAlreadyTaken',
|
|
62
|
+
{},
|
|
63
|
+
HttpApiSchema.annotations({ status: 409 }),
|
|
64
|
+
) {}
|
|
65
|
+
|
|
59
66
|
export class TrainingTypeApiGroup extends HttpApiGroup.make('trainingType')
|
|
60
67
|
.add(
|
|
61
68
|
HttpApiEndpoint.get('listTrainingTypes', '/teams/:teamId/training-types')
|
|
@@ -68,6 +75,7 @@ export class TrainingTypeApiGroup extends HttpApiGroup.make('trainingType')
|
|
|
68
75
|
HttpApiEndpoint.post('createTrainingType', '/teams/:teamId/training-types')
|
|
69
76
|
.addSuccess(TrainingTypeInfo, { status: 201 })
|
|
70
77
|
.addError(Forbidden, { status: 403 })
|
|
78
|
+
.addError(TrainingTypeNameAlreadyTaken, { status: 409 })
|
|
71
79
|
.setPath(Schema.Struct({ teamId: TeamId }))
|
|
72
80
|
.setPayload(CreateTrainingTypeRequest)
|
|
73
81
|
.middleware(AuthMiddleware),
|
|
@@ -85,6 +93,7 @@ export class TrainingTypeApiGroup extends HttpApiGroup.make('trainingType')
|
|
|
85
93
|
.addSuccess(TrainingTypeInfo)
|
|
86
94
|
.addError(Forbidden, { status: 403 })
|
|
87
95
|
.addError(TrainingTypeNotFound, { status: 404 })
|
|
96
|
+
.addError(TrainingTypeNameAlreadyTaken, { status: 409 })
|
|
88
97
|
.setPath(Schema.Struct({ teamId: TeamId, trainingTypeId: TrainingTypeId }))
|
|
89
98
|
.setPayload(UpdateTrainingTypeRequest)
|
|
90
99
|
.middleware(AuthMiddleware),
|
package/src/index.ts
CHANGED
|
@@ -12,6 +12,8 @@ export * as EventSeriesApi from './api/EventSeriesApi.js';
|
|
|
12
12
|
|
|
13
13
|
export * as GroupApi from './api/GroupApi.js';
|
|
14
14
|
|
|
15
|
+
export * as ICalApi from './api/ICalApi.js';
|
|
16
|
+
|
|
15
17
|
export * as Invite from './api/Invite.js';
|
|
16
18
|
|
|
17
19
|
export * as NotificationApi from './api/NotificationApi.js';
|
|
@@ -42,6 +44,8 @@ export * as EventSeries from './models/EventSeries.js';
|
|
|
42
44
|
|
|
43
45
|
export * as GroupModel from './models/GroupModel.js';
|
|
44
46
|
|
|
47
|
+
export * as ICalToken from './models/ICalToken.js';
|
|
48
|
+
|
|
45
49
|
export * as MemberRole from './models/MemberRole.js';
|
|
46
50
|
|
|
47
51
|
export * as Notification from './models/Notification.js';
|
|
@@ -10,7 +10,7 @@ export class AgeThresholdRule extends Model.Class<AgeThresholdRule>('AgeThreshol
|
|
|
10
10
|
id: Model.Generated(AgeThresholdRuleId),
|
|
11
11
|
team_id: TeamId,
|
|
12
12
|
group_id: GroupId,
|
|
13
|
-
min_age: Schema.
|
|
14
|
-
max_age: Schema.
|
|
13
|
+
min_age: Schema.OptionFromNullOr(Schema.Number),
|
|
14
|
+
max_age: Schema.OptionFromNullOr(Schema.Number),
|
|
15
15
|
created_at: Model.DateTimeInsertFromDate,
|
|
16
16
|
}) {}
|
|
@@ -21,10 +21,10 @@ export class ChannelSyncEvent extends Model.Class<ChannelSyncEvent>('ChannelSync
|
|
|
21
21
|
guild_id: Schema.String,
|
|
22
22
|
event_type: ChannelSyncEventType,
|
|
23
23
|
group_id: GroupId,
|
|
24
|
-
group_name: Schema.
|
|
25
|
-
team_member_id: Schema.
|
|
26
|
-
discord_user_id: Schema.
|
|
27
|
-
processed_at: Schema.
|
|
28
|
-
error: Schema.
|
|
24
|
+
group_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
|
}) {}
|
package/src/models/Event.ts
CHANGED
|
@@ -25,14 +25,14 @@ export type EventStatus = typeof EventStatus.Type;
|
|
|
25
25
|
export class Event extends Model.Class<Event>('Event')({
|
|
26
26
|
id: Model.Generated(EventId),
|
|
27
27
|
team_id: TeamId,
|
|
28
|
-
training_type_id: Schema.
|
|
28
|
+
training_type_id: Schema.OptionFromNullOr(TrainingTypeId),
|
|
29
29
|
event_type: EventType,
|
|
30
30
|
title: Schema.String,
|
|
31
|
-
description: Schema.
|
|
31
|
+
description: Schema.OptionFromNullOr(Schema.String),
|
|
32
32
|
start_at: Schemas.DateTimeFromDate,
|
|
33
|
-
end_at: Schema.
|
|
34
|
-
location: Schema.
|
|
35
|
-
series_id: Schema.
|
|
33
|
+
end_at: Schema.OptionFromNullOr(Schemas.DateTimeFromDate),
|
|
34
|
+
location: Schema.OptionFromNullOr(Schema.String),
|
|
35
|
+
series_id: Schema.OptionFromNullOr(EventSeriesId),
|
|
36
36
|
series_modified: Schema.Boolean,
|
|
37
37
|
status: Model.FieldExcept('update')(EventStatus),
|
|
38
38
|
created_by: TeamMemberId,
|
package/src/models/EventRsvp.ts
CHANGED
|
@@ -14,7 +14,7 @@ export class EventRsvp extends Model.Class<EventRsvp>('EventRsvp')({
|
|
|
14
14
|
event_id: EventId,
|
|
15
15
|
team_member_id: TeamMemberId,
|
|
16
16
|
response: RsvpResponse,
|
|
17
|
-
message: Schema.
|
|
17
|
+
message: Schema.OptionFromNullOr(Schema.String),
|
|
18
18
|
created_at: Model.DateTimeInsertFromDate,
|
|
19
19
|
updated_at: Model.DateTimeUpdateFromDate,
|
|
20
20
|
}) {}
|
|
@@ -13,22 +13,25 @@ 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
|
|
|
19
22
|
export class EventSeries extends Model.Class<EventSeries>('EventSeries')({
|
|
20
23
|
id: Model.Generated(EventSeriesId),
|
|
21
24
|
team_id: TeamId,
|
|
22
|
-
training_type_id: Schema.
|
|
25
|
+
training_type_id: Schema.OptionFromNullOr(TrainingTypeId),
|
|
23
26
|
title: Schema.String,
|
|
24
|
-
description: Schema.
|
|
27
|
+
description: Schema.OptionFromNullOr(Schema.String),
|
|
25
28
|
start_time: Schema.String,
|
|
26
|
-
end_time: Schema.
|
|
27
|
-
location: Schema.
|
|
29
|
+
end_time: Schema.OptionFromNullOr(Schema.String),
|
|
30
|
+
location: Schema.OptionFromNullOr(Schema.String),
|
|
28
31
|
frequency: RecurrenceFrequency,
|
|
29
|
-
|
|
32
|
+
days_of_week: DaysOfWeek,
|
|
30
33
|
start_date: Schema.DateFromSelf,
|
|
31
|
-
end_date: Schema.
|
|
34
|
+
end_date: Schema.OptionFromNullOr(Schema.DateFromSelf),
|
|
32
35
|
status: Model.FieldExcept('update')(EventSeriesStatus),
|
|
33
36
|
created_by: TeamMemberId,
|
|
34
37
|
created_at: Model.DateTimeInsertFromDate,
|
package/src/models/GroupModel.ts
CHANGED
|
@@ -8,8 +8,8 @@ export type GroupId = typeof GroupId.Type;
|
|
|
8
8
|
export class Group extends Model.Class<Group>('Group')({
|
|
9
9
|
id: Model.Generated(GroupId),
|
|
10
10
|
team_id: TeamId,
|
|
11
|
-
parent_id: Schema.
|
|
11
|
+
parent_id: Schema.OptionFromNullOr(GroupId),
|
|
12
12
|
name: Schema.String,
|
|
13
|
-
emoji: Schema.
|
|
13
|
+
emoji: Schema.OptionFromNullOr(Schema.String),
|
|
14
14
|
created_at: Model.DateTimeInsertFromDate,
|
|
15
15
|
}) {}
|
|
@@ -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.
|
|
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.
|
|
25
|
-
team_member_id: Schema.
|
|
26
|
-
discord_user_id: Schema.
|
|
27
|
-
processed_at: Schema.
|
|
28
|
-
error: Schema.
|
|
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
|
}) {}
|
package/src/models/TeamInvite.ts
CHANGED
|
@@ -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.
|
|
17
|
+
expires_at: Schema.OptionFromNullOr(Schemas.DateTimeFromDate),
|
|
18
18
|
}) {}
|
package/src/models/TeamMember.ts
CHANGED
|
@@ -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.
|
|
14
|
+
jersey_number: Model.FieldExcept('insert')(Schema.OptionFromNullOr(Schema.Number)),
|
|
15
15
|
joined_at: Model.DateTimeInsertFromDate,
|
|
16
16
|
}) {}
|