@sideline/domain 0.4.0 → 0.5.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 +14 -14
- package/dist/cjs/api/AgeThresholdApi.js.map +1 -1
- package/dist/cjs/api/Auth.js +14 -2
- package/dist/cjs/api/Auth.js.map +1 -1
- package/dist/cjs/api/GroupApi.js +205 -0
- package/dist/cjs/api/GroupApi.js.map +1 -0
- package/dist/cjs/api/NotificationApi.js +6 -2
- package/dist/cjs/api/NotificationApi.js.map +1 -1
- package/dist/cjs/api/TrainingTypeApi.js +9 -40
- package/dist/cjs/api/TrainingTypeApi.js.map +1 -1
- package/dist/cjs/index.js +9 -5
- package/dist/cjs/models/AgeThresholdRule.js +2 -2
- package/dist/cjs/models/AgeThresholdRule.js.map +1 -1
- package/dist/cjs/models/ChannelSyncEvent.js +3 -3
- package/dist/cjs/models/ChannelSyncEvent.js.map +1 -1
- package/dist/cjs/models/DiscordChannelMapping.js +2 -2
- package/dist/cjs/models/DiscordChannelMapping.js.map +1 -1
- package/dist/cjs/models/GroupModel.js +20 -0
- package/dist/cjs/models/GroupModel.js.map +1 -0
- package/dist/cjs/models/Notification.js +1 -1
- package/dist/cjs/models/Notification.js.map +1 -1
- package/dist/cjs/models/Role.js +2 -2
- package/dist/cjs/models/Role.js.map +1 -1
- package/dist/cjs/models/RoleGroup.js +15 -0
- package/dist/cjs/models/RoleGroup.js.map +1 -0
- package/dist/cjs/models/Team.js +2 -0
- package/dist/cjs/models/Team.js.map +1 -1
- package/dist/cjs/models/TrainingType.js +2 -0
- package/dist/cjs/models/TrainingType.js.map +1 -1
- package/dist/cjs/rpc/SyncRpcs.js +2 -1
- package/dist/cjs/rpc/SyncRpcs.js.map +1 -1
- package/dist/cjs/rpc/channel/ChannelRpcEvents.js +6 -6
- package/dist/cjs/rpc/channel/ChannelRpcEvents.js.map +1 -1
- package/dist/cjs/rpc/channel/ChannelRpcGroup.js +3 -3
- package/dist/cjs/rpc/channel/ChannelRpcGroup.js.map +1 -1
- package/dist/cjs/rpc/channel/ChannelRpcModels.js +1 -1
- package/dist/cjs/rpc/channel/ChannelRpcModels.js.map +1 -1
- package/dist/cjs/rpc/guild/GuildRpcGroup.js +35 -0
- package/dist/cjs/rpc/guild/GuildRpcGroup.js.map +1 -0
- package/dist/dts/api/AgeThresholdApi.d.ts +25 -25
- package/dist/dts/api/AgeThresholdApi.d.ts.map +1 -1
- package/dist/dts/api/Auth.d.ts +33 -4
- package/dist/dts/api/Auth.d.ts.map +1 -1
- package/dist/dts/api/GroupApi.d.ts +254 -0
- package/dist/dts/api/GroupApi.d.ts.map +1 -0
- package/dist/dts/api/NotificationApi.d.ts +9 -5
- package/dist/dts/api/NotificationApi.d.ts.map +1 -1
- package/dist/dts/api/RoleApi.d.ts +10 -10
- package/dist/dts/api/Roster.d.ts +5 -5
- package/dist/dts/api/TrainingTypeApi.d.ts +17 -42
- package/dist/dts/api/TrainingTypeApi.d.ts.map +1 -1
- package/dist/dts/index.d.ts +4 -2
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/models/AgeThresholdRule.d.ts +13 -13
- package/dist/dts/models/ChannelSyncEvent.d.ts +28 -28
- package/dist/dts/models/DiscordChannelMapping.d.ts +11 -11
- package/dist/dts/models/{SubgroupModel.d.ts → GroupModel.d.ts} +39 -13
- package/dist/dts/models/GroupModel.d.ts.map +1 -0
- package/dist/dts/models/Notification.d.ts +12 -12
- package/dist/dts/models/Notification.d.ts.map +1 -1
- package/dist/dts/models/Role.d.ts +4 -4
- package/dist/dts/models/Role.d.ts.map +1 -1
- package/dist/dts/models/RoleGroup.d.ts +16 -0
- package/dist/dts/models/RoleGroup.d.ts.map +1 -0
- package/dist/dts/models/RoleSyncEvent.d.ts +4 -4
- package/dist/dts/models/Team.d.ts +13 -0
- package/dist/dts/models/Team.d.ts.map +1 -1
- package/dist/dts/models/TrainingType.d.ts +13 -0
- package/dist/dts/models/TrainingType.d.ts.map +1 -1
- package/dist/dts/rpc/SyncRpcs.d.ts +18 -3
- package/dist/dts/rpc/SyncRpcs.d.ts.map +1 -1
- package/dist/dts/rpc/channel/ChannelRpcEvents.d.ts +6 -6
- package/dist/dts/rpc/channel/ChannelRpcGroup.d.ts +3 -3
- package/dist/dts/rpc/channel/ChannelRpcModels.d.ts +3 -3
- package/dist/dts/rpc/guild/GuildRpcGroup.d.ts +19 -0
- package/dist/dts/rpc/guild/GuildRpcGroup.d.ts.map +1 -0
- package/dist/esm/api/AgeThresholdApi.js +11 -11
- package/dist/esm/api/AgeThresholdApi.js.map +1 -1
- package/dist/esm/api/Auth.js +12 -1
- package/dist/esm/api/Auth.js.map +1 -1
- package/dist/esm/api/GroupApi.js +185 -0
- package/dist/esm/api/GroupApi.js.map +1 -0
- package/dist/esm/api/NotificationApi.js +6 -2
- package/dist/esm/api/NotificationApi.js.map +1 -1
- package/dist/esm/api/TrainingTypeApi.js +8 -37
- package/dist/esm/api/TrainingTypeApi.js.map +1 -1
- package/dist/esm/index.js +4 -2
- 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 +3 -3
- package/dist/esm/models/ChannelSyncEvent.js.map +1 -1
- package/dist/esm/models/DiscordChannelMapping.js +2 -2
- package/dist/esm/models/DiscordChannelMapping.js.map +1 -1
- package/dist/esm/models/GroupModel.js +13 -0
- package/dist/esm/models/GroupModel.js.map +1 -0
- package/dist/esm/models/Notification.js +1 -1
- package/dist/esm/models/Notification.js.map +1 -1
- package/dist/esm/models/Role.js +2 -2
- package/dist/esm/models/Role.js.map +1 -1
- package/dist/esm/models/RoleGroup.js +8 -0
- package/dist/esm/models/RoleGroup.js.map +1 -0
- package/dist/esm/models/Team.js +2 -0
- package/dist/esm/models/Team.js.map +1 -1
- package/dist/esm/models/TrainingType.js +2 -0
- package/dist/esm/models/TrainingType.js.map +1 -1
- package/dist/esm/rpc/SyncRpcs.js +2 -1
- package/dist/esm/rpc/SyncRpcs.js.map +1 -1
- package/dist/esm/rpc/channel/ChannelRpcEvents.js +7 -7
- package/dist/esm/rpc/channel/ChannelRpcEvents.js.map +1 -1
- package/dist/esm/rpc/channel/ChannelRpcGroup.js +4 -4
- package/dist/esm/rpc/channel/ChannelRpcGroup.js.map +1 -1
- package/dist/esm/rpc/channel/ChannelRpcModels.js +2 -2
- package/dist/esm/rpc/channel/ChannelRpcModels.js.map +1 -1
- package/dist/esm/rpc/guild/GuildRpcGroup.js +29 -0
- package/dist/esm/rpc/guild/GuildRpcGroup.js.map +1 -0
- package/package.json +1 -1
- package/src/api/AgeThresholdApi.ts +12 -12
- package/src/api/Auth.ts +16 -0
- package/src/api/GroupApi.ts +229 -0
- package/src/api/NotificationApi.ts +10 -0
- package/src/api/TrainingTypeApi.ts +5 -52
- package/src/index.ts +7 -4
- package/src/models/AgeThresholdRule.ts +2 -2
- package/src/models/ChannelSyncEvent.ts +3 -3
- package/src/models/DiscordChannelMapping.ts +2 -2
- package/src/models/GroupModel.ts +15 -0
- package/src/models/Notification.ts +2 -2
- package/src/models/Role.ts +4 -0
- package/src/models/RoleGroup.ts +8 -0
- package/src/models/Team.ts +2 -0
- package/src/models/TrainingType.ts +2 -0
- package/src/rpc/SyncRpcs.ts +2 -1
- package/src/rpc/channel/ChannelRpcEvents.ts +7 -7
- package/src/rpc/channel/ChannelRpcGroup.ts +4 -4
- package/src/rpc/channel/ChannelRpcModels.ts +2 -2
- package/src/rpc/guild/GuildRpcGroup.ts +29 -0
- package/dist/cjs/api/SubgroupApi.js +0 -122
- package/dist/cjs/api/SubgroupApi.js.map +0 -1
- package/dist/cjs/models/SubgroupModel.js +0 -18
- package/dist/cjs/models/SubgroupModel.js.map +0 -1
- package/dist/dts/api/SubgroupApi.d.ts +0 -140
- package/dist/dts/api/SubgroupApi.d.ts.map +0 -1
- package/dist/dts/models/SubgroupModel.d.ts.map +0 -1
- package/dist/esm/api/SubgroupApi.js +0 -106
- package/dist/esm/api/SubgroupApi.js.map +0 -1
- package/dist/esm/models/SubgroupModel.js +0 -11
- package/dist/esm/models/SubgroupModel.js.map +0 -1
- package/src/api/SubgroupApi.ts +0 -146
- package/src/models/SubgroupModel.ts +0 -13
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from '@effect/platform';
|
|
2
|
+
import { Schema } from 'effect';
|
|
3
|
+
import { AuthMiddleware } from '~/api/Auth.js';
|
|
4
|
+
import { Snowflake } from '~/models/Discord.js';
|
|
5
|
+
import { GroupId } from '~/models/GroupModel.js';
|
|
6
|
+
import { RoleId } from '~/models/Role.js';
|
|
7
|
+
import { TeamId } from '~/models/Team.js';
|
|
8
|
+
import { TeamMemberId } from '~/models/TeamMember.js';
|
|
9
|
+
|
|
10
|
+
export class GroupInfo extends Schema.Class<GroupInfo>('GroupInfo')({
|
|
11
|
+
groupId: GroupId,
|
|
12
|
+
teamId: TeamId,
|
|
13
|
+
parentId: Schema.NullOr(GroupId),
|
|
14
|
+
name: Schema.String,
|
|
15
|
+
emoji: Schema.NullOr(Schema.String),
|
|
16
|
+
memberCount: Schema.Number,
|
|
17
|
+
}) {}
|
|
18
|
+
|
|
19
|
+
export class GroupDetail extends Schema.Class<GroupDetail>('GroupDetail')({
|
|
20
|
+
groupId: GroupId,
|
|
21
|
+
teamId: TeamId,
|
|
22
|
+
parentId: Schema.NullOr(GroupId),
|
|
23
|
+
name: Schema.String,
|
|
24
|
+
emoji: Schema.NullOr(Schema.String),
|
|
25
|
+
roles: Schema.Array(
|
|
26
|
+
Schema.Struct({
|
|
27
|
+
roleId: RoleId,
|
|
28
|
+
roleName: Schema.String,
|
|
29
|
+
}),
|
|
30
|
+
),
|
|
31
|
+
members: Schema.Array(
|
|
32
|
+
Schema.Struct({
|
|
33
|
+
memberId: TeamMemberId,
|
|
34
|
+
name: Schema.NullOr(Schema.String),
|
|
35
|
+
discordUsername: Schema.String,
|
|
36
|
+
}),
|
|
37
|
+
),
|
|
38
|
+
}) {}
|
|
39
|
+
|
|
40
|
+
export class CreateGroupRequest extends Schema.Class<CreateGroupRequest>('CreateGroupRequest')({
|
|
41
|
+
name: Schema.NonEmptyString,
|
|
42
|
+
parentId: Schema.NullOr(GroupId),
|
|
43
|
+
emoji: Schema.NullOr(Schema.String),
|
|
44
|
+
}) {}
|
|
45
|
+
|
|
46
|
+
export class UpdateGroupRequest extends Schema.Class<UpdateGroupRequest>('UpdateGroupRequest')({
|
|
47
|
+
name: Schema.NonEmptyString,
|
|
48
|
+
emoji: Schema.NullOr(Schema.String),
|
|
49
|
+
}) {}
|
|
50
|
+
|
|
51
|
+
export class AddGroupMemberRequest extends Schema.Class<AddGroupMemberRequest>(
|
|
52
|
+
'AddGroupMemberRequest',
|
|
53
|
+
)({
|
|
54
|
+
memberId: TeamMemberId,
|
|
55
|
+
}) {}
|
|
56
|
+
|
|
57
|
+
export class AssignGroupRoleRequest extends Schema.Class<AssignGroupRoleRequest>(
|
|
58
|
+
'AssignGroupRoleRequest',
|
|
59
|
+
)({
|
|
60
|
+
roleId: RoleId,
|
|
61
|
+
}) {}
|
|
62
|
+
|
|
63
|
+
export class MoveGroupRequest extends Schema.Class<MoveGroupRequest>('MoveGroupRequest')({
|
|
64
|
+
parentId: Schema.NullOr(GroupId),
|
|
65
|
+
}) {}
|
|
66
|
+
|
|
67
|
+
export class ChannelMappingInfo extends Schema.Class<ChannelMappingInfo>('ChannelMappingInfo')({
|
|
68
|
+
discordChannelId: Snowflake,
|
|
69
|
+
discordChannelName: Schema.NullOr(Schema.String),
|
|
70
|
+
discordRoleId: Schema.NullOr(Snowflake),
|
|
71
|
+
}) {}
|
|
72
|
+
|
|
73
|
+
export class SetChannelMappingRequest extends Schema.Class<SetChannelMappingRequest>(
|
|
74
|
+
'SetChannelMappingRequest',
|
|
75
|
+
)({
|
|
76
|
+
discordChannelId: Snowflake,
|
|
77
|
+
}) {}
|
|
78
|
+
|
|
79
|
+
export class DiscordChannelInfo extends Schema.Class<DiscordChannelInfo>('DiscordChannelInfo')({
|
|
80
|
+
id: Snowflake,
|
|
81
|
+
name: Schema.String,
|
|
82
|
+
type: Schema.Number,
|
|
83
|
+
parentId: Schema.NullOr(Snowflake),
|
|
84
|
+
}) {}
|
|
85
|
+
|
|
86
|
+
export class GroupNotFound extends Schema.TaggedError<GroupNotFound>()(
|
|
87
|
+
'GroupNotFound',
|
|
88
|
+
{},
|
|
89
|
+
HttpApiSchema.annotations({ status: 404 }),
|
|
90
|
+
) {}
|
|
91
|
+
|
|
92
|
+
export class Forbidden extends Schema.TaggedError<Forbidden>()(
|
|
93
|
+
'GroupForbidden',
|
|
94
|
+
{},
|
|
95
|
+
HttpApiSchema.annotations({ status: 403 }),
|
|
96
|
+
) {}
|
|
97
|
+
|
|
98
|
+
export class MemberNotFound extends Schema.TaggedError<MemberNotFound>()(
|
|
99
|
+
'GroupMemberNotFound',
|
|
100
|
+
{},
|
|
101
|
+
HttpApiSchema.annotations({ status: 404 }),
|
|
102
|
+
) {}
|
|
103
|
+
|
|
104
|
+
export class GroupApiGroup extends HttpApiGroup.make('group')
|
|
105
|
+
.add(
|
|
106
|
+
HttpApiEndpoint.get('listGroups', '/teams/:teamId/groups')
|
|
107
|
+
.addSuccess(Schema.Array(GroupInfo))
|
|
108
|
+
.addError(Forbidden, { status: 403 })
|
|
109
|
+
.setPath(Schema.Struct({ teamId: TeamId }))
|
|
110
|
+
.middleware(AuthMiddleware),
|
|
111
|
+
)
|
|
112
|
+
.add(
|
|
113
|
+
HttpApiEndpoint.post('createGroup', '/teams/:teamId/groups')
|
|
114
|
+
.addSuccess(GroupInfo, { status: 201 })
|
|
115
|
+
.addError(Forbidden, { status: 403 })
|
|
116
|
+
.setPath(Schema.Struct({ teamId: TeamId }))
|
|
117
|
+
.setPayload(CreateGroupRequest)
|
|
118
|
+
.middleware(AuthMiddleware),
|
|
119
|
+
)
|
|
120
|
+
.add(
|
|
121
|
+
HttpApiEndpoint.get('getGroup', '/teams/:teamId/groups/:groupId')
|
|
122
|
+
.addSuccess(GroupDetail)
|
|
123
|
+
.addError(Forbidden, { status: 403 })
|
|
124
|
+
.addError(GroupNotFound, { status: 404 })
|
|
125
|
+
.setPath(Schema.Struct({ teamId: TeamId, groupId: GroupId }))
|
|
126
|
+
.middleware(AuthMiddleware),
|
|
127
|
+
)
|
|
128
|
+
.add(
|
|
129
|
+
HttpApiEndpoint.patch('updateGroup', '/teams/:teamId/groups/:groupId')
|
|
130
|
+
.addSuccess(GroupInfo)
|
|
131
|
+
.addError(Forbidden, { status: 403 })
|
|
132
|
+
.addError(GroupNotFound, { status: 404 })
|
|
133
|
+
.setPath(Schema.Struct({ teamId: TeamId, groupId: GroupId }))
|
|
134
|
+
.setPayload(UpdateGroupRequest)
|
|
135
|
+
.middleware(AuthMiddleware),
|
|
136
|
+
)
|
|
137
|
+
.add(
|
|
138
|
+
HttpApiEndpoint.del('deleteGroup', '/teams/:teamId/groups/:groupId')
|
|
139
|
+
.addSuccess(Schema.Void)
|
|
140
|
+
.addError(Forbidden, { status: 403 })
|
|
141
|
+
.addError(GroupNotFound, { status: 404 })
|
|
142
|
+
.setPath(Schema.Struct({ teamId: TeamId, groupId: GroupId }))
|
|
143
|
+
.middleware(AuthMiddleware),
|
|
144
|
+
)
|
|
145
|
+
.add(
|
|
146
|
+
HttpApiEndpoint.post('addGroupMember', '/teams/:teamId/groups/:groupId/members')
|
|
147
|
+
.addSuccess(Schema.Void, { status: 204 })
|
|
148
|
+
.addError(Forbidden, { status: 403 })
|
|
149
|
+
.addError(GroupNotFound, { status: 404 })
|
|
150
|
+
.addError(MemberNotFound, { status: 404 })
|
|
151
|
+
.setPath(Schema.Struct({ teamId: TeamId, groupId: GroupId }))
|
|
152
|
+
.setPayload(AddGroupMemberRequest)
|
|
153
|
+
.middleware(AuthMiddleware),
|
|
154
|
+
)
|
|
155
|
+
.add(
|
|
156
|
+
HttpApiEndpoint.del('removeGroupMember', '/teams/:teamId/groups/:groupId/members/:memberId')
|
|
157
|
+
.addSuccess(Schema.Void)
|
|
158
|
+
.addError(Forbidden, { status: 403 })
|
|
159
|
+
.addError(GroupNotFound, { status: 404 })
|
|
160
|
+
.addError(MemberNotFound, { status: 404 })
|
|
161
|
+
.setPath(Schema.Struct({ teamId: TeamId, groupId: GroupId, memberId: TeamMemberId }))
|
|
162
|
+
.middleware(AuthMiddleware),
|
|
163
|
+
)
|
|
164
|
+
.add(
|
|
165
|
+
HttpApiEndpoint.post('assignGroupRole', '/teams/:teamId/groups/:groupId/roles')
|
|
166
|
+
.addSuccess(Schema.Void, { status: 204 })
|
|
167
|
+
.addError(Forbidden, { status: 403 })
|
|
168
|
+
.addError(GroupNotFound, { status: 404 })
|
|
169
|
+
.setPath(Schema.Struct({ teamId: TeamId, groupId: GroupId }))
|
|
170
|
+
.setPayload(AssignGroupRoleRequest)
|
|
171
|
+
.middleware(AuthMiddleware),
|
|
172
|
+
)
|
|
173
|
+
.add(
|
|
174
|
+
HttpApiEndpoint.del('unassignGroupRole', '/teams/:teamId/groups/:groupId/roles/:roleId')
|
|
175
|
+
.addSuccess(Schema.Void)
|
|
176
|
+
.addError(Forbidden, { status: 403 })
|
|
177
|
+
.addError(GroupNotFound, { status: 404 })
|
|
178
|
+
.setPath(Schema.Struct({ teamId: TeamId, groupId: GroupId, roleId: RoleId }))
|
|
179
|
+
.middleware(AuthMiddleware),
|
|
180
|
+
)
|
|
181
|
+
.add(
|
|
182
|
+
HttpApiEndpoint.patch('moveGroup', '/teams/:teamId/groups/:groupId/parent')
|
|
183
|
+
.addSuccess(GroupInfo)
|
|
184
|
+
.addError(Forbidden, { status: 403 })
|
|
185
|
+
.addError(GroupNotFound, { status: 404 })
|
|
186
|
+
.setPath(Schema.Struct({ teamId: TeamId, groupId: GroupId }))
|
|
187
|
+
.setPayload(MoveGroupRequest)
|
|
188
|
+
.middleware(AuthMiddleware),
|
|
189
|
+
)
|
|
190
|
+
.add(
|
|
191
|
+
HttpApiEndpoint.get('getChannelMapping', '/teams/:teamId/groups/:groupId/channel-mapping')
|
|
192
|
+
.addSuccess(Schema.NullOr(ChannelMappingInfo))
|
|
193
|
+
.addError(Forbidden, { status: 403 })
|
|
194
|
+
.addError(GroupNotFound, { status: 404 })
|
|
195
|
+
.setPath(Schema.Struct({ teamId: TeamId, groupId: GroupId }))
|
|
196
|
+
.middleware(AuthMiddleware),
|
|
197
|
+
)
|
|
198
|
+
.add(
|
|
199
|
+
HttpApiEndpoint.put('setChannelMapping', '/teams/:teamId/groups/:groupId/channel-mapping')
|
|
200
|
+
.addSuccess(ChannelMappingInfo)
|
|
201
|
+
.addError(Forbidden, { status: 403 })
|
|
202
|
+
.addError(GroupNotFound, { status: 404 })
|
|
203
|
+
.setPath(Schema.Struct({ teamId: TeamId, groupId: GroupId }))
|
|
204
|
+
.setPayload(SetChannelMappingRequest)
|
|
205
|
+
.middleware(AuthMiddleware),
|
|
206
|
+
)
|
|
207
|
+
.add(
|
|
208
|
+
HttpApiEndpoint.del('deleteChannelMapping', '/teams/:teamId/groups/:groupId/channel-mapping')
|
|
209
|
+
.addSuccess(Schema.Void)
|
|
210
|
+
.addError(Forbidden, { status: 403 })
|
|
211
|
+
.addError(GroupNotFound, { status: 404 })
|
|
212
|
+
.setPath(Schema.Struct({ teamId: TeamId, groupId: GroupId }))
|
|
213
|
+
.middleware(AuthMiddleware),
|
|
214
|
+
)
|
|
215
|
+
.add(
|
|
216
|
+
HttpApiEndpoint.post('createChannel', '/teams/:teamId/groups/:groupId/create-channel')
|
|
217
|
+
.addSuccess(Schema.Void, { status: 201 })
|
|
218
|
+
.addError(Forbidden, { status: 403 })
|
|
219
|
+
.addError(GroupNotFound, { status: 404 })
|
|
220
|
+
.setPath(Schema.Struct({ teamId: TeamId, groupId: GroupId }))
|
|
221
|
+
.middleware(AuthMiddleware),
|
|
222
|
+
)
|
|
223
|
+
.add(
|
|
224
|
+
HttpApiEndpoint.get('listDiscordChannels', '/teams/:teamId/discord-channels')
|
|
225
|
+
.addSuccess(Schema.Array(DiscordChannelInfo))
|
|
226
|
+
.addError(Forbidden, { status: 403 })
|
|
227
|
+
.setPath(Schema.Struct({ teamId: TeamId }))
|
|
228
|
+
.middleware(AuthMiddleware),
|
|
229
|
+
) {}
|
|
@@ -31,6 +31,11 @@ export class NotificationApiGroup extends HttpApiGroup.make('notification')
|
|
|
31
31
|
HttpApiEndpoint.get('listNotifications', '/notifications')
|
|
32
32
|
.addSuccess(Schema.Array(NotificationInfo))
|
|
33
33
|
.addError(Forbidden, { status: 403 })
|
|
34
|
+
.setUrlParams(
|
|
35
|
+
Schema.Struct({
|
|
36
|
+
teamId: TeamId,
|
|
37
|
+
}),
|
|
38
|
+
)
|
|
34
39
|
.middleware(AuthMiddleware),
|
|
35
40
|
)
|
|
36
41
|
.add(
|
|
@@ -45,5 +50,10 @@ export class NotificationApiGroup extends HttpApiGroup.make('notification')
|
|
|
45
50
|
HttpApiEndpoint.post('markAllAsRead', '/notifications/read-all')
|
|
46
51
|
.addSuccess(Schema.Void)
|
|
47
52
|
.addError(Forbidden, { status: 403 })
|
|
53
|
+
.setPayload(
|
|
54
|
+
Schema.Struct({
|
|
55
|
+
teamId: TeamId,
|
|
56
|
+
}),
|
|
57
|
+
)
|
|
48
58
|
.middleware(AuthMiddleware),
|
|
49
59
|
) {}
|
|
@@ -1,29 +1,24 @@
|
|
|
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 { GroupId } from '~/models/GroupModel.js';
|
|
4
5
|
import { TeamId } from '~/models/Team.js';
|
|
5
|
-
import { TeamMemberId } from '~/models/TeamMember.js';
|
|
6
6
|
import { TrainingTypeId } from '~/models/TrainingType.js';
|
|
7
7
|
|
|
8
8
|
export class TrainingTypeInfo extends Schema.Class<TrainingTypeInfo>('TrainingTypeInfo')({
|
|
9
9
|
trainingTypeId: TrainingTypeId,
|
|
10
10
|
teamId: TeamId,
|
|
11
11
|
name: Schema.String,
|
|
12
|
-
|
|
12
|
+
groupName: Schema.NullOr(Schema.String),
|
|
13
13
|
}) {}
|
|
14
14
|
|
|
15
15
|
export class TrainingTypeDetail extends Schema.Class<TrainingTypeDetail>('TrainingTypeDetail')({
|
|
16
16
|
trainingTypeId: TrainingTypeId,
|
|
17
17
|
teamId: TeamId,
|
|
18
18
|
name: Schema.String,
|
|
19
|
+
groupId: Schema.NullOr(GroupId),
|
|
20
|
+
groupName: Schema.NullOr(Schema.String),
|
|
19
21
|
canAdmin: Schema.Boolean,
|
|
20
|
-
coaches: Schema.Array(
|
|
21
|
-
Schema.Struct({
|
|
22
|
-
memberId: TeamMemberId,
|
|
23
|
-
name: Schema.NullOr(Schema.String),
|
|
24
|
-
discordUsername: Schema.String,
|
|
25
|
-
}),
|
|
26
|
-
),
|
|
27
22
|
}) {}
|
|
28
23
|
|
|
29
24
|
export class TrainingTypeListResponse extends Schema.Class<TrainingTypeListResponse>(
|
|
@@ -37,6 +32,7 @@ export class CreateTrainingTypeRequest extends Schema.Class<CreateTrainingTypeRe
|
|
|
37
32
|
'CreateTrainingTypeRequest',
|
|
38
33
|
)({
|
|
39
34
|
name: Schema.NonEmptyString,
|
|
35
|
+
groupId: Schema.NullOr(GroupId),
|
|
40
36
|
}) {}
|
|
41
37
|
|
|
42
38
|
export class UpdateTrainingTypeRequest extends Schema.Class<UpdateTrainingTypeRequest>(
|
|
@@ -45,12 +41,6 @@ export class UpdateTrainingTypeRequest extends Schema.Class<UpdateTrainingTypeRe
|
|
|
45
41
|
name: Schema.NonEmptyString,
|
|
46
42
|
}) {}
|
|
47
43
|
|
|
48
|
-
export class AddTrainingTypeCoachRequest extends Schema.Class<AddTrainingTypeCoachRequest>(
|
|
49
|
-
'AddTrainingTypeCoachRequest',
|
|
50
|
-
)({
|
|
51
|
-
memberId: TeamMemberId,
|
|
52
|
-
}) {}
|
|
53
|
-
|
|
54
44
|
export class TrainingTypeNotFound extends Schema.TaggedError<TrainingTypeNotFound>()(
|
|
55
45
|
'TrainingTypeNotFound',
|
|
56
46
|
{},
|
|
@@ -63,12 +53,6 @@ export class Forbidden extends Schema.TaggedError<Forbidden>()(
|
|
|
63
53
|
HttpApiSchema.annotations({ status: 403 }),
|
|
64
54
|
) {}
|
|
65
55
|
|
|
66
|
-
export class MemberNotFound extends Schema.TaggedError<MemberNotFound>()(
|
|
67
|
-
'TrainingTypeMemberNotFound',
|
|
68
|
-
{},
|
|
69
|
-
HttpApiSchema.annotations({ status: 404 }),
|
|
70
|
-
) {}
|
|
71
|
-
|
|
72
56
|
export class TrainingTypeApiGroup extends HttpApiGroup.make('trainingType')
|
|
73
57
|
.add(
|
|
74
58
|
HttpApiEndpoint.get('listTrainingTypes', '/teams/:teamId/training-types')
|
|
@@ -109,35 +93,4 @@ export class TrainingTypeApiGroup extends HttpApiGroup.make('trainingType')
|
|
|
109
93
|
.addError(TrainingTypeNotFound, { status: 404 })
|
|
110
94
|
.setPath(Schema.Struct({ teamId: TeamId, trainingTypeId: TrainingTypeId }))
|
|
111
95
|
.middleware(AuthMiddleware),
|
|
112
|
-
)
|
|
113
|
-
.add(
|
|
114
|
-
HttpApiEndpoint.post(
|
|
115
|
-
'addTrainingTypeCoach',
|
|
116
|
-
'/teams/:teamId/training-types/:trainingTypeId/coaches',
|
|
117
|
-
)
|
|
118
|
-
.addSuccess(Schema.Void, { status: 204 })
|
|
119
|
-
.addError(Forbidden, { status: 403 })
|
|
120
|
-
.addError(TrainingTypeNotFound, { status: 404 })
|
|
121
|
-
.addError(MemberNotFound, { status: 404 })
|
|
122
|
-
.setPath(Schema.Struct({ teamId: TeamId, trainingTypeId: TrainingTypeId }))
|
|
123
|
-
.setPayload(AddTrainingTypeCoachRequest)
|
|
124
|
-
.middleware(AuthMiddleware),
|
|
125
|
-
)
|
|
126
|
-
.add(
|
|
127
|
-
HttpApiEndpoint.del(
|
|
128
|
-
'removeTrainingTypeCoach',
|
|
129
|
-
'/teams/:teamId/training-types/:trainingTypeId/coaches/:memberId',
|
|
130
|
-
)
|
|
131
|
-
.addSuccess(Schema.Void)
|
|
132
|
-
.addError(Forbidden, { status: 403 })
|
|
133
|
-
.addError(TrainingTypeNotFound, { status: 404 })
|
|
134
|
-
.addError(MemberNotFound, { status: 404 })
|
|
135
|
-
.setPath(
|
|
136
|
-
Schema.Struct({
|
|
137
|
-
teamId: TeamId,
|
|
138
|
-
trainingTypeId: TrainingTypeId,
|
|
139
|
-
memberId: TeamMemberId,
|
|
140
|
-
}),
|
|
141
|
-
)
|
|
142
|
-
.middleware(AuthMiddleware),
|
|
143
96
|
) {}
|
package/src/index.ts
CHANGED
|
@@ -4,6 +4,8 @@ export * as AgeThresholdApi from './api/AgeThresholdApi.js';
|
|
|
4
4
|
|
|
5
5
|
export * as Auth from './api/Auth.js';
|
|
6
6
|
|
|
7
|
+
export * as GroupApi from './api/GroupApi.js';
|
|
8
|
+
|
|
7
9
|
export * as Invite from './api/Invite.js';
|
|
8
10
|
|
|
9
11
|
export * as NotificationApi from './api/NotificationApi.js';
|
|
@@ -12,8 +14,6 @@ export * as RoleApi from './api/RoleApi.js';
|
|
|
12
14
|
|
|
13
15
|
export * as Roster from './api/Roster.js';
|
|
14
16
|
|
|
15
|
-
export * as SubgroupApi from './api/SubgroupApi.js';
|
|
16
|
-
|
|
17
17
|
export * as TrainingTypeApi from './api/TrainingTypeApi.js';
|
|
18
18
|
|
|
19
19
|
export * as AgeThresholdRule from './models/AgeThresholdRule.js';
|
|
@@ -26,12 +26,16 @@ export * as DiscordChannelMapping from './models/DiscordChannelMapping.js';
|
|
|
26
26
|
|
|
27
27
|
export * as DiscordRoleMapping from './models/DiscordRoleMapping.js';
|
|
28
28
|
|
|
29
|
+
export * as GroupModel from './models/GroupModel.js';
|
|
30
|
+
|
|
29
31
|
export * as MemberRole from './models/MemberRole.js';
|
|
30
32
|
|
|
31
33
|
export * as Notification from './models/Notification.js';
|
|
32
34
|
|
|
33
35
|
export * as Role from './models/Role.js';
|
|
34
36
|
|
|
37
|
+
export * as RoleGroup from './models/RoleGroup.js';
|
|
38
|
+
|
|
35
39
|
export * as RoleSyncEvent from './models/RoleSyncEvent.js';
|
|
36
40
|
|
|
37
41
|
export * as RosterMemberModel from './models/RosterMemberModel.js';
|
|
@@ -40,8 +44,6 @@ export * as RosterModel from './models/RosterModel.js';
|
|
|
40
44
|
|
|
41
45
|
export * as Session from './models/Session.js';
|
|
42
46
|
|
|
43
|
-
export * as SubgroupModel from './models/SubgroupModel.js';
|
|
44
|
-
|
|
45
47
|
export * as Team from './models/Team.js';
|
|
46
48
|
|
|
47
49
|
export * as TeamInvite from './models/TeamInvite.js';
|
|
@@ -54,6 +56,7 @@ export * as User from './models/User.js';
|
|
|
54
56
|
export * as ChannelRpcEvents from './rpc/channel/ChannelRpcEvents.js';
|
|
55
57
|
export * as ChannelRpcGroup from './rpc/channel/ChannelRpcGroup.js';
|
|
56
58
|
export * as ChannelRpcModels from './rpc/channel/ChannelRpcModels.js';
|
|
59
|
+
export * as GuildRpcGroup from './rpc/guild/GuildRpcGroup.js';
|
|
57
60
|
export * as RoleRpcEvents from './rpc/role/RoleRpcEvents.js';
|
|
58
61
|
export * as RoleRpcGroup from './rpc/role/RoleRpcGroup.js';
|
|
59
62
|
export * as RoleRpcModels from './rpc/role/RoleRpcModels.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Model } from '@effect/sql';
|
|
2
2
|
import { Schema } from 'effect';
|
|
3
|
-
import {
|
|
3
|
+
import { GroupId } from '~/models/GroupModel.js';
|
|
4
4
|
import { TeamId } from '~/models/Team.js';
|
|
5
5
|
|
|
6
6
|
export const AgeThresholdRuleId = Schema.String.pipe(Schema.brand('AgeThresholdRuleId'));
|
|
@@ -9,7 +9,7 @@ export type AgeThresholdRuleId = typeof AgeThresholdRuleId.Type;
|
|
|
9
9
|
export class AgeThresholdRule extends Model.Class<AgeThresholdRule>('AgeThresholdRule')({
|
|
10
10
|
id: Model.Generated(AgeThresholdRuleId),
|
|
11
11
|
team_id: TeamId,
|
|
12
|
-
|
|
12
|
+
group_id: GroupId,
|
|
13
13
|
min_age: Schema.NullOr(Schema.Number),
|
|
14
14
|
max_age: Schema.NullOr(Schema.Number),
|
|
15
15
|
created_at: Model.DateTimeInsertFromDate,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Model } from '@effect/sql';
|
|
2
2
|
import { Schema } from 'effect';
|
|
3
|
-
import {
|
|
3
|
+
import { GroupId } from '~/models/GroupModel.js';
|
|
4
4
|
import { TeamId } from '~/models/Team.js';
|
|
5
5
|
import { TeamMemberId } from '~/models/TeamMember.js';
|
|
6
6
|
|
|
@@ -20,8 +20,8 @@ export class ChannelSyncEvent extends Model.Class<ChannelSyncEvent>('ChannelSync
|
|
|
20
20
|
team_id: TeamId,
|
|
21
21
|
guild_id: Schema.String,
|
|
22
22
|
event_type: ChannelSyncEventType,
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
group_id: GroupId,
|
|
24
|
+
group_name: Schema.NullOr(Schema.String),
|
|
25
25
|
team_member_id: Schema.NullOr(TeamMemberId),
|
|
26
26
|
discord_user_id: Schema.NullOr(Schema.String),
|
|
27
27
|
processed_at: Schema.NullOr(Schema.String),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Model } from '@effect/sql';
|
|
2
2
|
import { Schema } from 'effect';
|
|
3
|
-
import {
|
|
3
|
+
import { GroupId } from '~/models/GroupModel.js';
|
|
4
4
|
import { TeamId } from '~/models/Team.js';
|
|
5
5
|
|
|
6
6
|
export const DiscordChannelMappingId = Schema.String.pipe(Schema.brand('DiscordChannelMappingId'));
|
|
@@ -11,7 +11,7 @@ export class DiscordChannelMapping extends Model.Class<DiscordChannelMapping>(
|
|
|
11
11
|
)({
|
|
12
12
|
id: Model.Generated(DiscordChannelMappingId),
|
|
13
13
|
team_id: TeamId,
|
|
14
|
-
|
|
14
|
+
group_id: GroupId,
|
|
15
15
|
discord_channel_id: Schema.String,
|
|
16
16
|
discord_role_id: Schema.OptionFromNullOr(Schema.String),
|
|
17
17
|
created_at: Model.DateTimeInsertFromDate,
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Model } from '@effect/sql';
|
|
2
|
+
import { Schema } from 'effect';
|
|
3
|
+
import { TeamId } from '~/models/Team.js';
|
|
4
|
+
|
|
5
|
+
export const GroupId = Schema.String.pipe(Schema.brand('GroupId'));
|
|
6
|
+
export type GroupId = typeof GroupId.Type;
|
|
7
|
+
|
|
8
|
+
export class Group extends Model.Class<Group>('Group')({
|
|
9
|
+
id: Model.Generated(GroupId),
|
|
10
|
+
team_id: TeamId,
|
|
11
|
+
parent_id: Schema.NullOr(GroupId),
|
|
12
|
+
name: Schema.String,
|
|
13
|
+
emoji: Schema.NullOr(Schema.String),
|
|
14
|
+
created_at: Model.DateTimeInsertFromDate,
|
|
15
|
+
}) {}
|
|
@@ -7,8 +7,8 @@ export const NotificationId = Schema.String.pipe(Schema.brand('NotificationId'))
|
|
|
7
7
|
export type NotificationId = typeof NotificationId.Type;
|
|
8
8
|
|
|
9
9
|
export const NotificationType = Schema.Literal(
|
|
10
|
-
'
|
|
11
|
-
'
|
|
10
|
+
'age_group_added',
|
|
11
|
+
'age_group_removed',
|
|
12
12
|
'role_assigned',
|
|
13
13
|
'role_removed',
|
|
14
14
|
);
|
package/src/models/Role.ts
CHANGED
|
@@ -15,6 +15,8 @@ export const Permission = Schema.Literal(
|
|
|
15
15
|
'member:remove',
|
|
16
16
|
'role:view',
|
|
17
17
|
'role:manage',
|
|
18
|
+
'training-type:create',
|
|
19
|
+
'training-type:delete',
|
|
18
20
|
);
|
|
19
21
|
export type Permission = typeof Permission.Type;
|
|
20
22
|
|
|
@@ -32,6 +34,8 @@ export const defaultPermissions: Record<string, ReadonlyArray<Permission>> = {
|
|
|
32
34
|
'member:remove',
|
|
33
35
|
'role:view',
|
|
34
36
|
'role:manage',
|
|
37
|
+
'training-type:create',
|
|
38
|
+
'training-type:delete',
|
|
35
39
|
],
|
|
36
40
|
Captain: ['roster:view', 'roster:manage', 'member:view', 'member:edit', 'role:view'],
|
|
37
41
|
Player: ['roster:view', 'member:view'],
|
package/src/models/Team.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Model } from '@effect/sql';
|
|
2
2
|
import { Schema } from 'effect';
|
|
3
|
+
import { Snowflake } from '~/models/Discord.js';
|
|
3
4
|
import { UserId } from '~/models/User.js';
|
|
4
5
|
|
|
5
6
|
export const TeamId = Schema.String.pipe(Schema.brand('TeamId'));
|
|
@@ -8,6 +9,7 @@ export type TeamId = typeof TeamId.Type;
|
|
|
8
9
|
export class Team extends Model.Class<Team>('Team')({
|
|
9
10
|
id: Model.Generated(TeamId),
|
|
10
11
|
name: Schema.String,
|
|
12
|
+
guild_id: Snowflake,
|
|
11
13
|
created_by: UserId,
|
|
12
14
|
created_at: Model.DateTimeInsertFromDate,
|
|
13
15
|
updated_at: Model.DateTimeUpdateFromDate,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Model } from '@effect/sql';
|
|
2
2
|
import { Schema } from 'effect';
|
|
3
|
+
import { GroupId } from '~/models/GroupModel.js';
|
|
3
4
|
import { TeamId } from '~/models/Team.js';
|
|
4
5
|
|
|
5
6
|
export const TrainingTypeId = Schema.String.pipe(Schema.brand('TrainingTypeId'));
|
|
@@ -9,5 +10,6 @@ export class TrainingType extends Model.Class<TrainingType>('TrainingType')({
|
|
|
9
10
|
id: Model.Generated(TrainingTypeId),
|
|
10
11
|
team_id: TeamId,
|
|
11
12
|
name: Schema.String,
|
|
13
|
+
group_id: Schema.NullOr(GroupId),
|
|
12
14
|
created_at: Model.DateTimeInsertFromDate,
|
|
13
15
|
}) {}
|
package/src/rpc/SyncRpcs.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { RpcGroup } from '@effect/rpc';
|
|
2
2
|
import { ChannelRpcGroup } from './channel/ChannelRpcGroup.js';
|
|
3
|
+
import { GuildRpcGroup } from './guild/GuildRpcGroup.js';
|
|
3
4
|
import { RoleRpcGroup } from './role/RoleRpcGroup.js';
|
|
4
5
|
|
|
5
|
-
export class SyncRpcs extends RpcGroup.make().merge(RoleRpcGroup, ChannelRpcGroup) {}
|
|
6
|
+
export class SyncRpcs extends RpcGroup.make().merge(RoleRpcGroup, ChannelRpcGroup, GuildRpcGroup) {}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Schema } from 'effect';
|
|
2
|
-
import { ChannelSyncEvent, Discord,
|
|
2
|
+
import { ChannelSyncEvent, Discord, GroupModel, Team, TeamMember } from '~/index.js';
|
|
3
3
|
|
|
4
4
|
export class ChannelCreatedEvent extends Schema.TaggedClass<ChannelCreatedEvent>()(
|
|
5
5
|
'channel_created',
|
|
@@ -7,8 +7,8 @@ export class ChannelCreatedEvent extends Schema.TaggedClass<ChannelCreatedEvent>
|
|
|
7
7
|
id: ChannelSyncEvent.ChannelSyncEventId,
|
|
8
8
|
team_id: Team.TeamId,
|
|
9
9
|
guild_id: Discord.Snowflake,
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
group_id: GroupModel.GroupId,
|
|
11
|
+
group_name: Schema.String,
|
|
12
12
|
},
|
|
13
13
|
) {}
|
|
14
14
|
|
|
@@ -18,7 +18,7 @@ export class ChannelDeletedEvent extends Schema.TaggedClass<ChannelDeletedEvent>
|
|
|
18
18
|
id: ChannelSyncEvent.ChannelSyncEventId,
|
|
19
19
|
team_id: Team.TeamId,
|
|
20
20
|
guild_id: Discord.Snowflake,
|
|
21
|
-
|
|
21
|
+
group_id: GroupModel.GroupId,
|
|
22
22
|
},
|
|
23
23
|
) {}
|
|
24
24
|
|
|
@@ -28,8 +28,8 @@ export class ChannelMemberAddedEvent extends Schema.TaggedClass<ChannelMemberAdd
|
|
|
28
28
|
id: ChannelSyncEvent.ChannelSyncEventId,
|
|
29
29
|
team_id: Team.TeamId,
|
|
30
30
|
guild_id: Discord.Snowflake,
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
group_id: GroupModel.GroupId,
|
|
32
|
+
group_name: Schema.String,
|
|
33
33
|
team_member_id: TeamMember.TeamMemberId,
|
|
34
34
|
discord_user_id: Discord.Snowflake,
|
|
35
35
|
},
|
|
@@ -41,7 +41,7 @@ export class ChannelMemberRemovedEvent extends Schema.TaggedClass<ChannelMemberR
|
|
|
41
41
|
id: ChannelSyncEvent.ChannelSyncEventId,
|
|
42
42
|
team_id: Team.TeamId,
|
|
43
43
|
guild_id: Discord.Snowflake,
|
|
44
|
-
|
|
44
|
+
group_id: GroupModel.GroupId,
|
|
45
45
|
team_member_id: TeamMember.TeamMemberId,
|
|
46
46
|
discord_user_id: Discord.Snowflake,
|
|
47
47
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Rpc, RpcGroup } from '@effect/rpc';
|
|
2
2
|
import { Schema } from 'effect';
|
|
3
|
-
import { ChannelSyncEvent, Discord,
|
|
3
|
+
import { ChannelSyncEvent, Discord, GroupModel, Team } from '~/index.js';
|
|
4
4
|
import { UnprocessedChannelEvent } from './ChannelRpcEvents.js';
|
|
5
5
|
import { ChannelMapping } from './ChannelRpcModels.js';
|
|
6
6
|
|
|
@@ -16,18 +16,18 @@ export const ChannelRpcGroup = RpcGroup.make(
|
|
|
16
16
|
payload: { id: ChannelSyncEvent.ChannelSyncEventId, error: Schema.String },
|
|
17
17
|
}),
|
|
18
18
|
Rpc.make('GetMapping', {
|
|
19
|
-
payload: { team_id: Team.TeamId,
|
|
19
|
+
payload: { team_id: Team.TeamId, group_id: GroupModel.GroupId },
|
|
20
20
|
success: Schema.OptionFromNullOr(ChannelMapping),
|
|
21
21
|
}),
|
|
22
22
|
Rpc.make('UpsertMapping', {
|
|
23
23
|
payload: {
|
|
24
24
|
team_id: Team.TeamId,
|
|
25
|
-
|
|
25
|
+
group_id: GroupModel.GroupId,
|
|
26
26
|
discord_channel_id: Discord.Snowflake,
|
|
27
27
|
discord_role_id: Discord.Snowflake,
|
|
28
28
|
},
|
|
29
29
|
}),
|
|
30
30
|
Rpc.make('DeleteMapping', {
|
|
31
|
-
payload: { team_id: Team.TeamId,
|
|
31
|
+
payload: { team_id: Team.TeamId, group_id: GroupModel.GroupId },
|
|
32
32
|
}),
|
|
33
33
|
).prefix('Channel/');
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Schema } from 'effect';
|
|
2
|
-
import { Discord, DiscordChannelMapping,
|
|
2
|
+
import { Discord, DiscordChannelMapping, GroupModel, Team } from '~/index.js';
|
|
3
3
|
|
|
4
4
|
export class ChannelMapping extends Schema.Class<ChannelMapping>('ChannelMapping')({
|
|
5
5
|
id: DiscordChannelMapping.DiscordChannelMappingId,
|
|
6
6
|
team_id: Team.TeamId,
|
|
7
|
-
|
|
7
|
+
group_id: GroupModel.GroupId,
|
|
8
8
|
discord_channel_id: Discord.Snowflake,
|
|
9
9
|
discord_role_id: Schema.OptionFromNullOr(Discord.Snowflake),
|
|
10
10
|
}) {}
|