@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.
- package/dist/cjs/api/AgeThresholdApi.js +86 -0
- package/dist/cjs/api/AgeThresholdApi.js.map +1 -0
- package/dist/cjs/api/Auth.js +33 -2
- package/dist/cjs/api/Auth.js.map +1 -1
- package/dist/cjs/api/Invite.js +1 -2
- package/dist/cjs/api/Invite.js.map +1 -1
- package/dist/cjs/api/NotificationApi.js +42 -0
- package/dist/cjs/api/NotificationApi.js.map +1 -0
- package/dist/cjs/api/RoleApi.js +123 -0
- package/dist/cjs/api/RoleApi.js.map +1 -0
- package/dist/cjs/api/Roster.js +159 -0
- package/dist/cjs/api/Roster.js.map +1 -0
- package/dist/cjs/api/SubgroupApi.js +122 -0
- package/dist/cjs/api/SubgroupApi.js.map +1 -0
- package/dist/cjs/index.js +25 -1
- package/dist/cjs/models/AgeThresholdRule.js +21 -0
- package/dist/cjs/models/AgeThresholdRule.js.map +1 -0
- package/dist/cjs/models/MemberRole.js +15 -0
- package/dist/cjs/models/MemberRole.js.map +1 -0
- package/dist/cjs/models/Notification.js +24 -0
- package/dist/cjs/models/Notification.js.map +1 -0
- package/dist/cjs/models/Role.js +32 -0
- package/dist/cjs/models/Role.js.map +1 -0
- package/dist/cjs/models/RosterMemberModel.js +19 -0
- package/dist/cjs/models/RosterMemberModel.js.map +1 -0
- package/dist/cjs/models/RosterModel.js +19 -0
- package/dist/cjs/models/RosterModel.js.map +1 -0
- package/dist/cjs/models/SubgroupModel.js +18 -0
- package/dist/cjs/models/SubgroupModel.js.map +1 -0
- package/dist/cjs/models/TeamMember.js +2 -3
- package/dist/cjs/models/TeamMember.js.map +1 -1
- package/dist/dts/api/AgeThresholdApi.d.ts +119 -0
- package/dist/dts/api/AgeThresholdApi.d.ts.map +1 -0
- package/dist/dts/api/Auth.d.ts +60 -1
- package/dist/dts/api/Auth.d.ts.map +1 -1
- package/dist/dts/api/Invite.d.ts +7 -7
- package/dist/dts/api/Invite.d.ts.map +1 -1
- package/dist/dts/api/NotificationApi.d.ts +53 -0
- package/dist/dts/api/NotificationApi.d.ts.map +1 -0
- package/dist/dts/api/RoleApi.d.ts +138 -0
- package/dist/dts/api/RoleApi.d.ts.map +1 -0
- package/dist/dts/api/Roster.d.ts +225 -0
- package/dist/dts/api/Roster.d.ts.map +1 -0
- package/dist/dts/api/SubgroupApi.d.ts +140 -0
- package/dist/dts/api/SubgroupApi.d.ts.map +1 -0
- package/dist/dts/index.d.ts +12 -0
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/models/AgeThresholdRule.d.ts +97 -0
- package/dist/dts/models/AgeThresholdRule.d.ts.map +1 -0
- package/dist/dts/models/MemberRole.d.ts +16 -0
- package/dist/dts/models/MemberRole.d.ts.map +1 -0
- package/dist/dts/models/Notification.d.ts +125 -0
- package/dist/dts/models/Notification.d.ts.map +1 -0
- package/dist/dts/models/Role.d.ts +102 -0
- package/dist/dts/models/Role.d.ts.map +1 -0
- package/dist/dts/models/RosterMemberModel.d.ts +71 -0
- package/dist/dts/models/RosterMemberModel.d.ts.map +1 -0
- package/dist/dts/models/RosterModel.d.ts +84 -0
- package/dist/dts/models/RosterModel.d.ts.map +1 -0
- package/dist/dts/models/SubgroupModel.d.ts +71 -0
- package/dist/dts/models/SubgroupModel.d.ts.map +1 -0
- package/dist/dts/models/TeamInvite.d.ts +4 -4
- package/dist/dts/models/TeamMember.d.ts +11 -13
- package/dist/dts/models/TeamMember.d.ts.map +1 -1
- package/dist/esm/api/AgeThresholdApi.js +72 -0
- package/dist/esm/api/AgeThresholdApi.js.map +1 -0
- package/dist/esm/api/Auth.js +28 -1
- package/dist/esm/api/Auth.js.map +1 -1
- package/dist/esm/api/Invite.js +1 -2
- package/dist/esm/api/Invite.js.map +1 -1
- package/dist/esm/api/NotificationApi.js +32 -0
- package/dist/esm/api/NotificationApi.js.map +1 -0
- package/dist/esm/api/RoleApi.js +106 -0
- package/dist/esm/api/RoleApi.js.map +1 -0
- package/dist/esm/api/Roster.js +142 -0
- package/dist/esm/api/Roster.js.map +1 -0
- package/dist/esm/api/SubgroupApi.js +106 -0
- package/dist/esm/api/SubgroupApi.js.map +1 -0
- package/dist/esm/index.js +12 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/models/AgeThresholdRule.js +14 -0
- package/dist/esm/models/AgeThresholdRule.js.map +1 -0
- package/dist/esm/models/MemberRole.js +8 -0
- package/dist/esm/models/MemberRole.js.map +1 -0
- package/dist/esm/models/Notification.js +17 -0
- package/dist/esm/models/Notification.js.map +1 -0
- package/dist/esm/models/Role.js +24 -0
- package/dist/esm/models/Role.js.map +1 -0
- package/dist/esm/models/RosterMemberModel.js +12 -0
- package/dist/esm/models/RosterMemberModel.js.map +1 -0
- package/dist/esm/models/RosterModel.js +12 -0
- package/dist/esm/models/RosterModel.js.map +1 -0
- package/dist/esm/models/SubgroupModel.js +11 -0
- package/dist/esm/models/SubgroupModel.js.map +1 -0
- package/dist/esm/models/TeamMember.js +1 -2
- package/dist/esm/models/TeamMember.js.map +1 -1
- package/package.json +1 -1
- package/src/api/AgeThresholdApi.ts +99 -0
- package/src/api/Auth.ts +52 -0
- package/src/api/Invite.ts +1 -2
- package/src/api/NotificationApi.ts +49 -0
- package/src/api/RoleApi.ts +130 -0
- package/src/api/Roster.ts +176 -0
- package/src/api/SubgroupApi.ts +146 -0
- package/src/index.ts +24 -0
- package/src/models/AgeThresholdRule.ts +16 -0
- package/src/models/MemberRole.ts +8 -0
- package/src/models/Notification.ts +26 -0
- package/src/models/Role.ts +53 -0
- package/src/models/RosterMemberModel.ts +14 -0
- package/src/models/RosterModel.ts +14 -0
- package/src/models/SubgroupModel.ts +13 -0
- 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":"AAAA,SAASA,eAAe,EAAEC,YAAY,EAAEC,aAAa,QAAQ,kBAAkB;AAC/E,SAASC,MAAM,QAAQ,QAAQ;AAC/B,SAASC,cAAc,QAAQ,gBAAgB;AAC/C,SAASC,UAAU,QAAQ,mBAAmB;AAC9C,SAASC,QAAQ,QAAQ,0BAA0B;AACnD,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,SAASC,YAAY,QAAQ,yBAAyB;AACtD,SAASC,MAAM,EAAEC,QAAQ,EAAEC,WAAW,EAAEC,MAAM,QAAQ,mBAAmB;AAEzE,OAAM,MAAOC,YAAa,sBAAQV,MAAM,CAACW,KAAK,CAAe,cAAc,CAAC,CAAC;EAC3EC,QAAQ,EAAEP,YAAY;EACtBQ,MAAM,EAAEJ,MAAM;EACdK,SAAS,eAAEd,MAAM,CAACe,KAAK,CAACf,MAAM,CAACgB,MAAM,CAAC;EACtCC,WAAW,eAAEjB,MAAM,CAACe,KAAK,CAACb,UAAU,CAAC;EACrCgB,IAAI,eAAElB,MAAM,CAACmB,MAAM,CAACnB,MAAM,CAACgB,MAAM,CAAC;EAClCI,SAAS,eAAEpB,MAAM,CAACmB,MAAM,CAACnB,MAAM,CAACqB,MAAM,CAAC;EACvCC,MAAM,eAAEtB,MAAM,CAACmB,MAAM,CAACb,MAAM,CAAC;EAC7BiB,YAAY,eAAEvB,MAAM,CAACmB,MAAM,CAACnB,MAAM,CAACqB,MAAM,CAAC;EAC1CG,QAAQ,eAAExB,MAAM,CAACmB,MAAM,CAACZ,QAAQ,CAAC;EACjCkB,WAAW,eAAEzB,MAAM,CAACmB,MAAM,CAACX,WAAW,CAAC;EACvCkB,eAAe,EAAE1B,MAAM,CAACgB,MAAM;EAC9BW,aAAa,eAAE3B,MAAM,CAACmB,MAAM,CAACnB,MAAM,CAACgB,MAAM;CAC3C,CAAC;AAEF,OAAM,MAAOY,mBAAoB,sBAAQ5B,MAAM,CAACW,KAAK,CAAsB,qBAAqB,CAAC,CAAC;EAChGO,IAAI,eAAElB,MAAM,CAACmB,MAAM,CAACnB,MAAM,CAACgB,MAAM,CAAC;EAClCI,SAAS,eAAEpB,MAAM,CAACmB,MAAM,CAACnB,MAAM,CAACqB,MAAM,CAAC;EACvCC,MAAM,eAAEtB,MAAM,CAACmB,MAAM,CAACb,MAAM,CAAC;EAC7BiB,YAAY,eAAEvB,MAAM,CAACmB,MAAM,CAACnB,MAAM,CAACqB,MAAM,CAAC;EAC1CG,QAAQ,eAAExB,MAAM,CAACmB,MAAM,CAACZ,QAAQ,CAAC;EACjCkB,WAAW,eAAEzB,MAAM,CAACmB,MAAM,CAACX,WAAW;CACvC,CAAC;AAEF,OAAM,MAAOqB,cAAe,sBAAQ7B,MAAM,CAAC8B,WAAW,EAAkB,CACtE,gBAAgB,EAChB,EAAE,eACF/B,aAAa,CAACgC,WAAW,CAAC;EAAEC,MAAM,EAAE;AAAG,CAAE,CAAC,CAC3C;AAED,OAAM,MAAOC,SAAU,sBAAQjC,MAAM,CAAC8B,WAAW,EAAa,CAC5D,WAAW,EACX,EAAE,eACF/B,aAAa,CAACgC,WAAW,CAAC;EAAEC,MAAM,EAAE;AAAG,CAAE,CAAC,CAC3C;AAED,OAAM,MAAOE,cAAe,sBAAQlC,MAAM,CAAC8B,WAAW,EAAkB,CACtE,gBAAgB,EAChB,EAAE,eACF/B,aAAa,CAACgC,WAAW,CAAC;EAAEC,MAAM,EAAE;AAAG,CAAE,CAAC,CAC3C;AAED,OAAM,MAAOG,UAAW,sBAAQnC,MAAM,CAACW,KAAK,CAAa,YAAY,CAAC,CAAC;EACrEyB,QAAQ,EAAEjC,QAAQ;EAClBkC,MAAM,EAAEjC,MAAM;EACdc,IAAI,EAAElB,MAAM,CAACgB,MAAM;EACnBsB,MAAM,EAAEtC,MAAM,CAACuC,OAAO;EACtBC,WAAW,EAAExC,MAAM,CAACqB,MAAM;EAC1BoB,SAAS,EAAEzC,MAAM,CAACgB;CACnB,CAAC;AAEF,OAAM,MAAO0B,YAAa,sBAAQ1C,MAAM,CAACW,KAAK,CAAe,cAAc,CAAC,CAAC;EAC3EyB,QAAQ,EAAEjC,QAAQ;EAClBkC,MAAM,EAAEjC,MAAM;EACdc,IAAI,EAAElB,MAAM,CAACgB,MAAM;EACnBsB,MAAM,EAAEtC,MAAM,CAACuC,OAAO;EACtBE,SAAS,EAAEzC,MAAM,CAACgB,MAAM;EACxB2B,OAAO,eAAE3C,MAAM,CAACe,KAAK,CAACL,YAAY;CACnC,CAAC;AAEF,OAAM,MAAOkC,mBAAoB,sBAAQ5C,MAAM,CAACW,KAAK,CAAsB,qBAAqB,CAAC,CAAC;EAChGO,IAAI,EAAElB,MAAM,CAACgB;CACd,CAAC;AAEF,OAAM,MAAO6B,mBAAoB,sBAAQ7C,MAAM,CAACW,KAAK,CAAsB,qBAAqB,CAAC,CAAC;EAChGO,IAAI,eAAElB,MAAM,CAACmB,MAAM,CAACnB,MAAM,CAACgB,MAAM,CAAC;EAClCsB,MAAM,eAAEtC,MAAM,CAACmB,MAAM,CAACnB,MAAM,CAACuC,OAAO;CACrC,CAAC;AAEF,OAAM,MAAOO,sBAAuB,sBAAQ9C,MAAM,CAACW,KAAK,CACtD,wBAAwB,CACzB,CAAC;EACAC,QAAQ,EAAEP;CACX,CAAC;AAEF,OAAM,MAAO0C,cAAe,sBAAQjD,YAAY,CAACkD,IAAI,CAAC,QAAQ,CAAC,CAC5DC,GAAG,CACFpD,eAAe,CAACqD,GAAG,CAAC,aAAa,EAAE,wBAAwB,CAAC,CACzDC,UAAU,CAACnD,MAAM,CAACe,KAAK,CAACL,YAAY,CAAC,CAAC,CACtC0C,QAAQ,CAACnB,SAAS,EAAE;EAAED,MAAM,EAAE;AAAG,CAAE,CAAC,CACpCqB,OAAO,CAACrD,MAAM,CAACsD,MAAM,CAAC;EAAEjB,MAAM,EAAEjC;AAAM,CAAE,CAAC,CAAC,CAC1CmD,UAAU,CAACtD,cAAc,CAAC,CAC9B,CACAgD,GAAG,CACFpD,eAAe,CAACqD,GAAG,CAAC,WAAW,EAAE,kCAAkC,CAAC,CACjEC,UAAU,CAACzC,YAAY,CAAC,CACxB0C,QAAQ,CAACnB,SAAS,EAAE;EAAED,MAAM,EAAE;AAAG,CAAE,CAAC,CACpCoB,QAAQ,CAACvB,cAAc,EAAE;EAAEG,MAAM,EAAE;AAAG,CAAE,CAAC,CACzCqB,OAAO,CAACrD,MAAM,CAACsD,MAAM,CAAC;EAAEjB,MAAM,EAAEjC,MAAM;EAAEQ,QAAQ,EAAEP;AAAY,CAAE,CAAC,CAAC,CAClEkD,UAAU,CAACtD,cAAc,CAAC,CAC9B,CACAgD,GAAG,CACFpD,eAAe,CAAC2D,KAAK,CAAC,cAAc,EAAE,kCAAkC,CAAC,CACtEL,UAAU,CAACzC,YAAY,CAAC,CACxB0C,QAAQ,CAACnB,SAAS,EAAE;EAAED,MAAM,EAAE;AAAG,CAAE,CAAC,CACpCoB,QAAQ,CAACvB,cAAc,EAAE;EAAEG,MAAM,EAAE;AAAG,CAAE,CAAC,CACzCqB,OAAO,CAACrD,MAAM,CAACsD,MAAM,CAAC;EAAEjB,MAAM,EAAEjC,MAAM;EAAEQ,QAAQ,EAAEP;AAAY,CAAE,CAAC,CAAC,CAClEoD,UAAU,CAAC7B,mBAAmB,CAAC,CAC/B2B,UAAU,CAACtD,cAAc,CAAC,CAC9B,CACAgD,GAAG,CACFpD,eAAe,CAAC6D,GAAG,CAAC,kBAAkB,EAAE,kCAAkC,CAAC,CACxEP,UAAU,CAACnD,MAAM,CAAC2D,IAAI,CAAC,CACvBP,QAAQ,CAACnB,SAAS,EAAE;EAAED,MAAM,EAAE;AAAG,CAAE,CAAC,CACpCoB,QAAQ,CAACvB,cAAc,EAAE;EAAEG,MAAM,EAAE;AAAG,CAAE,CAAC,CACzCqB,OAAO,CAACrD,MAAM,CAACsD,MAAM,CAAC;EAAEjB,MAAM,EAAEjC,MAAM;EAAEQ,QAAQ,EAAEP;AAAY,CAAE,CAAC,CAAC,CAClEkD,UAAU,CAACtD,cAAc,CAAC,CAC9B,CACAgD,GAAG,CACFpD,eAAe,CAACqD,GAAG,CAAC,aAAa,EAAE,wBAAwB,CAAC,CACzDC,UAAU,CAACnD,MAAM,CAACe,KAAK,CAACoB,UAAU,CAAC,CAAC,CACpCiB,QAAQ,CAACnB,SAAS,EAAE;EAAED,MAAM,EAAE;AAAG,CAAE,CAAC,CACpCqB,OAAO,CAACrD,MAAM,CAACsD,MAAM,CAAC;EAAEjB,MAAM,EAAEjC;AAAM,CAAE,CAAC,CAAC,CAC1CmD,UAAU,CAACtD,cAAc,CAAC,CAC9B,CACAgD,GAAG,CACFpD,eAAe,CAAC+D,IAAI,CAAC,cAAc,EAAE,wBAAwB,CAAC,CAC3DT,UAAU,CAAChB,UAAU,EAAE;EAAEH,MAAM,EAAE;AAAG,CAAE,CAAC,CACvCoB,QAAQ,CAACnB,SAAS,EAAE;EAAED,MAAM,EAAE;AAAG,CAAE,CAAC,CACpCqB,OAAO,CAACrD,MAAM,CAACsD,MAAM,CAAC;EAAEjB,MAAM,EAAEjC;AAAM,CAAE,CAAC,CAAC,CAC1CqD,UAAU,CAACb,mBAAmB,CAAC,CAC/BW,UAAU,CAACtD,cAAc,CAAC,CAC9B,CACAgD,GAAG,CACFpD,eAAe,CAACqD,GAAG,CAAC,WAAW,EAAE,kCAAkC,CAAC,CACjEC,UAAU,CAACT,YAAY,CAAC,CACxBU,QAAQ,CAACnB,SAAS,EAAE;EAAED,MAAM,EAAE;AAAG,CAAE,CAAC,CACpCoB,QAAQ,CAAClB,cAAc,EAAE;EAAEF,MAAM,EAAE;AAAG,CAAE,CAAC,CACzCqB,OAAO,CAACrD,MAAM,CAACsD,MAAM,CAAC;EAAEjB,MAAM,EAAEjC,MAAM;EAAEgC,QAAQ,EAAEjC;AAAQ,CAAE,CAAC,CAAC,CAC9DoD,UAAU,CAACtD,cAAc,CAAC,CAC9B,CACAgD,GAAG,CACFpD,eAAe,CAAC2D,KAAK,CAAC,cAAc,EAAE,kCAAkC,CAAC,CACtEL,UAAU,CAAChB,UAAU,CAAC,CACtBiB,QAAQ,CAACnB,SAAS,EAAE;EAAED,MAAM,EAAE;AAAG,CAAE,CAAC,CACpCoB,QAAQ,CAAClB,cAAc,EAAE;EAAEF,MAAM,EAAE;AAAG,CAAE,CAAC,CACzCqB,OAAO,CAACrD,MAAM,CAACsD,MAAM,CAAC;EAAEjB,MAAM,EAAEjC,MAAM;EAAEgC,QAAQ,EAAEjC;AAAQ,CAAE,CAAC,CAAC,CAC9DsD,UAAU,CAACZ,mBAAmB,CAAC,CAC/BU,UAAU,CAACtD,cAAc,CAAC,CAC9B,CACAgD,GAAG,CACFpD,eAAe,CAAC6D,GAAG,CAAC,cAAc,EAAE,kCAAkC,CAAC,CACpEP,UAAU,CAACnD,MAAM,CAAC2D,IAAI,CAAC,CACvBP,QAAQ,CAACnB,SAAS,EAAE;EAAED,MAAM,EAAE;AAAG,CAAE,CAAC,CACpCoB,QAAQ,CAAClB,cAAc,EAAE;EAAEF,MAAM,EAAE;AAAG,CAAE,CAAC,CACzCqB,OAAO,CAACrD,MAAM,CAACsD,MAAM,CAAC;EAAEjB,MAAM,EAAEjC,MAAM;EAAEgC,QAAQ,EAAEjC;AAAQ,CAAE,CAAC,CAAC,CAC9DoD,UAAU,CAACtD,cAAc,CAAC,CAC9B,CACAgD,GAAG,CACFpD,eAAe,CAAC+D,IAAI,CAAC,iBAAiB,EAAE,0CAA0C,CAAC,CAChFT,UAAU,CAACnD,MAAM,CAAC2D,IAAI,CAAC,CACvBP,QAAQ,CAACnB,SAAS,EAAE;EAAED,MAAM,EAAE;AAAG,CAAE,CAAC,CACpCoB,QAAQ,CAAClB,cAAc,EAAE;EAAEF,MAAM,EAAE;AAAG,CAAE,CAAC,CACzCoB,QAAQ,CAACvB,cAAc,EAAE;EAAEG,MAAM,EAAE;AAAG,CAAE,CAAC,CACzCqB,OAAO,CAACrD,MAAM,CAACsD,MAAM,CAAC;EAAEjB,MAAM,EAAEjC,MAAM;EAAEgC,QAAQ,EAAEjC;AAAQ,CAAE,CAAC,CAAC,CAC9DsD,UAAU,CAACX,sBAAsB,CAAC,CAClCS,UAAU,CAACtD,cAAc,CAAC,CAC9B,CACAgD,GAAG,cACFpD,eAAe,CAAC6D,GAAG,CAAC,oBAAoB,EAAE,oDAAoD,CAAC,CAC5FP,UAAU,CAACnD,MAAM,CAAC2D,IAAI,CAAC,CACvBP,QAAQ,CAACnB,SAAS,EAAE;EAAED,MAAM,EAAE;AAAG,CAAE,CAAC,CACpCoB,QAAQ,CAAClB,cAAc,EAAE;EAAEF,MAAM,EAAE;AAAG,CAAE,CAAC,CACzCoB,QAAQ,CAACvB,cAAc,EAAE;EAAEG,MAAM,EAAE;AAAG,CAAE,CAAC,CACzCqB,OAAO,CAACrD,MAAM,CAACsD,MAAM,CAAC;EAAEjB,MAAM,EAAEjC,MAAM;EAAEgC,QAAQ,EAAEjC,QAAQ;EAAES,QAAQ,EAAEP;AAAY,CAAE,CAAC,CAAC,CACtFkD,UAAU,CAACtD,cAAc,CAAC,CAC9B","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":"AAAA,SAASA,eAAe,EAAEC,YAAY,EAAEC,aAAa,QAAQ,kBAAkB;AAC/E,SAASC,MAAM,QAAQ,QAAQ;AAC/B,SAASC,cAAc,QAAQ,gBAAgB;AAC/C,SAASC,UAAU,QAAQ,mBAAmB;AAC9C,SAASC,UAAU,QAAQ,4BAA4B;AACvD,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,SAASC,YAAY,QAAQ,yBAAyB;AAEtD,OAAM,MAAOC,YAAa,sBAAQN,MAAM,CAACO,KAAK,CAAe,cAAc,CAAC,CAAC;EAC3EC,UAAU,EAAEL,UAAU;EACtBM,MAAM,EAAEL,MAAM;EACdM,IAAI,EAAEV,MAAM,CAACW,MAAM;EACnBC,WAAW,EAAEZ,MAAM,CAACa;CACrB,CAAC;AAEF,OAAM,MAAOC,cAAe,sBAAQd,MAAM,CAACO,KAAK,CAAiB,gBAAgB,CAAC,CAAC;EACjFC,UAAU,EAAEL,UAAU;EACtBM,MAAM,EAAEL,MAAM;EACdM,IAAI,EAAEV,MAAM,CAACW,MAAM;EACnBI,WAAW,eAAEf,MAAM,CAACgB,KAAK,CAACd,UAAU,CAAC;EACrCe,OAAO,eAAEjB,MAAM,CAACgB,KAAK,cACnBhB,MAAM,CAACkB,MAAM,CAAC;IACZC,QAAQ,EAAEd,YAAY;IACtBK,IAAI,eAAEV,MAAM,CAACoB,MAAM,CAACpB,MAAM,CAACW,MAAM,CAAC;IAClCU,eAAe,EAAErB,MAAM,CAACW;GACzB,CAAC;CAEL,CAAC;AAEF,OAAM,MAAOW,qBAAsB,sBAAQtB,MAAM,CAACO,KAAK,CACrD,uBAAuB,CACxB,CAAC;EACAG,IAAI,EAAEV,MAAM,CAACuB;CACd,CAAC;AAEF,OAAM,MAAOC,qBAAsB,sBAAQxB,MAAM,CAACO,KAAK,CACrD,uBAAuB,CACxB,CAAC;EACAG,IAAI,EAAEV,MAAM,CAACuB;CACd,CAAC;AAEF,OAAM,MAAOE,wBAAyB,sBAAQzB,MAAM,CAACO,KAAK,CACxD,0BAA0B,CAC3B,CAAC;EACAY,QAAQ,EAAEd;CACX,CAAC;AAEF,OAAM,MAAOqB,6BAA8B,sBAAQ1B,MAAM,CAACO,KAAK,CAC7D,+BAA+B,CAChC,CAAC;EACAQ,WAAW,eAAEf,MAAM,CAACgB,KAAK,CAACd,UAAU;CACrC,CAAC;AAEF,OAAM,MAAOyB,gBAAiB,sBAAQ3B,MAAM,CAAC4B,WAAW,EAAoB,CAC1E,kBAAkB,EAClB,EAAE,eACF7B,aAAa,CAAC8B,WAAW,CAAC;EAAEC,MAAM,EAAE;AAAG,CAAE,CAAC,CAC3C;AAED,OAAM,MAAOC,SAAU,sBAAQ/B,MAAM,CAAC4B,WAAW,EAAa,CAC5D,mBAAmB,EACnB,EAAE,eACF7B,aAAa,CAAC8B,WAAW,CAAC;EAAEC,MAAM,EAAE;AAAG,CAAE,CAAC,CAC3C;AAED,OAAM,MAAOE,cAAe,sBAAQhC,MAAM,CAAC4B,WAAW,EAAkB,CACtE,wBAAwB,EACxB,EAAE,eACF7B,aAAa,CAAC8B,WAAW,CAAC;EAAEC,MAAM,EAAE;AAAG,CAAE,CAAC,CAC3C;AAED,OAAM,MAAOG,gBAAiB,sBAAQnC,YAAY,CAACoC,IAAI,CAAC,UAAU,CAAC,CAChEC,GAAG,CACFtC,eAAe,CAACuC,GAAG,CAAC,eAAe,EAAE,0BAA0B,CAAC,CAC7DC,UAAU,CAACrC,MAAM,CAACgB,KAAK,CAACV,YAAY,CAAC,CAAC,CACtCgC,QAAQ,CAACP,SAAS,EAAE;EAAED,MAAM,EAAE;AAAG,CAAE,CAAC,CACpCS,OAAO,CAACvC,MAAM,CAACkB,MAAM,CAAC;EAAET,MAAM,EAAEL;AAAM,CAAE,CAAC,CAAC,CAC1CoC,UAAU,CAACvC,cAAc,CAAC,CAC9B,CACAkC,GAAG,CACFtC,eAAe,CAAC4C,IAAI,CAAC,gBAAgB,EAAE,0BAA0B,CAAC,CAC/DJ,UAAU,CAAC/B,YAAY,EAAE;EAAEwB,MAAM,EAAE;AAAG,CAAE,CAAC,CACzCQ,QAAQ,CAACP,SAAS,EAAE;EAAED,MAAM,EAAE;AAAG,CAAE,CAAC,CACpCS,OAAO,CAACvC,MAAM,CAACkB,MAAM,CAAC;EAAET,MAAM,EAAEL;AAAM,CAAE,CAAC,CAAC,CAC1CsC,UAAU,CAACpB,qBAAqB,CAAC,CACjCkB,UAAU,CAACvC,cAAc,CAAC,CAC9B,CACAkC,GAAG,CACFtC,eAAe,CAACuC,GAAG,CAAC,aAAa,EAAE,sCAAsC,CAAC,CACvEC,UAAU,CAACvB,cAAc,CAAC,CAC1BwB,QAAQ,CAACP,SAAS,EAAE;EAAED,MAAM,EAAE;AAAG,CAAE,CAAC,CACpCQ,QAAQ,CAACX,gBAAgB,EAAE;EAAEG,MAAM,EAAE;AAAG,CAAE,CAAC,CAC3CS,OAAO,CAACvC,MAAM,CAACkB,MAAM,CAAC;EAAET,MAAM,EAAEL,MAAM;EAAEI,UAAU,EAAEL;AAAU,CAAE,CAAC,CAAC,CAClEqC,UAAU,CAACvC,cAAc,CAAC,CAC9B,CACAkC,GAAG,CACFtC,eAAe,CAAC8C,KAAK,CAAC,gBAAgB,EAAE,sCAAsC,CAAC,CAC5EN,UAAU,CAAC/B,YAAY,CAAC,CACxBgC,QAAQ,CAACP,SAAS,EAAE;EAAED,MAAM,EAAE;AAAG,CAAE,CAAC,CACpCQ,QAAQ,CAACX,gBAAgB,EAAE;EAAEG,MAAM,EAAE;AAAG,CAAE,CAAC,CAC3CS,OAAO,CAACvC,MAAM,CAACkB,MAAM,CAAC;EAAET,MAAM,EAAEL,MAAM;EAAEI,UAAU,EAAEL;AAAU,CAAE,CAAC,CAAC,CAClEuC,UAAU,CAAClB,qBAAqB,CAAC,CACjCgB,UAAU,CAACvC,cAAc,CAAC,CAC9B,CACAkC,GAAG,CACFtC,eAAe,CAAC+C,GAAG,CAAC,gBAAgB,EAAE,sCAAsC,CAAC,CAC1EP,UAAU,CAACrC,MAAM,CAAC6C,IAAI,CAAC,CACvBP,QAAQ,CAACP,SAAS,EAAE;EAAED,MAAM,EAAE;AAAG,CAAE,CAAC,CACpCQ,QAAQ,CAACX,gBAAgB,EAAE;EAAEG,MAAM,EAAE;AAAG,CAAE,CAAC,CAC3CS,OAAO,CAACvC,MAAM,CAACkB,MAAM,CAAC;EAAET,MAAM,EAAEL,MAAM;EAAEI,UAAU,EAAEL;AAAU,CAAE,CAAC,CAAC,CAClEqC,UAAU,CAACvC,cAAc,CAAC,CAC9B,CACAkC,GAAG,CACFtC,eAAe,CAAC4C,IAAI,CAAC,mBAAmB,EAAE,8CAA8C,CAAC,CACtFJ,UAAU,CAACrC,MAAM,CAAC6C,IAAI,EAAE;EAAEf,MAAM,EAAE;AAAG,CAAE,CAAC,CACxCQ,QAAQ,CAACP,SAAS,EAAE;EAAED,MAAM,EAAE;AAAG,CAAE,CAAC,CACpCQ,QAAQ,CAACX,gBAAgB,EAAE;EAAEG,MAAM,EAAE;AAAG,CAAE,CAAC,CAC3CQ,QAAQ,CAACN,cAAc,EAAE;EAAEF,MAAM,EAAE;AAAG,CAAE,CAAC,CACzCS,OAAO,CAACvC,MAAM,CAACkB,MAAM,CAAC;EAAET,MAAM,EAAEL,MAAM;EAAEI,UAAU,EAAEL;AAAU,CAAE,CAAC,CAAC,CAClEuC,UAAU,CAACjB,wBAAwB,CAAC,CACpCe,UAAU,CAACvC,cAAc,CAAC,CAC9B,CACAkC,GAAG,CACFtC,eAAe,CAAC+C,GAAG,CACjB,sBAAsB,EACtB,wDAAwD,CACzD,CACEP,UAAU,CAACrC,MAAM,CAAC6C,IAAI,CAAC,CACvBP,QAAQ,CAACP,SAAS,EAAE;EAAED,MAAM,EAAE;AAAG,CAAE,CAAC,CACpCQ,QAAQ,CAACX,gBAAgB,EAAE;EAAEG,MAAM,EAAE;AAAG,CAAE,CAAC,CAC3CQ,QAAQ,CAACN,cAAc,EAAE;EAAEF,MAAM,EAAE;AAAG,CAAE,CAAC,CACzCS,OAAO,CAACvC,MAAM,CAACkB,MAAM,CAAC;EAAET,MAAM,EAAEL,MAAM;EAAEI,UAAU,EAAEL,UAAU;EAAEgB,QAAQ,EAAEd;AAAY,CAAE,CAAC,CAAC,CAC1FmC,UAAU,CAACvC,cAAc,CAAC,CAC9B,CACAkC,GAAG,cACFtC,eAAe,CAAC8C,KAAK,CACnB,wBAAwB,EACxB,kDAAkD,CACnD,CACEN,UAAU,CAACvB,cAAc,CAAC,CAC1BwB,QAAQ,CAACP,SAAS,EAAE;EAAED,MAAM,EAAE;AAAG,CAAE,CAAC,CACpCQ,QAAQ,CAACX,gBAAgB,EAAE;EAAEG,MAAM,EAAE;AAAG,CAAE,CAAC,CAC3CS,OAAO,CAACvC,MAAM,CAACkB,MAAM,CAAC;EAAET,MAAM,EAAEL,MAAM;EAAEI,UAAU,EAAEL;AAAU,CAAE,CAAC,CAAC,CAClEuC,UAAU,CAAChB,6BAA6B,CAAC,CACzCc,UAAU,CAACvC,cAAc,CAAC,CAC9B","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';
|
package/dist/esm/index.js.map
CHANGED
|
@@ -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
|
-
|
|
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","
|
|
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
|
@@ -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
|
-
|
|
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
|
+
) {}
|