@sideline/domain 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/dist/cjs/api/AgeThresholdApi.js +86 -0
  2. package/dist/cjs/api/AgeThresholdApi.js.map +1 -0
  3. package/dist/cjs/api/Auth.js +33 -2
  4. package/dist/cjs/api/Auth.js.map +1 -1
  5. package/dist/cjs/api/Invite.js +1 -2
  6. package/dist/cjs/api/Invite.js.map +1 -1
  7. package/dist/cjs/api/NotificationApi.js +42 -0
  8. package/dist/cjs/api/NotificationApi.js.map +1 -0
  9. package/dist/cjs/api/RoleApi.js +123 -0
  10. package/dist/cjs/api/RoleApi.js.map +1 -0
  11. package/dist/cjs/api/Roster.js +159 -0
  12. package/dist/cjs/api/Roster.js.map +1 -0
  13. package/dist/cjs/api/SubgroupApi.js +122 -0
  14. package/dist/cjs/api/SubgroupApi.js.map +1 -0
  15. package/dist/cjs/index.js +25 -1
  16. package/dist/cjs/models/AgeThresholdRule.js +21 -0
  17. package/dist/cjs/models/AgeThresholdRule.js.map +1 -0
  18. package/dist/cjs/models/MemberRole.js +15 -0
  19. package/dist/cjs/models/MemberRole.js.map +1 -0
  20. package/dist/cjs/models/Notification.js +24 -0
  21. package/dist/cjs/models/Notification.js.map +1 -0
  22. package/dist/cjs/models/Role.js +32 -0
  23. package/dist/cjs/models/Role.js.map +1 -0
  24. package/dist/cjs/models/RosterMemberModel.js +19 -0
  25. package/dist/cjs/models/RosterMemberModel.js.map +1 -0
  26. package/dist/cjs/models/RosterModel.js +19 -0
  27. package/dist/cjs/models/RosterModel.js.map +1 -0
  28. package/dist/cjs/models/SubgroupModel.js +18 -0
  29. package/dist/cjs/models/SubgroupModel.js.map +1 -0
  30. package/dist/cjs/models/TeamMember.js +2 -3
  31. package/dist/cjs/models/TeamMember.js.map +1 -1
  32. package/dist/dts/api/AgeThresholdApi.d.ts +119 -0
  33. package/dist/dts/api/AgeThresholdApi.d.ts.map +1 -0
  34. package/dist/dts/api/Auth.d.ts +60 -1
  35. package/dist/dts/api/Auth.d.ts.map +1 -1
  36. package/dist/dts/api/Invite.d.ts +7 -7
  37. package/dist/dts/api/Invite.d.ts.map +1 -1
  38. package/dist/dts/api/NotificationApi.d.ts +53 -0
  39. package/dist/dts/api/NotificationApi.d.ts.map +1 -0
  40. package/dist/dts/api/RoleApi.d.ts +138 -0
  41. package/dist/dts/api/RoleApi.d.ts.map +1 -0
  42. package/dist/dts/api/Roster.d.ts +225 -0
  43. package/dist/dts/api/Roster.d.ts.map +1 -0
  44. package/dist/dts/api/SubgroupApi.d.ts +140 -0
  45. package/dist/dts/api/SubgroupApi.d.ts.map +1 -0
  46. package/dist/dts/index.d.ts +12 -0
  47. package/dist/dts/index.d.ts.map +1 -1
  48. package/dist/dts/models/AgeThresholdRule.d.ts +97 -0
  49. package/dist/dts/models/AgeThresholdRule.d.ts.map +1 -0
  50. package/dist/dts/models/MemberRole.d.ts +16 -0
  51. package/dist/dts/models/MemberRole.d.ts.map +1 -0
  52. package/dist/dts/models/Notification.d.ts +125 -0
  53. package/dist/dts/models/Notification.d.ts.map +1 -0
  54. package/dist/dts/models/Role.d.ts +102 -0
  55. package/dist/dts/models/Role.d.ts.map +1 -0
  56. package/dist/dts/models/RosterMemberModel.d.ts +71 -0
  57. package/dist/dts/models/RosterMemberModel.d.ts.map +1 -0
  58. package/dist/dts/models/RosterModel.d.ts +84 -0
  59. package/dist/dts/models/RosterModel.d.ts.map +1 -0
  60. package/dist/dts/models/SubgroupModel.d.ts +71 -0
  61. package/dist/dts/models/SubgroupModel.d.ts.map +1 -0
  62. package/dist/dts/models/TeamInvite.d.ts +4 -4
  63. package/dist/dts/models/TeamMember.d.ts +11 -13
  64. package/dist/dts/models/TeamMember.d.ts.map +1 -1
  65. package/dist/esm/api/AgeThresholdApi.js +72 -0
  66. package/dist/esm/api/AgeThresholdApi.js.map +1 -0
  67. package/dist/esm/api/Auth.js +28 -1
  68. package/dist/esm/api/Auth.js.map +1 -1
  69. package/dist/esm/api/Invite.js +1 -2
  70. package/dist/esm/api/Invite.js.map +1 -1
  71. package/dist/esm/api/NotificationApi.js +32 -0
  72. package/dist/esm/api/NotificationApi.js.map +1 -0
  73. package/dist/esm/api/RoleApi.js +106 -0
  74. package/dist/esm/api/RoleApi.js.map +1 -0
  75. package/dist/esm/api/Roster.js +142 -0
  76. package/dist/esm/api/Roster.js.map +1 -0
  77. package/dist/esm/api/SubgroupApi.js +106 -0
  78. package/dist/esm/api/SubgroupApi.js.map +1 -0
  79. package/dist/esm/index.js +12 -0
  80. package/dist/esm/index.js.map +1 -1
  81. package/dist/esm/models/AgeThresholdRule.js +14 -0
  82. package/dist/esm/models/AgeThresholdRule.js.map +1 -0
  83. package/dist/esm/models/MemberRole.js +8 -0
  84. package/dist/esm/models/MemberRole.js.map +1 -0
  85. package/dist/esm/models/Notification.js +17 -0
  86. package/dist/esm/models/Notification.js.map +1 -0
  87. package/dist/esm/models/Role.js +24 -0
  88. package/dist/esm/models/Role.js.map +1 -0
  89. package/dist/esm/models/RosterMemberModel.js +12 -0
  90. package/dist/esm/models/RosterMemberModel.js.map +1 -0
  91. package/dist/esm/models/RosterModel.js +12 -0
  92. package/dist/esm/models/RosterModel.js.map +1 -0
  93. package/dist/esm/models/SubgroupModel.js +11 -0
  94. package/dist/esm/models/SubgroupModel.js.map +1 -0
  95. package/dist/esm/models/TeamMember.js +1 -2
  96. package/dist/esm/models/TeamMember.js.map +1 -1
  97. package/package.json +1 -1
  98. package/src/api/AgeThresholdApi.ts +99 -0
  99. package/src/api/Auth.ts +52 -0
  100. package/src/api/Invite.ts +1 -2
  101. package/src/api/NotificationApi.ts +49 -0
  102. package/src/api/RoleApi.ts +130 -0
  103. package/src/api/Roster.ts +176 -0
  104. package/src/api/SubgroupApi.ts +146 -0
  105. package/src/index.ts +24 -0
  106. package/src/models/AgeThresholdRule.ts +16 -0
  107. package/src/models/MemberRole.ts +8 -0
  108. package/src/models/Notification.ts +26 -0
  109. package/src/models/Role.ts +53 -0
  110. package/src/models/RosterMemberModel.ts +14 -0
  111. package/src/models/RosterModel.ts +14 -0
  112. package/src/models/SubgroupModel.ts +13 -0
  113. package/src/models/TeamMember.ts +1 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Roster.js","names":["HttpApiEndpoint","HttpApiGroup","HttpApiSchema","Schema","AuthMiddleware","Permission","RosterId","TeamId","TeamMemberId","Gender","Position","Proficiency","UserId","RosterPlayer","Class","memberId","userId","roleNames","Array","String","permissions","name","NullOr","birthYear","Number","gender","jerseyNumber","position","proficiency","discordUsername","discordAvatar","UpdatePlayerRequest","PlayerNotFound","TaggedError","annotations","status","Forbidden","RosterNotFound","RosterInfo","rosterId","teamId","active","Boolean","memberCount","createdAt","RosterDetail","members","CreateRosterRequest","UpdateRosterRequest","AddRosterMemberRequest","RosterApiGroup","make","add","get","addSuccess","addError","setPath","Struct","middleware","patch","setPayload","del","Void","post"],"sources":["../../../src/api/Roster.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,106 @@
1
+ import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from '@effect/platform';
2
+ import { Schema } from 'effect';
3
+ import { AuthMiddleware } from '../api/Auth.js';
4
+ import { Permission } from '../models/Role.js';
5
+ import { SubgroupId } from '../models/SubgroupModel.js';
6
+ import { TeamId } from '../models/Team.js';
7
+ import { TeamMemberId } from '../models/TeamMember.js';
8
+ export class SubgroupInfo extends /*#__PURE__*/Schema.Class('SubgroupInfo')({
9
+ subgroupId: SubgroupId,
10
+ teamId: TeamId,
11
+ name: Schema.String,
12
+ memberCount: Schema.Number
13
+ }) {}
14
+ export class SubgroupDetail extends /*#__PURE__*/Schema.Class('SubgroupDetail')({
15
+ subgroupId: SubgroupId,
16
+ teamId: TeamId,
17
+ name: Schema.String,
18
+ permissions: /*#__PURE__*/Schema.Array(Permission),
19
+ members: /*#__PURE__*/Schema.Array(/*#__PURE__*/Schema.Struct({
20
+ memberId: TeamMemberId,
21
+ name: /*#__PURE__*/Schema.NullOr(Schema.String),
22
+ discordUsername: Schema.String
23
+ }))
24
+ }) {}
25
+ export class CreateSubgroupRequest extends /*#__PURE__*/Schema.Class('CreateSubgroupRequest')({
26
+ name: Schema.NonEmptyString
27
+ }) {}
28
+ export class UpdateSubgroupRequest extends /*#__PURE__*/Schema.Class('UpdateSubgroupRequest')({
29
+ name: Schema.NonEmptyString
30
+ }) {}
31
+ export class AddSubgroupMemberRequest extends /*#__PURE__*/Schema.Class('AddSubgroupMemberRequest')({
32
+ memberId: TeamMemberId
33
+ }) {}
34
+ export class SetSubgroupPermissionsRequest extends /*#__PURE__*/Schema.Class('SetSubgroupPermissionsRequest')({
35
+ permissions: /*#__PURE__*/Schema.Array(Permission)
36
+ }) {}
37
+ export class SubgroupNotFound extends /*#__PURE__*/Schema.TaggedError()('SubgroupNotFound', {}, /*#__PURE__*/HttpApiSchema.annotations({
38
+ status: 404
39
+ })) {}
40
+ export class Forbidden extends /*#__PURE__*/Schema.TaggedError()('SubgroupForbidden', {}, /*#__PURE__*/HttpApiSchema.annotations({
41
+ status: 403
42
+ })) {}
43
+ export class MemberNotFound extends /*#__PURE__*/Schema.TaggedError()('SubgroupMemberNotFound', {}, /*#__PURE__*/HttpApiSchema.annotations({
44
+ status: 404
45
+ })) {}
46
+ export class SubgroupApiGroup extends /*#__PURE__*/HttpApiGroup.make('subgroup').add(HttpApiEndpoint.get('listSubgroups', '/teams/:teamId/subgroups').addSuccess(Schema.Array(SubgroupInfo)).addError(Forbidden, {
47
+ status: 403
48
+ }).setPath(Schema.Struct({
49
+ teamId: TeamId
50
+ })).middleware(AuthMiddleware)).add(HttpApiEndpoint.post('createSubgroup', '/teams/:teamId/subgroups').addSuccess(SubgroupInfo, {
51
+ status: 201
52
+ }).addError(Forbidden, {
53
+ status: 403
54
+ }).setPath(Schema.Struct({
55
+ teamId: TeamId
56
+ })).setPayload(CreateSubgroupRequest).middleware(AuthMiddleware)).add(HttpApiEndpoint.get('getSubgroup', '/teams/:teamId/subgroups/:subgroupId').addSuccess(SubgroupDetail).addError(Forbidden, {
57
+ status: 403
58
+ }).addError(SubgroupNotFound, {
59
+ status: 404
60
+ }).setPath(Schema.Struct({
61
+ teamId: TeamId,
62
+ subgroupId: SubgroupId
63
+ })).middleware(AuthMiddleware)).add(HttpApiEndpoint.patch('updateSubgroup', '/teams/:teamId/subgroups/:subgroupId').addSuccess(SubgroupInfo).addError(Forbidden, {
64
+ status: 403
65
+ }).addError(SubgroupNotFound, {
66
+ status: 404
67
+ }).setPath(Schema.Struct({
68
+ teamId: TeamId,
69
+ subgroupId: SubgroupId
70
+ })).setPayload(UpdateSubgroupRequest).middleware(AuthMiddleware)).add(HttpApiEndpoint.del('deleteSubgroup', '/teams/:teamId/subgroups/:subgroupId').addSuccess(Schema.Void).addError(Forbidden, {
71
+ status: 403
72
+ }).addError(SubgroupNotFound, {
73
+ status: 404
74
+ }).setPath(Schema.Struct({
75
+ teamId: TeamId,
76
+ subgroupId: SubgroupId
77
+ })).middleware(AuthMiddleware)).add(HttpApiEndpoint.post('addSubgroupMember', '/teams/:teamId/subgroups/:subgroupId/members').addSuccess(Schema.Void, {
78
+ status: 204
79
+ }).addError(Forbidden, {
80
+ status: 403
81
+ }).addError(SubgroupNotFound, {
82
+ status: 404
83
+ }).addError(MemberNotFound, {
84
+ status: 404
85
+ }).setPath(Schema.Struct({
86
+ teamId: TeamId,
87
+ subgroupId: SubgroupId
88
+ })).setPayload(AddSubgroupMemberRequest).middleware(AuthMiddleware)).add(HttpApiEndpoint.del('removeSubgroupMember', '/teams/:teamId/subgroups/:subgroupId/members/:memberId').addSuccess(Schema.Void).addError(Forbidden, {
89
+ status: 403
90
+ }).addError(SubgroupNotFound, {
91
+ status: 404
92
+ }).addError(MemberNotFound, {
93
+ status: 404
94
+ }).setPath(Schema.Struct({
95
+ teamId: TeamId,
96
+ subgroupId: SubgroupId,
97
+ memberId: TeamMemberId
98
+ })).middleware(AuthMiddleware)).add(/*#__PURE__*/HttpApiEndpoint.patch('setSubgroupPermissions', '/teams/:teamId/subgroups/:subgroupId/permissions').addSuccess(SubgroupDetail).addError(Forbidden, {
99
+ status: 403
100
+ }).addError(SubgroupNotFound, {
101
+ status: 404
102
+ }).setPath(Schema.Struct({
103
+ teamId: TeamId,
104
+ subgroupId: SubgroupId
105
+ })).setPayload(SetSubgroupPermissionsRequest).middleware(AuthMiddleware)) {}
106
+ //# sourceMappingURL=SubgroupApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubgroupApi.js","names":["HttpApiEndpoint","HttpApiGroup","HttpApiSchema","Schema","AuthMiddleware","Permission","SubgroupId","TeamId","TeamMemberId","SubgroupInfo","Class","subgroupId","teamId","name","String","memberCount","Number","SubgroupDetail","permissions","Array","members","Struct","memberId","NullOr","discordUsername","CreateSubgroupRequest","NonEmptyString","UpdateSubgroupRequest","AddSubgroupMemberRequest","SetSubgroupPermissionsRequest","SubgroupNotFound","TaggedError","annotations","status","Forbidden","MemberNotFound","SubgroupApiGroup","make","add","get","addSuccess","addError","setPath","middleware","post","setPayload","patch","del","Void"],"sources":["../../../src/api/SubgroupApi.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/dist/esm/index.js CHANGED
@@ -1,7 +1,19 @@
1
1
  export * as ApiGroup from './ApiGroup.js';
2
+ export * as AgeThresholdApi from './api/AgeThresholdApi.js';
2
3
  export * as Auth from './api/Auth.js';
3
4
  export * as Invite from './api/Invite.js';
5
+ export * as NotificationApi from './api/NotificationApi.js';
6
+ export * as RoleApi from './api/RoleApi.js';
7
+ export * as Roster from './api/Roster.js';
8
+ export * as SubgroupApi from './api/SubgroupApi.js';
9
+ export * as AgeThresholdRule from './models/AgeThresholdRule.js';
10
+ export * as MemberRole from './models/MemberRole.js';
11
+ export * as Notification from './models/Notification.js';
12
+ export * as Role from './models/Role.js';
13
+ export * as RosterMemberModel from './models/RosterMemberModel.js';
14
+ export * as RosterModel from './models/RosterModel.js';
4
15
  export * as Session from './models/Session.js';
16
+ export * as SubgroupModel from './models/SubgroupModel.js';
5
17
  export * as Team from './models/Team.js';
6
18
  export * as TeamInvite from './models/TeamInvite.js';
7
19
  export * as TeamMember from './models/TeamMember.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["ApiGroup","Auth","Invite","Session","Team","TeamInvite","TeamMember","User"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,QAAQ,MAAM,eAAe;AAEzC,OAAO,KAAKC,IAAI,MAAM,eAAe;AAErC,OAAO,KAAKC,MAAM,MAAM,iBAAiB;AAEzC,OAAO,KAAKC,OAAO,MAAM,qBAAqB;AAE9C,OAAO,KAAKC,IAAI,MAAM,kBAAkB;AAExC,OAAO,KAAKC,UAAU,MAAM,wBAAwB;AAEpD,OAAO,KAAKC,UAAU,MAAM,wBAAwB;AAEpD,OAAO,KAAKC,IAAI,MAAM,kBAAkB","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["ApiGroup","AgeThresholdApi","Auth","Invite","NotificationApi","RoleApi","Roster","SubgroupApi","AgeThresholdRule","MemberRole","Notification","Role","RosterMemberModel","RosterModel","Session","SubgroupModel","Team","TeamInvite","TeamMember","User"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,QAAQ,MAAM,eAAe;AAEzC,OAAO,KAAKC,eAAe,MAAM,0BAA0B;AAE3D,OAAO,KAAKC,IAAI,MAAM,eAAe;AAErC,OAAO,KAAKC,MAAM,MAAM,iBAAiB;AAEzC,OAAO,KAAKC,eAAe,MAAM,0BAA0B;AAE3D,OAAO,KAAKC,OAAO,MAAM,kBAAkB;AAE3C,OAAO,KAAKC,MAAM,MAAM,iBAAiB;AAEzC,OAAO,KAAKC,WAAW,MAAM,sBAAsB;AAEnD,OAAO,KAAKC,gBAAgB,MAAM,8BAA8B;AAEhE,OAAO,KAAKC,UAAU,MAAM,wBAAwB;AAEpD,OAAO,KAAKC,YAAY,MAAM,0BAA0B;AAExD,OAAO,KAAKC,IAAI,MAAM,kBAAkB;AAExC,OAAO,KAAKC,iBAAiB,MAAM,+BAA+B;AAElE,OAAO,KAAKC,WAAW,MAAM,yBAAyB;AAEtD,OAAO,KAAKC,OAAO,MAAM,qBAAqB;AAE9C,OAAO,KAAKC,aAAa,MAAM,2BAA2B;AAE1D,OAAO,KAAKC,IAAI,MAAM,kBAAkB;AAExC,OAAO,KAAKC,UAAU,MAAM,wBAAwB;AAEpD,OAAO,KAAKC,UAAU,MAAM,wBAAwB;AAEpD,OAAO,KAAKC,IAAI,MAAM,kBAAkB","ignoreList":[]}
@@ -0,0 +1,14 @@
1
+ import { Model } from '@effect/sql';
2
+ import { Schema } from 'effect';
3
+ import { RoleId } from '../models/Role.js';
4
+ import { TeamId } from '../models/Team.js';
5
+ export const AgeThresholdRuleId = /*#__PURE__*/Schema.String.pipe(/*#__PURE__*/Schema.brand('AgeThresholdRuleId'));
6
+ export class AgeThresholdRule extends /*#__PURE__*/Model.Class('AgeThresholdRule')({
7
+ id: /*#__PURE__*/Model.Generated(AgeThresholdRuleId),
8
+ team_id: TeamId,
9
+ role_id: RoleId,
10
+ min_age: /*#__PURE__*/Schema.NullOr(Schema.Number),
11
+ max_age: /*#__PURE__*/Schema.NullOr(Schema.Number),
12
+ created_at: Model.DateTimeInsertFromDate
13
+ }) {}
14
+ //# sourceMappingURL=AgeThresholdRule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgeThresholdRule.js","names":["Model","Schema","RoleId","TeamId","AgeThresholdRuleId","String","pipe","brand","AgeThresholdRule","Class","id","Generated","team_id","role_id","min_age","NullOr","Number","max_age","created_at","DateTimeInsertFromDate"],"sources":["../../../src/models/AgeThresholdRule.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,KAAK,QAAQ,aAAa;AACnC,SAASC,MAAM,QAAQ,QAAQ;AAC/B,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,SAASC,MAAM,QAAQ,mBAAmB;AAE1C,OAAO,MAAMC,kBAAkB,gBAAGH,MAAM,CAACI,MAAM,CAACC,IAAI,cAACL,MAAM,CAACM,KAAK,CAAC,oBAAoB,CAAC,CAAC;AAGxF,OAAM,MAAOC,gBAAiB,sBAAQR,KAAK,CAACS,KAAK,CAAmB,kBAAkB,CAAC,CAAC;EACtFC,EAAE,eAAEV,KAAK,CAACW,SAAS,CAACP,kBAAkB,CAAC;EACvCQ,OAAO,EAAET,MAAM;EACfU,OAAO,EAAEX,MAAM;EACfY,OAAO,eAAEb,MAAM,CAACc,MAAM,CAACd,MAAM,CAACe,MAAM,CAAC;EACrCC,OAAO,eAAEhB,MAAM,CAACc,MAAM,CAACd,MAAM,CAACe,MAAM,CAAC;EACrCE,UAAU,EAAElB,KAAK,CAACmB;CACnB,CAAC","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ import { Schema } from 'effect';
2
+ import { RoleId } from '../models/Role.js';
3
+ import { TeamMemberId } from '../models/TeamMember.js';
4
+ export class MemberRole extends /*#__PURE__*/Schema.Class('MemberRole')({
5
+ team_member_id: TeamMemberId,
6
+ role_id: RoleId
7
+ }) {}
8
+ //# sourceMappingURL=MemberRole.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemberRole.js","names":["Schema","RoleId","TeamMemberId","MemberRole","Class","team_member_id","role_id"],"sources":["../../../src/models/MemberRole.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,MAAM,QAAQ,QAAQ;AAC/B,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,SAASC,YAAY,QAAQ,yBAAyB;AAEtD,OAAM,MAAOC,UAAW,sBAAQH,MAAM,CAACI,KAAK,CAAa,YAAY,CAAC,CAAC;EACrEC,cAAc,EAAEH,YAAY;EAC5BI,OAAO,EAAEL;CACV,CAAC","ignoreList":[]}
@@ -0,0 +1,17 @@
1
+ import { Model } from '@effect/sql';
2
+ import { Schema } from 'effect';
3
+ import { TeamId } from '../models/Team.js';
4
+ import { UserId } from '../models/User.js';
5
+ export const NotificationId = /*#__PURE__*/Schema.String.pipe(/*#__PURE__*/Schema.brand('NotificationId'));
6
+ export const NotificationType = /*#__PURE__*/Schema.Literal('age_role_assigned', 'age_role_removed', 'role_assigned', 'role_removed');
7
+ export class Notification extends /*#__PURE__*/Model.Class('Notification')({
8
+ id: /*#__PURE__*/Model.Generated(NotificationId),
9
+ team_id: TeamId,
10
+ user_id: UserId,
11
+ type: NotificationType,
12
+ title: Schema.String,
13
+ body: Schema.String,
14
+ is_read: Schema.Boolean,
15
+ created_at: Model.DateTimeInsertFromDate
16
+ }) {}
17
+ //# sourceMappingURL=Notification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Notification.js","names":["Model","Schema","TeamId","UserId","NotificationId","String","pipe","brand","NotificationType","Literal","Notification","Class","id","Generated","team_id","user_id","type","title","body","is_read","Boolean","created_at","DateTimeInsertFromDate"],"sources":["../../../src/models/Notification.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,KAAK,QAAQ,aAAa;AACnC,SAASC,MAAM,QAAQ,QAAQ;AAC/B,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,SAASC,MAAM,QAAQ,mBAAmB;AAE1C,OAAO,MAAMC,cAAc,gBAAGH,MAAM,CAACI,MAAM,CAACC,IAAI,cAACL,MAAM,CAACM,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAGhF,OAAO,MAAMC,gBAAgB,gBAAGP,MAAM,CAACQ,OAAO,CAC5C,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,cAAc,CACf;AAGD,OAAM,MAAOC,YAAa,sBAAQV,KAAK,CAACW,KAAK,CAAe,cAAc,CAAC,CAAC;EAC1EC,EAAE,eAAEZ,KAAK,CAACa,SAAS,CAACT,cAAc,CAAC;EACnCU,OAAO,EAAEZ,MAAM;EACfa,OAAO,EAAEZ,MAAM;EACfa,IAAI,EAAER,gBAAgB;EACtBS,KAAK,EAAEhB,MAAM,CAACI,MAAM;EACpBa,IAAI,EAAEjB,MAAM,CAACI,MAAM;EACnBc,OAAO,EAAElB,MAAM,CAACmB,OAAO;EACvBC,UAAU,EAAErB,KAAK,CAACsB;CACnB,CAAC","ignoreList":[]}
@@ -0,0 +1,24 @@
1
+ import { Model } from '@effect/sql';
2
+ import { Schema } from 'effect';
3
+ import { TeamId } from '../models/Team.js';
4
+ export const RoleId = /*#__PURE__*/Schema.String.pipe(/*#__PURE__*/Schema.brand('RoleId'));
5
+ export const Permission = /*#__PURE__*/Schema.Literal('team:manage', 'team:invite', 'roster:view', 'roster:manage', 'member:view', 'member:edit', 'member:remove', 'role:view', 'role:manage');
6
+ export const allPermissions = Permission.literals;
7
+ export const defaultPermissions = {
8
+ Admin: ['team:manage', 'team:invite', 'roster:view', 'roster:manage', 'member:view', 'member:edit', 'member:remove', 'role:view', 'role:manage'],
9
+ Captain: ['roster:view', 'roster:manage', 'member:view', 'member:edit', 'role:view'],
10
+ Player: ['roster:view', 'member:view']
11
+ };
12
+ export const builtInRoleNames = ['Admin', 'Captain', 'Player'];
13
+ export class Role extends /*#__PURE__*/Model.Class('Role')({
14
+ id: /*#__PURE__*/Model.Generated(RoleId),
15
+ team_id: TeamId,
16
+ name: Schema.String,
17
+ is_built_in: Schema.Boolean,
18
+ created_at: Model.DateTimeInsertFromDate
19
+ }) {}
20
+ export class RolePermission extends /*#__PURE__*/Schema.Class('RolePermission')({
21
+ role_id: RoleId,
22
+ permission: Permission
23
+ }) {}
24
+ //# sourceMappingURL=Role.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Role.js","names":["Model","Schema","TeamId","RoleId","String","pipe","brand","Permission","Literal","allPermissions","literals","defaultPermissions","Admin","Captain","Player","builtInRoleNames","Role","Class","id","Generated","team_id","name","is_built_in","Boolean","created_at","DateTimeInsertFromDate","RolePermission","role_id","permission"],"sources":["../../../src/models/Role.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,KAAK,QAAQ,aAAa;AACnC,SAASC,MAAM,QAAQ,QAAQ;AAC/B,SAASC,MAAM,QAAQ,mBAAmB;AAE1C,OAAO,MAAMC,MAAM,gBAAGF,MAAM,CAACG,MAAM,CAACC,IAAI,cAACJ,MAAM,CAACK,KAAK,CAAC,QAAQ,CAAC,CAAC;AAGhE,OAAO,MAAMC,UAAU,gBAAGN,MAAM,CAACO,OAAO,CACtC,aAAa,EACb,aAAa,EACb,aAAa,EACb,eAAe,EACf,aAAa,EACb,aAAa,EACb,eAAe,EACf,WAAW,EACX,aAAa,CACd;AAGD,OAAO,MAAMC,cAAc,GACzBF,UAAU,CAACG,QAAqC;AAElD,OAAO,MAAMC,kBAAkB,GAA8C;EAC3EC,KAAK,EAAE,CACL,aAAa,EACb,aAAa,EACb,aAAa,EACb,eAAe,EACf,aAAa,EACb,aAAa,EACb,eAAe,EACf,WAAW,EACX,aAAa,CACd;EACDC,OAAO,EAAE,CAAC,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,CAAC;EACpFC,MAAM,EAAE,CAAC,aAAa,EAAE,aAAa;CACtC;AAED,OAAO,MAAMC,gBAAgB,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAU;AAEvE,OAAM,MAAOC,IAAK,sBAAQhB,KAAK,CAACiB,KAAK,CAAO,MAAM,CAAC,CAAC;EAClDC,EAAE,eAAElB,KAAK,CAACmB,SAAS,CAAChB,MAAM,CAAC;EAC3BiB,OAAO,EAAElB,MAAM;EACfmB,IAAI,EAAEpB,MAAM,CAACG,MAAM;EACnBkB,WAAW,EAAErB,MAAM,CAACsB,OAAO;EAC3BC,UAAU,EAAExB,KAAK,CAACyB;CACnB,CAAC;AAEF,OAAM,MAAOC,cAAe,sBAAQzB,MAAM,CAACgB,KAAK,CAAiB,gBAAgB,CAAC,CAAC;EACjFU,OAAO,EAAExB,MAAM;EACfyB,UAAU,EAAErB;CACb,CAAC","ignoreList":[]}
@@ -0,0 +1,12 @@
1
+ import { Model } from '@effect/sql';
2
+ import { Schema } from 'effect';
3
+ import { RosterId } from '../models/RosterModel.js';
4
+ import { TeamMemberId } from '../models/TeamMember.js';
5
+ export const RosterMemberId = /*#__PURE__*/Schema.String.pipe(/*#__PURE__*/Schema.brand('RosterMemberId'));
6
+ export class RosterMember extends /*#__PURE__*/Model.Class('RosterMember')({
7
+ id: /*#__PURE__*/Model.Generated(RosterMemberId),
8
+ roster_id: RosterId,
9
+ team_member_id: TeamMemberId,
10
+ created_at: Model.DateTimeInsertFromDate
11
+ }) {}
12
+ //# sourceMappingURL=RosterMemberModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RosterMemberModel.js","names":["Model","Schema","RosterId","TeamMemberId","RosterMemberId","String","pipe","brand","RosterMember","Class","id","Generated","roster_id","team_member_id","created_at","DateTimeInsertFromDate"],"sources":["../../../src/models/RosterMemberModel.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,KAAK,QAAQ,aAAa;AACnC,SAASC,MAAM,QAAQ,QAAQ;AAC/B,SAASC,QAAQ,QAAQ,0BAA0B;AACnD,SAASC,YAAY,QAAQ,yBAAyB;AAEtD,OAAO,MAAMC,cAAc,gBAAGH,MAAM,CAACI,MAAM,CAACC,IAAI,cAACL,MAAM,CAACM,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAGhF,OAAM,MAAOC,YAAa,sBAAQR,KAAK,CAACS,KAAK,CAAe,cAAc,CAAC,CAAC;EAC1EC,EAAE,eAAEV,KAAK,CAACW,SAAS,CAACP,cAAc,CAAC;EACnCQ,SAAS,EAAEV,QAAQ;EACnBW,cAAc,EAAEV,YAAY;EAC5BW,UAAU,EAAEd,KAAK,CAACe;CACnB,CAAC","ignoreList":[]}
@@ -0,0 +1,12 @@
1
+ import { Model } from '@effect/sql';
2
+ import { Schema } from 'effect';
3
+ import { TeamId } from '../models/Team.js';
4
+ export const RosterId = /*#__PURE__*/Schema.String.pipe(/*#__PURE__*/Schema.brand('RosterId'));
5
+ export class Roster extends /*#__PURE__*/Model.Class('Roster')({
6
+ id: /*#__PURE__*/Model.Generated(RosterId),
7
+ team_id: TeamId,
8
+ name: Schema.String,
9
+ active: Schema.Boolean,
10
+ created_at: Model.DateTimeInsertFromDate
11
+ }) {}
12
+ //# sourceMappingURL=RosterModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RosterModel.js","names":["Model","Schema","TeamId","RosterId","String","pipe","brand","Roster","Class","id","Generated","team_id","name","active","Boolean","created_at","DateTimeInsertFromDate"],"sources":["../../../src/models/RosterModel.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,KAAK,QAAQ,aAAa;AACnC,SAASC,MAAM,QAAQ,QAAQ;AAC/B,SAASC,MAAM,QAAQ,mBAAmB;AAE1C,OAAO,MAAMC,QAAQ,gBAAGF,MAAM,CAACG,MAAM,CAACC,IAAI,cAACJ,MAAM,CAACK,KAAK,CAAC,UAAU,CAAC,CAAC;AAGpE,OAAM,MAAOC,MAAO,sBAAQP,KAAK,CAACQ,KAAK,CAAS,QAAQ,CAAC,CAAC;EACxDC,EAAE,eAAET,KAAK,CAACU,SAAS,CAACP,QAAQ,CAAC;EAC7BQ,OAAO,EAAET,MAAM;EACfU,IAAI,EAAEX,MAAM,CAACG,MAAM;EACnBS,MAAM,EAAEZ,MAAM,CAACa,OAAO;EACtBC,UAAU,EAAEf,KAAK,CAACgB;CACnB,CAAC","ignoreList":[]}
@@ -0,0 +1,11 @@
1
+ import { Model } from '@effect/sql';
2
+ import { Schema } from 'effect';
3
+ import { TeamId } from '../models/Team.js';
4
+ export const SubgroupId = /*#__PURE__*/Schema.String.pipe(/*#__PURE__*/Schema.brand('SubgroupId'));
5
+ export class Subgroup extends /*#__PURE__*/Model.Class('Subgroup')({
6
+ id: /*#__PURE__*/Model.Generated(SubgroupId),
7
+ team_id: TeamId,
8
+ name: Schema.String,
9
+ created_at: Model.DateTimeInsertFromDate
10
+ }) {}
11
+ //# sourceMappingURL=SubgroupModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubgroupModel.js","names":["Model","Schema","TeamId","SubgroupId","String","pipe","brand","Subgroup","Class","id","Generated","team_id","name","created_at","DateTimeInsertFromDate"],"sources":["../../../src/models/SubgroupModel.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,KAAK,QAAQ,aAAa;AACnC,SAASC,MAAM,QAAQ,QAAQ;AAC/B,SAASC,MAAM,QAAQ,mBAAmB;AAE1C,OAAO,MAAMC,UAAU,gBAAGF,MAAM,CAACG,MAAM,CAACC,IAAI,cAACJ,MAAM,CAACK,KAAK,CAAC,YAAY,CAAC,CAAC;AAGxE,OAAM,MAAOC,QAAS,sBAAQP,KAAK,CAACQ,KAAK,CAAW,UAAU,CAAC,CAAC;EAC9DC,EAAE,eAAET,KAAK,CAACU,SAAS,CAACP,UAAU,CAAC;EAC/BQ,OAAO,EAAET,MAAM;EACfU,IAAI,EAAEX,MAAM,CAACG,MAAM;EACnBS,UAAU,EAAEb,KAAK,CAACc;CACnB,CAAC","ignoreList":[]}
@@ -3,12 +3,11 @@ import { Schema } from 'effect';
3
3
  import { TeamId } from '../models/Team.js';
4
4
  import { UserId } from '../models/User.js';
5
5
  export const TeamMemberId = /*#__PURE__*/Schema.String.pipe(/*#__PURE__*/Schema.brand('TeamMemberId'));
6
- export const TeamRole = /*#__PURE__*/Schema.Literal('admin', 'member');
7
6
  export class TeamMember extends /*#__PURE__*/Model.Class('TeamMember')({
8
7
  id: /*#__PURE__*/Model.Generated(TeamMemberId),
9
8
  team_id: TeamId,
10
9
  user_id: UserId,
11
- role: TeamRole,
10
+ active: Schema.Boolean,
12
11
  joined_at: Model.DateTimeInsertFromDate
13
12
  }) {}
14
13
  //# sourceMappingURL=TeamMember.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TeamMember.js","names":["Model","Schema","TeamId","UserId","TeamMemberId","String","pipe","brand","TeamRole","Literal","TeamMember","Class","id","Generated","team_id","user_id","role","joined_at","DateTimeInsertFromDate"],"sources":["../../../src/models/TeamMember.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,KAAK,QAAQ,aAAa;AACnC,SAASC,MAAM,QAAQ,QAAQ;AAC/B,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,SAASC,MAAM,QAAQ,mBAAmB;AAE1C,OAAO,MAAMC,YAAY,gBAAGH,MAAM,CAACI,MAAM,CAACC,IAAI,cAACL,MAAM,CAACM,KAAK,CAAC,cAAc,CAAC,CAAC;AAG5E,OAAO,MAAMC,QAAQ,gBAAGP,MAAM,CAACQ,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC;AAGzD,OAAM,MAAOC,UAAW,sBAAQV,KAAK,CAACW,KAAK,CAAa,YAAY,CAAC,CAAC;EACpEC,EAAE,eAAEZ,KAAK,CAACa,SAAS,CAACT,YAAY,CAAC;EACjCU,OAAO,EAAEZ,MAAM;EACfa,OAAO,EAAEZ,MAAM;EACfa,IAAI,EAAER,QAAQ;EACdS,SAAS,EAAEjB,KAAK,CAACkB;CAClB,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"TeamMember.js","names":["Model","Schema","TeamId","UserId","TeamMemberId","String","pipe","brand","TeamMember","Class","id","Generated","team_id","user_id","active","Boolean","joined_at","DateTimeInsertFromDate"],"sources":["../../../src/models/TeamMember.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,KAAK,QAAQ,aAAa;AACnC,SAASC,MAAM,QAAQ,QAAQ;AAC/B,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,SAASC,MAAM,QAAQ,mBAAmB;AAE1C,OAAO,MAAMC,YAAY,gBAAGH,MAAM,CAACI,MAAM,CAACC,IAAI,cAACL,MAAM,CAACM,KAAK,CAAC,cAAc,CAAC,CAAC;AAG5E,OAAM,MAAOC,UAAW,sBAAQR,KAAK,CAACS,KAAK,CAAa,YAAY,CAAC,CAAC;EACpEC,EAAE,eAAEV,KAAK,CAACW,SAAS,CAACP,YAAY,CAAC;EACjCQ,OAAO,EAAEV,MAAM;EACfW,OAAO,EAAEV,MAAM;EACfW,MAAM,EAAEb,MAAM,CAACc,OAAO;EACtBC,SAAS,EAAEhB,KAAK,CAACiB;CAClB,CAAC","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sideline/domain",
3
- "version": "0.1.2",
3
+ "version": "0.2.0",
4
4
  "description": "The domain template",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -0,0 +1,99 @@
1
+ import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from '@effect/platform';
2
+ import { Schema } from 'effect';
3
+ import { AuthMiddleware } from '~/api/Auth.js';
4
+ import { AgeThresholdRuleId } from '~/models/AgeThresholdRule.js';
5
+ import { RoleId } from '~/models/Role.js';
6
+ import { TeamId } from '~/models/Team.js';
7
+ import { TeamMemberId } from '~/models/TeamMember.js';
8
+
9
+ export class AgeThresholdInfo extends Schema.Class<AgeThresholdInfo>('AgeThresholdInfo')({
10
+ ruleId: AgeThresholdRuleId,
11
+ teamId: TeamId,
12
+ roleId: RoleId,
13
+ roleName: Schema.String,
14
+ minAge: Schema.NullOr(Schema.Number),
15
+ maxAge: Schema.NullOr(Schema.Number),
16
+ }) {}
17
+
18
+ export class AgeRoleChange extends Schema.Class<AgeRoleChange>('AgeRoleChange')({
19
+ memberId: TeamMemberId,
20
+ memberName: Schema.String,
21
+ roleId: RoleId,
22
+ roleName: Schema.String,
23
+ action: Schema.Literal('assigned', 'removed'),
24
+ }) {}
25
+
26
+ export class CreateAgeThresholdRequest extends Schema.Class<CreateAgeThresholdRequest>(
27
+ 'CreateAgeThresholdRequest',
28
+ )({
29
+ roleId: RoleId,
30
+ minAge: Schema.NullOr(Schema.Number),
31
+ maxAge: Schema.NullOr(Schema.Number),
32
+ }) {}
33
+
34
+ export class UpdateAgeThresholdRequest extends Schema.Class<UpdateAgeThresholdRequest>(
35
+ 'UpdateAgeThresholdRequest',
36
+ )({
37
+ minAge: Schema.NullOr(Schema.Number),
38
+ maxAge: Schema.NullOr(Schema.Number),
39
+ }) {}
40
+
41
+ export class Forbidden extends Schema.TaggedError<Forbidden>()(
42
+ 'AgeThresholdForbidden',
43
+ {},
44
+ HttpApiSchema.annotations({ status: 403 }),
45
+ ) {}
46
+
47
+ export class RuleNotFound extends Schema.TaggedError<RuleNotFound>()(
48
+ 'AgeThresholdRuleNotFound',
49
+ {},
50
+ HttpApiSchema.annotations({ status: 404 }),
51
+ ) {}
52
+
53
+ export class RoleNotFound extends Schema.TaggedError<RoleNotFound>()(
54
+ 'AgeThresholdRoleNotFound',
55
+ {},
56
+ HttpApiSchema.annotations({ status: 404 }),
57
+ ) {}
58
+
59
+ export class AgeThresholdApiGroup extends HttpApiGroup.make('ageThreshold')
60
+ .add(
61
+ HttpApiEndpoint.get('listAgeThresholds', '/teams/:teamId/age-thresholds')
62
+ .addSuccess(Schema.Array(AgeThresholdInfo))
63
+ .addError(Forbidden, { status: 403 })
64
+ .setPath(Schema.Struct({ teamId: TeamId }))
65
+ .middleware(AuthMiddleware),
66
+ )
67
+ .add(
68
+ HttpApiEndpoint.post('createAgeThreshold', '/teams/:teamId/age-thresholds')
69
+ .addSuccess(AgeThresholdInfo, { status: 201 })
70
+ .addError(Forbidden, { status: 403 })
71
+ .addError(RoleNotFound, { status: 404 })
72
+ .setPath(Schema.Struct({ teamId: TeamId }))
73
+ .setPayload(CreateAgeThresholdRequest)
74
+ .middleware(AuthMiddleware),
75
+ )
76
+ .add(
77
+ HttpApiEndpoint.patch('updateAgeThreshold', '/teams/:teamId/age-thresholds/:ruleId')
78
+ .addSuccess(AgeThresholdInfo)
79
+ .addError(Forbidden, { status: 403 })
80
+ .addError(RuleNotFound, { status: 404 })
81
+ .setPath(Schema.Struct({ teamId: TeamId, ruleId: AgeThresholdRuleId }))
82
+ .setPayload(UpdateAgeThresholdRequest)
83
+ .middleware(AuthMiddleware),
84
+ )
85
+ .add(
86
+ HttpApiEndpoint.del('deleteAgeThreshold', '/teams/:teamId/age-thresholds/:ruleId')
87
+ .addSuccess(Schema.Void)
88
+ .addError(Forbidden, { status: 403 })
89
+ .addError(RuleNotFound, { status: 404 })
90
+ .setPath(Schema.Struct({ teamId: TeamId, ruleId: AgeThresholdRuleId }))
91
+ .middleware(AuthMiddleware),
92
+ )
93
+ .add(
94
+ HttpApiEndpoint.post('evaluateAgeThresholds', '/teams/:teamId/age-thresholds/evaluate')
95
+ .addSuccess(Schema.Array(AgeRoleChange))
96
+ .addError(Forbidden, { status: 403 })
97
+ .setPath(Schema.Struct({ teamId: TeamId }))
98
+ .middleware(AuthMiddleware),
99
+ ) {}
package/src/api/Auth.ts CHANGED
@@ -6,12 +6,21 @@ import {
6
6
  HttpApiSecurity,
7
7
  } from '@effect/platform';
8
8
  import { Context, Schema } from 'effect';
9
+ import { Permission } from '~/models/Role.js';
10
+ import { TeamId } from '~/models/Team.js';
9
11
  import { Gender, Locale, Position, Proficiency, UserId } from '~/models/User.js';
10
12
 
11
13
  export { UserId } from '~/models/User.js';
12
14
 
13
15
  export const MIN_AGE = 6;
14
16
 
17
+ export class UserTeam extends Schema.Class<UserTeam>('UserTeam')({
18
+ teamId: TeamId,
19
+ teamName: Schema.String,
20
+ roleNames: Schema.Array(Schema.String),
21
+ permissions: Schema.Array(Permission),
22
+ }) {}
23
+
15
24
  export class CurrentUser extends Schema.Class<CurrentUser>('CurrentUser')({
16
25
  id: UserId,
17
26
  discordId: Schema.String,
@@ -31,6 +40,10 @@ export class UpdateLocaleRequest extends Schema.Class<UpdateLocaleRequest>('Upda
31
40
  locale: Locale,
32
41
  }) {}
33
42
 
43
+ export class CreateTeamRequest extends Schema.Class<CreateTeamRequest>('CreateTeamRequest')({
44
+ name: Schema.String.pipe(Schema.minLength(1), Schema.maxLength(100)),
45
+ }) {}
46
+
34
47
  export class CompleteProfileRequest extends Schema.Class<CompleteProfileRequest>(
35
48
  'CompleteProfileRequest',
36
49
  )({
@@ -50,6 +63,25 @@ export class CompleteProfileRequest extends Schema.Class<CompleteProfileRequest>
50
63
  proficiency: Proficiency,
51
64
  }) {}
52
65
 
66
+ export class UpdateProfileRequest extends Schema.Class<UpdateProfileRequest>(
67
+ 'UpdateProfileRequest',
68
+ )({
69
+ name: Schema.NullOr(Schema.String),
70
+ birthYear: Schema.NullOr(
71
+ Schema.Number.pipe(
72
+ Schema.int(),
73
+ Schema.greaterThanOrEqualTo(1900),
74
+ Schema.filter((year) => year <= new Date().getFullYear() - MIN_AGE, {
75
+ message: () => `Birth year must be at most ${new Date().getFullYear() - MIN_AGE}`,
76
+ }),
77
+ ),
78
+ ),
79
+ gender: Schema.NullOr(Gender),
80
+ jerseyNumber: Schema.NullOr(Schema.Number.pipe(Schema.int(), Schema.between(0, 99))),
81
+ position: Schema.NullOr(Position),
82
+ proficiency: Schema.NullOr(Proficiency),
83
+ }) {}
84
+
53
85
  export class Unauthorized extends Schema.TaggedError<Unauthorized>()(
54
86
  'Unauthorized',
55
87
  {},
@@ -101,4 +133,24 @@ export class AuthApiGroup extends HttpApiGroup.make('auth')
101
133
  .setPayload(UpdateLocaleRequest)
102
134
  .middleware(AuthMiddleware),
103
135
  )
136
+ .add(
137
+ HttpApiEndpoint.patch('updateProfile', '/me')
138
+ .addSuccess(CurrentUser)
139
+ .addError(Unauthorized, { status: 401 })
140
+ .setPayload(UpdateProfileRequest)
141
+ .middleware(AuthMiddleware),
142
+ )
143
+ .add(
144
+ HttpApiEndpoint.get('myTeams', '/me/teams')
145
+ .addSuccess(Schema.Array(UserTeam))
146
+ .addError(Unauthorized, { status: 401 })
147
+ .middleware(AuthMiddleware),
148
+ )
149
+ .add(
150
+ HttpApiEndpoint.post('createTeam', '/me/teams')
151
+ .addSuccess(UserTeam)
152
+ .addError(Unauthorized, { status: 401 })
153
+ .setPayload(CreateTeamRequest)
154
+ .middleware(AuthMiddleware),
155
+ )
104
156
  .prefix('/auth') {}
package/src/api/Invite.ts CHANGED
@@ -2,7 +2,6 @@ import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from '@effect/platform';
2
2
  import { Schema } from 'effect';
3
3
  import { AuthMiddleware } from '~/api/Auth.js';
4
4
  import { TeamId } from '~/models/Team.js';
5
- import { TeamRole } from '~/models/TeamMember.js';
6
5
 
7
6
  export class InviteInfo extends Schema.Class<InviteInfo>('InviteInfo')({
8
7
  teamName: Schema.String,
@@ -12,7 +11,7 @@ export class InviteInfo extends Schema.Class<InviteInfo>('InviteInfo')({
12
11
 
13
12
  export class JoinResult extends Schema.Class<JoinResult>('JoinResult')({
14
13
  teamId: TeamId,
15
- role: TeamRole,
14
+ roleNames: Schema.Array(Schema.String),
16
15
  isProfileComplete: Schema.Boolean,
17
16
  }) {}
18
17
 
@@ -0,0 +1,49 @@
1
+ import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from '@effect/platform';
2
+ import { Schema } from 'effect';
3
+ import { AuthMiddleware } from '~/api/Auth.js';
4
+ import { NotificationId, NotificationType } from '~/models/Notification.js';
5
+ import { TeamId } from '~/models/Team.js';
6
+
7
+ export class NotificationInfo extends Schema.Class<NotificationInfo>('NotificationInfo')({
8
+ notificationId: NotificationId,
9
+ teamId: TeamId,
10
+ type: NotificationType,
11
+ title: Schema.String,
12
+ body: Schema.String,
13
+ isRead: Schema.Boolean,
14
+ createdAt: Schema.String,
15
+ }) {}
16
+
17
+ export class Forbidden extends Schema.TaggedError<Forbidden>()(
18
+ 'NotificationForbidden',
19
+ {},
20
+ HttpApiSchema.annotations({ status: 403 }),
21
+ ) {}
22
+
23
+ export class NotificationNotFound extends Schema.TaggedError<NotificationNotFound>()(
24
+ 'NotificationNotFound',
25
+ {},
26
+ HttpApiSchema.annotations({ status: 404 }),
27
+ ) {}
28
+
29
+ export class NotificationApiGroup extends HttpApiGroup.make('notification')
30
+ .add(
31
+ HttpApiEndpoint.get('listNotifications', '/notifications')
32
+ .addSuccess(Schema.Array(NotificationInfo))
33
+ .addError(Forbidden, { status: 403 })
34
+ .middleware(AuthMiddleware),
35
+ )
36
+ .add(
37
+ HttpApiEndpoint.patch('markAsRead', '/notifications/:notificationId/read')
38
+ .addSuccess(Schema.Void)
39
+ .addError(Forbidden, { status: 403 })
40
+ .addError(NotificationNotFound, { status: 404 })
41
+ .setPath(Schema.Struct({ notificationId: NotificationId }))
42
+ .middleware(AuthMiddleware),
43
+ )
44
+ .add(
45
+ HttpApiEndpoint.post('markAllAsRead', '/notifications/read-all')
46
+ .addSuccess(Schema.Void)
47
+ .addError(Forbidden, { status: 403 })
48
+ .middleware(AuthMiddleware),
49
+ ) {}