pro-clubs-shared-dtos 3.0.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/INTEGRATION_GUIDE.md +237 -0
- package/MIGRATION_SUMMARY.md +163 -0
- package/README.md +284 -0
- package/dist/dtos/api-error-response.d.ts +33 -0
- package/dist/dtos/api-error-response.d.ts.map +1 -0
- package/dist/dtos/api-error-response.js +27 -0
- package/dist/dtos/api-error-response.js.map +1 -0
- package/dist/dtos/api-response/api-error-response.dto.d.ts +33 -0
- package/dist/dtos/api-response/api-error-response.dto.d.ts.map +1 -0
- package/dist/dtos/api-response/api-error-response.dto.js +27 -0
- package/dist/dtos/api-response/api-error-response.dto.js.map +1 -0
- package/dist/dtos/api-response/index.d.ts +2 -0
- package/dist/dtos/api-response/index.d.ts.map +1 -0
- package/dist/dtos/api-response/index.js +18 -0
- package/dist/dtos/api-response/index.js.map +1 -0
- package/dist/dtos/enums/extended-game-status.d.ts +9 -0
- package/dist/dtos/enums/extended-game-status.d.ts.map +1 -0
- package/dist/dtos/enums/extended-game-status.enum.d.ts +9 -0
- package/dist/dtos/enums/extended-game-status.enum.d.ts.map +1 -0
- package/dist/dtos/enums/extended-game-status.enum.js +13 -0
- package/dist/dtos/enums/extended-game-status.enum.js.map +1 -0
- package/dist/dtos/enums/extended-game-status.js +13 -0
- package/dist/dtos/enums/extended-game-status.js.map +1 -0
- package/dist/dtos/enums/index.d.ts +72 -0
- package/dist/dtos/enums/index.d.ts.map +1 -0
- package/dist/dtos/enums/index.js +97 -0
- package/dist/dtos/enums/index.js.map +1 -0
- package/dist/dtos/index.d.ts +5 -0
- package/dist/dtos/index.d.ts.map +1 -0
- package/dist/dtos/index.js +21 -0
- package/dist/dtos/index.js.map +1 -0
- package/dist/dtos/models/ban.d.ts +15 -0
- package/dist/dtos/models/ban.d.ts.map +1 -0
- package/dist/dtos/models/ban.js +87 -0
- package/dist/dtos/models/ban.js.map +1 -0
- package/dist/dtos/models/chat.d.ts +25 -0
- package/dist/dtos/models/chat.d.ts.map +1 -0
- package/dist/dtos/models/chat.js +95 -0
- package/dist/dtos/models/chat.js.map +1 -0
- package/dist/dtos/models/comment.d.ts +14 -0
- package/dist/dtos/models/comment.d.ts.map +1 -0
- package/dist/dtos/models/comment.js +46 -0
- package/dist/dtos/models/comment.js.map +1 -0
- package/dist/dtos/models/event.d.ts +54 -0
- package/dist/dtos/models/event.d.ts.map +1 -0
- package/dist/dtos/models/event.js +102 -0
- package/dist/dtos/models/event.js.map +1 -0
- package/dist/dtos/models/fixture.d.ts +26 -0
- package/dist/dtos/models/fixture.d.ts.map +1 -0
- package/dist/dtos/models/fixture.js +58 -0
- package/dist/dtos/models/fixture.js.map +1 -0
- package/dist/dtos/models/index.d.ts +23 -0
- package/dist/dtos/models/index.d.ts.map +1 -0
- package/dist/dtos/models/index.js +39 -0
- package/dist/dtos/models/index.js.map +1 -0
- package/dist/dtos/models/league.d.ts +20 -0
- package/dist/dtos/models/league.d.ts.map +1 -0
- package/dist/dtos/models/league.js +63 -0
- package/dist/dtos/models/league.js.map +1 -0
- package/dist/dtos/models/news.d.ts +47 -0
- package/dist/dtos/models/news.d.ts.map +1 -0
- package/dist/dtos/models/news.js +97 -0
- package/dist/dtos/models/news.js.map +1 -0
- package/dist/dtos/models/notification.d.ts +16 -0
- package/dist/dtos/models/notification.d.ts.map +1 -0
- package/dist/dtos/models/notification.js +93 -0
- package/dist/dtos/models/notification.js.map +1 -0
- package/dist/dtos/models/player-association-request.d.ts +16 -0
- package/dist/dtos/models/player-association-request.d.ts.map +1 -0
- package/dist/dtos/models/player-association-request.js +89 -0
- package/dist/dtos/models/player-association-request.js.map +1 -0
- package/dist/dtos/models/season-achievement.d.ts +86 -0
- package/dist/dtos/models/season-achievement.d.ts.map +1 -0
- package/dist/dtos/models/season-achievement.js +126 -0
- package/dist/dtos/models/season-achievement.js.map +1 -0
- package/dist/dtos/models/team-of-the-season.d.ts +31 -0
- package/dist/dtos/models/team-of-the-season.d.ts.map +1 -0
- package/dist/dtos/models/team-of-the-season.js +69 -0
- package/dist/dtos/models/team-of-the-season.js.map +1 -0
- package/dist/dtos/models/team.d.ts +63 -0
- package/dist/dtos/models/team.d.ts.map +1 -0
- package/dist/dtos/models/team.js +88 -0
- package/dist/dtos/models/team.js.map +1 -0
- package/dist/dtos/models/transfer-request.d.ts +18 -0
- package/dist/dtos/models/transfer-request.d.ts.map +1 -0
- package/dist/dtos/models/transfer-request.js +132 -0
- package/dist/dtos/models/transfer-request.js.map +1 -0
- package/dist/dtos/models/user.d.ts +21 -0
- package/dist/dtos/models/user.d.ts.map +1 -0
- package/dist/dtos/models/user.js +109 -0
- package/dist/dtos/models/user.js.map +1 -0
- package/dist/dtos/requests/create-player-request.d.ts +12 -0
- package/dist/dtos/requests/create-player-request.d.ts.map +1 -0
- package/dist/dtos/requests/create-player-request.js +3 -0
- package/dist/dtos/requests/create-player-request.js.map +1 -0
- package/dist/dtos/requests/fixture-game-requests.d.ts +25 -0
- package/dist/dtos/requests/fixture-game-requests.d.ts.map +1 -0
- package/dist/dtos/requests/fixture-game-requests.js +3 -0
- package/dist/dtos/requests/fixture-game-requests.js.map +1 -0
- package/dist/dtos/requests/fixture-requests.d.ts +12 -0
- package/dist/dtos/requests/fixture-requests.d.ts.map +1 -0
- package/dist/dtos/requests/fixture-requests.js +3 -0
- package/dist/dtos/requests/fixture-requests.js.map +1 -0
- package/dist/dtos/requests/game-requests.d.ts +15 -0
- package/dist/dtos/requests/game-requests.d.ts.map +1 -0
- package/dist/dtos/requests/game-requests.js +3 -0
- package/dist/dtos/requests/game-requests.js.map +1 -0
- package/dist/dtos/requests/index.d.ts +8 -0
- package/dist/dtos/requests/index.d.ts.map +1 -0
- package/dist/dtos/requests/index.js +24 -0
- package/dist/dtos/requests/index.js.map +1 -0
- package/dist/dtos/requests/player-performance-request.d.ts +15 -0
- package/dist/dtos/requests/player-performance-request.d.ts.map +1 -0
- package/dist/dtos/requests/player-performance-request.js +3 -0
- package/dist/dtos/requests/player-performance-request.js.map +1 -0
- package/dist/dtos/requests/player-requests.d.ts +9 -0
- package/dist/dtos/requests/player-requests.d.ts.map +1 -0
- package/dist/dtos/requests/player-requests.js +3 -0
- package/dist/dtos/requests/player-requests.js.map +1 -0
- package/dist/dtos/requests/update-player-data-request.d.ts +9 -0
- package/dist/dtos/requests/update-player-data-request.d.ts.map +1 -0
- package/dist/dtos/requests/update-player-data-request.js +3 -0
- package/dist/dtos/requests/update-player-data-request.js.map +1 -0
- package/dist/dtos/responses/api-error-response.interface.d.ts +33 -0
- package/dist/dtos/responses/api-error-response.interface.d.ts.map +1 -0
- package/dist/dtos/responses/api-error-response.interface.js +27 -0
- package/dist/dtos/responses/api-error-response.interface.js.map +1 -0
- package/dist/dtos/responses/error-dtos.d.ts +33 -0
- package/dist/dtos/responses/error-dtos.d.ts.map +1 -0
- package/dist/dtos/responses/error-dtos.js +27 -0
- package/dist/dtos/responses/error-dtos.js.map +1 -0
- package/dist/dtos/responses/event-dtos.d.ts +84 -0
- package/dist/dtos/responses/event-dtos.d.ts.map +1 -0
- package/dist/dtos/responses/event-dtos.js +3 -0
- package/dist/dtos/responses/event-dtos.js.map +1 -0
- package/dist/dtos/responses/fixture-dtos.d.ts +46 -0
- package/dist/dtos/responses/fixture-dtos.d.ts.map +1 -0
- package/dist/dtos/responses/fixture-dtos.js +3 -0
- package/dist/dtos/responses/fixture-dtos.js.map +1 -0
- package/dist/dtos/responses/game-dtos.d.ts +76 -0
- package/dist/dtos/responses/game-dtos.d.ts.map +1 -0
- package/dist/dtos/responses/game-dtos.js +3 -0
- package/dist/dtos/responses/game-dtos.js.map +1 -0
- package/dist/dtos/responses/index.d.ts +11 -0
- package/dist/dtos/responses/index.d.ts.map +1 -0
- package/dist/dtos/responses/index.js +27 -0
- package/dist/dtos/responses/index.js.map +1 -0
- package/dist/dtos/responses/league-dtos.d.ts +10 -0
- package/dist/dtos/responses/league-dtos.d.ts.map +1 -0
- package/dist/dtos/responses/league-dtos.js +3 -0
- package/dist/dtos/responses/league-dtos.js.map +1 -0
- package/dist/dtos/responses/notification-dtos.d.ts +21 -0
- package/dist/dtos/responses/notification-dtos.d.ts.map +1 -0
- package/dist/dtos/responses/notification-dtos.js +3 -0
- package/dist/dtos/responses/notification-dtos.js.map +1 -0
- package/dist/dtos/responses/player-dtos.d.ts +83 -0
- package/dist/dtos/responses/player-dtos.d.ts.map +1 -0
- package/dist/dtos/responses/player-dtos.js +3 -0
- package/dist/dtos/responses/player-dtos.js.map +1 -0
- package/dist/dtos/responses/stats-dtos.d.ts +77 -0
- package/dist/dtos/responses/stats-dtos.d.ts.map +1 -0
- package/dist/dtos/responses/stats-dtos.js +3 -0
- package/dist/dtos/responses/stats-dtos.js.map +1 -0
- package/dist/dtos/responses/team-dtos.d.ts +28 -0
- package/dist/dtos/responses/team-dtos.d.ts.map +1 -0
- package/dist/dtos/responses/team-dtos.js +3 -0
- package/dist/dtos/responses/team-dtos.js.map +1 -0
- package/dist/dtos/responses/transfer-dtos.d.ts +60 -0
- package/dist/dtos/responses/transfer-dtos.d.ts.map +1 -0
- package/dist/dtos/responses/transfer-dtos.js +3 -0
- package/dist/dtos/responses/transfer-dtos.js.map +1 -0
- package/dist/dtos/transfer-request/index.d.ts +2 -0
- package/dist/dtos/transfer-request/index.d.ts.map +1 -0
- package/dist/dtos/transfer-request/index.js +18 -0
- package/dist/dtos/transfer-request/index.js.map +1 -0
- package/dist/dtos/transfer-request/transfer-request.dto.d.ts +1 -0
- package/dist/dtos/transfer-request/transfer-request.dto.d.ts.map +1 -0
- package/dist/dtos/transfer-request/transfer-request.dto.js +2 -0
- package/dist/dtos/transfer-request/transfer-request.dto.js.map +1 -0
- package/dist/enums/event-enums.d.ts +10 -0
- package/dist/enums/event-enums.d.ts.map +1 -0
- package/dist/enums/event-enums.js +15 -0
- package/dist/enums/event-enums.js.map +1 -0
- package/dist/enums/extended-game-status.d.ts +10 -0
- package/dist/enums/extended-game-status.d.ts.map +1 -0
- package/dist/enums/extended-game-status.js +14 -0
- package/dist/enums/extended-game-status.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +40 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/api-error-response.d.ts +33 -0
- package/dist/interfaces/api-error-response.d.ts.map +1 -0
- package/dist/interfaces/api-error-response.js +27 -0
- package/dist/interfaces/api-error-response.js.map +1 -0
- package/dist/interfaces/event.dto.d.ts +86 -0
- package/dist/interfaces/event.dto.d.ts.map +1 -0
- package/dist/interfaces/event.dto.js +34 -0
- package/dist/interfaces/event.dto.js.map +1 -0
- package/dist/interfaces/fixture/fixture-controller.interface.d.ts +7 -0
- package/dist/interfaces/fixture/fixture-controller.interface.d.ts.map +1 -0
- package/dist/interfaces/fixture/fixture-controller.interface.js +3 -0
- package/dist/interfaces/fixture/fixture-controller.interface.js.map +1 -0
- package/dist/interfaces/fixture/fixture-repository.interface.d.ts +14 -0
- package/dist/interfaces/fixture/fixture-repository.interface.d.ts.map +1 -0
- package/dist/interfaces/fixture/fixture-repository.interface.js +3 -0
- package/dist/interfaces/fixture/fixture-repository.interface.js.map +1 -0
- package/dist/interfaces/fixture/fixture-service.interface.d.ts +11 -0
- package/dist/interfaces/fixture/fixture-service.interface.d.ts.map +1 -0
- package/dist/interfaces/fixture/fixture-service.interface.js +3 -0
- package/dist/interfaces/fixture/fixture-service.interface.js.map +1 -0
- package/dist/interfaces/fixture/index.d.ts +5 -0
- package/dist/interfaces/fixture/index.d.ts.map +1 -0
- package/dist/interfaces/fixture/index.js +3 -0
- package/dist/interfaces/fixture/index.js.map +1 -0
- package/dist/interfaces/game/game-controller.interface.d.ts +16 -0
- package/dist/interfaces/game/game-controller.interface.d.ts.map +1 -0
- package/dist/interfaces/game/game-controller.interface.js +3 -0
- package/dist/interfaces/game/game-controller.interface.js.map +1 -0
- package/dist/interfaces/game/game-repository.interface.d.ts +37 -0
- package/dist/interfaces/game/game-repository.interface.d.ts.map +1 -0
- package/dist/interfaces/game/game-repository.interface.js +3 -0
- package/dist/interfaces/game/game-repository.interface.js.map +1 -0
- package/dist/interfaces/game/game-service.interface.d.ts +32 -0
- package/dist/interfaces/game/game-service.interface.d.ts.map +1 -0
- package/dist/interfaces/game/game-service.interface.js +3 -0
- package/dist/interfaces/game/game-service.interface.js.map +1 -0
- package/dist/interfaces/game/index.d.ts +5 -0
- package/dist/interfaces/game/index.d.ts.map +1 -0
- package/dist/interfaces/game/index.js +3 -0
- package/dist/interfaces/game/index.js.map +1 -0
- package/dist/interfaces/league/index.d.ts +5 -0
- package/dist/interfaces/league/index.d.ts.map +1 -0
- package/dist/interfaces/league/index.js +3 -0
- package/dist/interfaces/league/index.js.map +1 -0
- package/dist/interfaces/league/league-controller.interface.d.ts +17 -0
- package/dist/interfaces/league/league-controller.interface.d.ts.map +1 -0
- package/dist/interfaces/league/league-controller.interface.js +3 -0
- package/dist/interfaces/league/league-controller.interface.js.map +1 -0
- package/dist/interfaces/league/league-repository.interface.d.ts +30 -0
- package/dist/interfaces/league/league-repository.interface.d.ts.map +1 -0
- package/dist/interfaces/league/league-repository.interface.js +3 -0
- package/dist/interfaces/league/league-repository.interface.js.map +1 -0
- package/dist/interfaces/league/league-service.interface.d.ts +54 -0
- package/dist/interfaces/league/league-service.interface.d.ts.map +1 -0
- package/dist/interfaces/league/league-service.interface.js +3 -0
- package/dist/interfaces/league/league-service.interface.js.map +1 -0
- package/dist/interfaces/news/index.d.ts +5 -0
- package/dist/interfaces/news/index.d.ts.map +1 -0
- package/dist/interfaces/news/index.js +3 -0
- package/dist/interfaces/news/index.js.map +1 -0
- package/dist/interfaces/news/news-controller.interface.d.ts +10 -0
- package/dist/interfaces/news/news-controller.interface.d.ts.map +1 -0
- package/dist/interfaces/news/news-controller.interface.js +3 -0
- package/dist/interfaces/news/news-controller.interface.js.map +1 -0
- package/dist/interfaces/news/news-repository.interface.d.ts +11 -0
- package/dist/interfaces/news/news-repository.interface.d.ts.map +1 -0
- package/dist/interfaces/news/news-repository.interface.js +3 -0
- package/dist/interfaces/news/news-repository.interface.js.map +1 -0
- package/dist/interfaces/news/news-service.interface.d.ts +21 -0
- package/dist/interfaces/news/news-service.interface.d.ts.map +1 -0
- package/dist/interfaces/news/news-service.interface.js +3 -0
- package/dist/interfaces/news/news-service.interface.js.map +1 -0
- package/dist/interfaces/player/index.d.ts +5 -0
- package/dist/interfaces/player/index.d.ts.map +1 -0
- package/dist/interfaces/player/index.js +3 -0
- package/dist/interfaces/player/index.js.map +1 -0
- package/dist/interfaces/player/player-comparison.interface.d.ts +71 -0
- package/dist/interfaces/player/player-comparison.interface.d.ts.map +1 -0
- package/dist/interfaces/player/player-comparison.interface.js +3 -0
- package/dist/interfaces/player/player-comparison.interface.js.map +1 -0
- package/dist/interfaces/player/player-controller.interface.d.ts +23 -0
- package/dist/interfaces/player/player-controller.interface.d.ts.map +1 -0
- package/dist/interfaces/player/player-controller.interface.js +3 -0
- package/dist/interfaces/player/player-controller.interface.js.map +1 -0
- package/dist/interfaces/player/player-opponent-analysis.interface.d.ts +75 -0
- package/dist/interfaces/player/player-opponent-analysis.interface.d.ts.map +1 -0
- package/dist/interfaces/player/player-opponent-analysis.interface.js +11 -0
- package/dist/interfaces/player/player-opponent-analysis.interface.js.map +1 -0
- package/dist/interfaces/player/player-repository.interface.d.ts +27 -0
- package/dist/interfaces/player/player-repository.interface.d.ts.map +1 -0
- package/dist/interfaces/player/player-repository.interface.js +3 -0
- package/dist/interfaces/player/player-repository.interface.js.map +1 -0
- package/dist/interfaces/player/player-season-history.interface.d.ts +55 -0
- package/dist/interfaces/player/player-season-history.interface.d.ts.map +1 -0
- package/dist/interfaces/player/player-season-history.interface.js +3 -0
- package/dist/interfaces/player/player-season-history.interface.js.map +1 -0
- package/dist/interfaces/player/player-service.interface.d.ts +34 -0
- package/dist/interfaces/player/player-service.interface.d.ts.map +1 -0
- package/dist/interfaces/player/player-service.interface.js +3 -0
- package/dist/interfaces/player/player-service.interface.js.map +1 -0
- package/dist/interfaces/stats/top-contributor.interface.d.ts +16 -0
- package/dist/interfaces/stats/top-contributor.interface.d.ts.map +1 -0
- package/dist/interfaces/stats/top-contributor.interface.js +3 -0
- package/dist/interfaces/stats/top-contributor.interface.js.map +1 -0
- package/dist/interfaces/team/index.d.ts +5 -0
- package/dist/interfaces/team/index.d.ts.map +1 -0
- package/dist/interfaces/team/index.js +3 -0
- package/dist/interfaces/team/index.js.map +1 -0
- package/dist/interfaces/team/team-controller.interface.d.ts +20 -0
- package/dist/interfaces/team/team-controller.interface.d.ts.map +1 -0
- package/dist/interfaces/team/team-controller.interface.js +3 -0
- package/dist/interfaces/team/team-controller.interface.js.map +1 -0
- package/dist/interfaces/team/team-repository.interface.d.ts +17 -0
- package/dist/interfaces/team/team-repository.interface.d.ts.map +1 -0
- package/dist/interfaces/team/team-repository.interface.js +3 -0
- package/dist/interfaces/team/team-repository.interface.js.map +1 -0
- package/dist/interfaces/team/team-service.interface.d.ts +25 -0
- package/dist/interfaces/team/team-service.interface.d.ts.map +1 -0
- package/dist/interfaces/team/team-service.interface.js +3 -0
- package/dist/interfaces/team/team-service.interface.js.map +1 -0
- package/dist/interfaces/user/index.d.ts +4 -0
- package/dist/interfaces/user/index.d.ts.map +1 -0
- package/dist/interfaces/user/index.js +20 -0
- package/dist/interfaces/user/index.js.map +1 -0
- package/dist/interfaces/user/user-controller.interface.d.ts +18 -0
- package/dist/interfaces/user/user-controller.interface.d.ts.map +1 -0
- package/dist/interfaces/user/user-controller.interface.js +3 -0
- package/dist/interfaces/user/user-controller.interface.js.map +1 -0
- package/dist/interfaces/user/user-repository.interface.d.ts +12 -0
- package/dist/interfaces/user/user-repository.interface.d.ts.map +1 -0
- package/dist/interfaces/user/user-repository.interface.js +3 -0
- package/dist/interfaces/user/user-repository.interface.js.map +1 -0
- package/dist/interfaces/user/user-service.interface.d.ts +44 -0
- package/dist/interfaces/user/user-service.interface.d.ts.map +1 -0
- package/dist/interfaces/user/user-service.interface.js +3 -0
- package/dist/interfaces/user/user-service.interface.js.map +1 -0
- package/dist/interfaces/util-services/cache-service.interface.d.ts +6 -0
- package/dist/interfaces/util-services/cache-service.interface.d.ts.map +1 -0
- package/dist/interfaces/util-services/cache-service.interface.js +3 -0
- package/dist/interfaces/util-services/cache-service.interface.js.map +1 -0
- package/dist/interfaces/util-services/image-service.interface.d.ts +5 -0
- package/dist/interfaces/util-services/image-service.interface.d.ts.map +1 -0
- package/dist/interfaces/util-services/image-service.interface.js +3 -0
- package/dist/interfaces/util-services/image-service.interface.js.map +1 -0
- package/dist/interfaces/wrapper-services/index.d.ts +8 -0
- package/dist/interfaces/wrapper-services/index.d.ts.map +1 -0
- package/dist/interfaces/wrapper-services/index.js +3 -0
- package/dist/interfaces/wrapper-services/index.js.map +1 -0
- package/dist/interfaces/wrapper-services/league-stats-service.interface.d.ts +22 -0
- package/dist/interfaces/wrapper-services/league-stats-service.interface.d.ts.map +1 -0
- package/dist/interfaces/wrapper-services/league-stats-service.interface.js +3 -0
- package/dist/interfaces/wrapper-services/league-stats-service.interface.js.map +1 -0
- package/dist/interfaces/wrapper-services/player-stats-service.interface.d.ts +14 -0
- package/dist/interfaces/wrapper-services/player-stats-service.interface.d.ts.map +1 -0
- package/dist/interfaces/wrapper-services/player-stats-service.interface.js +3 -0
- package/dist/interfaces/wrapper-services/player-stats-service.interface.js.map +1 -0
- package/dist/interfaces/wrapper-services/player-team-service.interface.d.ts +7 -0
- package/dist/interfaces/wrapper-services/player-team-service.interface.d.ts.map +1 -0
- package/dist/interfaces/wrapper-services/player-team-service.interface.js +3 -0
- package/dist/interfaces/wrapper-services/player-team-service.interface.js.map +1 -0
- package/dist/interfaces/wrapper-services/season-achievement-service.interface.d.ts +145 -0
- package/dist/interfaces/wrapper-services/season-achievement-service.interface.d.ts.map +1 -0
- package/dist/interfaces/wrapper-services/season-achievement-service.interface.js +3 -0
- package/dist/interfaces/wrapper-services/season-achievement-service.interface.js.map +1 -0
- package/dist/interfaces/wrapper-services/season-completion-service.interface.d.ts +7 -0
- package/dist/interfaces/wrapper-services/season-completion-service.interface.d.ts.map +1 -0
- package/dist/interfaces/wrapper-services/season-completion-service.interface.js +3 -0
- package/dist/interfaces/wrapper-services/season-completion-service.interface.js.map +1 -0
- package/dist/interfaces/wrapper-services/team-league-service.interface.d.ts +6 -0
- package/dist/interfaces/wrapper-services/team-league-service.interface.d.ts.map +1 -0
- package/dist/interfaces/wrapper-services/team-league-service.interface.js +3 -0
- package/dist/interfaces/wrapper-services/team-league-service.interface.js.map +1 -0
- package/dist/interfaces/wrapper-services/team-of-the-season-service.interface.d.ts +16 -0
- package/dist/interfaces/wrapper-services/team-of-the-season-service.interface.d.ts.map +1 -0
- package/dist/interfaces/wrapper-services/team-of-the-season-service.interface.js +3 -0
- package/dist/interfaces/wrapper-services/team-of-the-season-service.interface.js.map +1 -0
- package/dist/interfaces/wrapper-services/team-of-the-week-service.interface.d.ts +8 -0
- package/dist/interfaces/wrapper-services/team-of-the-week-service.interface.d.ts.map +1 -0
- package/dist/interfaces/wrapper-services/team-of-the-week-service.interface.js +3 -0
- package/dist/interfaces/wrapper-services/team-of-the-week-service.interface.js.map +1 -0
- package/dist/interfaces/wrapper-services/team-stats-service.interface.d.ts +24 -0
- package/dist/interfaces/wrapper-services/team-stats-service.interface.d.ts.map +1 -0
- package/dist/interfaces/wrapper-services/team-stats-service.interface.js +3 -0
- package/dist/interfaces/wrapper-services/team-stats-service.interface.js.map +1 -0
- package/dist/models/ban.d.ts +19 -0
- package/dist/models/ban.d.ts.map +1 -0
- package/dist/models/ban.js +87 -0
- package/dist/models/ban.js.map +1 -0
- package/dist/models/chat.d.ts +29 -0
- package/dist/models/chat.d.ts.map +1 -0
- package/dist/models/chat.js +95 -0
- package/dist/models/chat.js.map +1 -0
- package/dist/models/comment/comment.d.ts +18 -0
- package/dist/models/comment/comment.d.ts.map +1 -0
- package/dist/models/comment/comment.js +46 -0
- package/dist/models/comment/comment.js.map +1 -0
- package/dist/models/event.d.ts +58 -0
- package/dist/models/event.d.ts.map +1 -0
- package/dist/models/event.js +102 -0
- package/dist/models/event.js.map +1 -0
- package/dist/models/fixture.d.ts +30 -0
- package/dist/models/fixture.d.ts.map +1 -0
- package/dist/models/fixture.js +58 -0
- package/dist/models/fixture.js.map +1 -0
- package/dist/models/game/ea-game-details.d.ts +97 -0
- package/dist/models/game/ea-game-details.d.ts.map +1 -0
- package/dist/models/game/ea-game-details.js +3 -0
- package/dist/models/game/ea-game-details.js.map +1 -0
- package/dist/models/game/game-types.d.ts +44 -0
- package/dist/models/game/game-types.d.ts.map +1 -0
- package/dist/models/game/game-types.js +3 -0
- package/dist/models/game/game-types.js.map +1 -0
- package/dist/models/game/game.d.ts +72 -0
- package/dist/models/game/game.d.ts.map +1 -0
- package/dist/models/game/game.js +145 -0
- package/dist/models/game/game.js.map +1 -0
- package/dist/models/game/player-validation.d.ts +196 -0
- package/dist/models/game/player-validation.d.ts.map +1 -0
- package/dist/models/game/player-validation.js +33 -0
- package/dist/models/game/player-validation.js.map +1 -0
- package/dist/models/league.d.ts +24 -0
- package/dist/models/league.d.ts.map +1 -0
- package/dist/models/league.js +63 -0
- package/dist/models/league.js.map +1 -0
- package/dist/models/news.d.ts +51 -0
- package/dist/models/news.d.ts.map +1 -0
- package/dist/models/news.js +97 -0
- package/dist/models/news.js.map +1 -0
- package/dist/models/notification.d.ts +20 -0
- package/dist/models/notification.d.ts.map +1 -0
- package/dist/models/notification.js +93 -0
- package/dist/models/notification.js.map +1 -0
- package/dist/models/player/player-types.d.ts +11 -0
- package/dist/models/player/player-types.d.ts.map +1 -0
- package/dist/models/player/player-types.js +3 -0
- package/dist/models/player/player-types.js.map +1 -0
- package/dist/models/player/player.d.ts +75 -0
- package/dist/models/player/player.d.ts.map +1 -0
- package/dist/models/player/player.js +115 -0
- package/dist/models/player/player.js.map +1 -0
- package/dist/models/player-association-request.d.ts +20 -0
- package/dist/models/player-association-request.d.ts.map +1 -0
- package/dist/models/player-association-request.js +89 -0
- package/dist/models/player-association-request.js.map +1 -0
- package/dist/models/prediction/prediction.d.ts +21 -0
- package/dist/models/prediction/prediction.d.ts.map +1 -0
- package/dist/models/prediction/prediction.js +42 -0
- package/dist/models/prediction/prediction.js.map +1 -0
- package/dist/models/season-achievement.d.ts +90 -0
- package/dist/models/season-achievement.d.ts.map +1 -0
- package/dist/models/season-achievement.js +126 -0
- package/dist/models/season-achievement.js.map +1 -0
- package/dist/models/team-of-the-season.d.ts +35 -0
- package/dist/models/team-of-the-season.d.ts.map +1 -0
- package/dist/models/team-of-the-season.js +69 -0
- package/dist/models/team-of-the-season.js.map +1 -0
- package/dist/models/team.d.ts +67 -0
- package/dist/models/team.d.ts.map +1 -0
- package/dist/models/team.js +88 -0
- package/dist/models/team.js.map +1 -0
- package/dist/models/transfer-request.d.ts +22 -0
- package/dist/models/transfer-request.d.ts.map +1 -0
- package/dist/models/transfer-request.js +132 -0
- package/dist/models/transfer-request.js.map +1 -0
- package/dist/models/user.d.ts +25 -0
- package/dist/models/user.d.ts.map +1 -0
- package/dist/models/user.js +109 -0
- package/dist/models/user.js.map +1 -0
- package/package.json +32 -0
- package/src/dtos/api-error-response.ts +71 -0
- package/src/dtos/enums/extended-game-status.enum.ts +13 -0
- package/src/dtos/enums/extended-game-status.ts +13 -0
- package/src/dtos/enums/index.ts +88 -0
- package/src/dtos/index.ts +7 -0
- package/src/dtos/requests/create-player-request.ts +12 -0
- package/src/dtos/requests/fixture-game-requests.ts +27 -0
- package/src/dtos/requests/fixture-requests.ts +13 -0
- package/src/dtos/requests/game-requests.ts +16 -0
- package/src/dtos/requests/index.ts +8 -0
- package/src/dtos/requests/player-performance-request.ts +18 -0
- package/src/dtos/requests/player-requests.ts +9 -0
- package/src/dtos/requests/update-player-data-request.ts +9 -0
- package/src/dtos/responses/api-error-response.interface.ts +71 -0
- package/src/dtos/responses/error-dtos.ts +39 -0
- package/src/dtos/responses/event-dtos.ts +97 -0
- package/src/dtos/responses/fixture-dtos.ts +52 -0
- package/src/dtos/responses/game-dtos.ts +82 -0
- package/src/dtos/responses/index.ts +11 -0
- package/src/dtos/responses/league-dtos.ts +10 -0
- package/src/dtos/responses/notification-dtos.ts +23 -0
- package/src/dtos/responses/player-dtos.ts +93 -0
- package/src/dtos/responses/stats-dtos.ts +87 -0
- package/src/dtos/responses/team-dtos.ts +30 -0
- package/src/dtos/responses/transfer-dtos.ts +66 -0
- package/src/dtos/transfer-request/index.ts +1 -0
- package/src/dtos/transfer-request/transfer-request.dto.ts +0 -0
- package/src/enums/extended-game-status.ts +15 -0
- package/src/index.ts +28 -0
- package/src/models/ban.ts +70 -0
- package/src/models/chat.ts +89 -0
- package/src/models/comment/comment.ts +62 -0
- package/src/models/event.ts +137 -0
- package/src/models/fixture.ts +52 -0
- package/src/models/game/ea-game-details.ts +124 -0
- package/src/models/game/game-types.ts +46 -0
- package/src/models/game/game.ts +170 -0
- package/src/models/game/player-validation.ts +262 -0
- package/src/models/league.ts +71 -0
- package/src/models/news.ts +130 -0
- package/src/models/notification.ts +80 -0
- package/src/models/player/player-types.ts +10 -0
- package/src/models/player/player.ts +174 -0
- package/src/models/player-association-request.ts +76 -0
- package/src/models/prediction/prediction.ts +54 -0
- package/src/models/season-achievement.ts +173 -0
- package/src/models/team-of-the-season.ts +74 -0
- package/src/models/team.ts +133 -0
- package/src/models/transfer-request.ts +129 -0
- package/src/models/user.ts +101 -0
- package/tsconfig.json +20 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
// Transfer Request DTO
|
|
2
|
+
export interface TransferRequestDTO {
|
|
3
|
+
id: string;
|
|
4
|
+
playerId: string;
|
|
5
|
+
fromTeamId: string | null; // null for free agents
|
|
6
|
+
toTeamId: string;
|
|
7
|
+
requestedBy: string;
|
|
8
|
+
status: string; // TRANSFER_REQUEST_STATUS
|
|
9
|
+
requestedAt: Date;
|
|
10
|
+
processedAt?: Date;
|
|
11
|
+
processedBy?: string;
|
|
12
|
+
reason?: string;
|
|
13
|
+
message?: string;
|
|
14
|
+
expiresAt: Date;
|
|
15
|
+
player?: {
|
|
16
|
+
id: string;
|
|
17
|
+
name: string;
|
|
18
|
+
position: string;
|
|
19
|
+
imgUrl?: string;
|
|
20
|
+
};
|
|
21
|
+
fromTeam?: {
|
|
22
|
+
id: string;
|
|
23
|
+
name: string;
|
|
24
|
+
imgUrl?: string;
|
|
25
|
+
};
|
|
26
|
+
toTeam?: {
|
|
27
|
+
id: string;
|
|
28
|
+
name: string;
|
|
29
|
+
imgUrl?: string;
|
|
30
|
+
};
|
|
31
|
+
requester?: {
|
|
32
|
+
firstName: string;
|
|
33
|
+
lastName: string;
|
|
34
|
+
email: string;
|
|
35
|
+
};
|
|
36
|
+
processor?: {
|
|
37
|
+
firstName: string;
|
|
38
|
+
lastName: string;
|
|
39
|
+
email: string;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// Paginated Transfer Requests DTO
|
|
44
|
+
export interface PaginatedTransferRequestsDTO {
|
|
45
|
+
data: TransferRequestDTO[];
|
|
46
|
+
page: number;
|
|
47
|
+
pageSize: number;
|
|
48
|
+
totalItems: number;
|
|
49
|
+
totalPages: number;
|
|
50
|
+
hasNextPage: boolean;
|
|
51
|
+
hasPreviousPage: boolean;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Create Transfer Request DTO
|
|
55
|
+
export interface CreateTransferRequestDTO {
|
|
56
|
+
playerId: string;
|
|
57
|
+
fromTeamId?: string | null;
|
|
58
|
+
toTeamId: string;
|
|
59
|
+
message?: string;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// Process Transfer Request DTO
|
|
63
|
+
export interface ProcessTransferRequestDTO {
|
|
64
|
+
action: 'approve' | 'reject';
|
|
65
|
+
reason?: string;
|
|
66
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '../responses/transfer-dtos';
|
|
File without changes
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extended Game Status enum that includes all possible game statuses
|
|
3
|
+
* used throughout the Pro Clubs Manager application.
|
|
4
|
+
*/
|
|
5
|
+
export enum EXTENDED_GAME_STATUS {
|
|
6
|
+
SCHEDULED = "Scheduled",
|
|
7
|
+
POSTPONED = "Postponed",
|
|
8
|
+
CANCELLED = "Cancelled",
|
|
9
|
+
PLAYED = "Played",
|
|
10
|
+
COMPLETED = "Completed",
|
|
11
|
+
LINEUP_AVAILABLE = "LineupAvailable"
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
// Alias for backward compatibility
|
|
15
|
+
export const GAME_STATUS = EXTENDED_GAME_STATUS;
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// Export all Models - Pure Data Types with NO SERVICE/CONTROLLER/REPOSITORY Dependencies
|
|
2
|
+
export * from './models/user';
|
|
3
|
+
export * from './models/team';
|
|
4
|
+
export * from './models/player/player';
|
|
5
|
+
export * from './models/player/player-types';
|
|
6
|
+
export * from './models/game/game';
|
|
7
|
+
export * from './models/game/game-types';
|
|
8
|
+
export * from './models/game/ea-game-details';
|
|
9
|
+
export * from './models/game/player-validation';
|
|
10
|
+
export * from './models/league';
|
|
11
|
+
export * from './models/fixture';
|
|
12
|
+
export * from './models/event';
|
|
13
|
+
export * from './models/news';
|
|
14
|
+
export * from './models/notification';
|
|
15
|
+
export * from './models/chat';
|
|
16
|
+
export * from './models/ban';
|
|
17
|
+
export * from './models/prediction/prediction';
|
|
18
|
+
export * from './models/transfer-request';
|
|
19
|
+
export * from './models/season-achievement';
|
|
20
|
+
export * from './models/team-of-the-season';
|
|
21
|
+
export * from './models/player-association-request';
|
|
22
|
+
export * from './models/comment/comment';
|
|
23
|
+
|
|
24
|
+
// Export Enums
|
|
25
|
+
export * from './enums/extended-game-status';
|
|
26
|
+
|
|
27
|
+
// Export Error Interfaces
|
|
28
|
+
export * from './dtos/api-error-response';
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import mongoose, { Schema, Document } from "mongoose";
|
|
2
|
+
|
|
3
|
+
export interface IBan extends Document {
|
|
4
|
+
playerId: mongoose.Types.ObjectId;
|
|
5
|
+
reason: string;
|
|
6
|
+
expireDate: Date;
|
|
7
|
+
createdAt: Date;
|
|
8
|
+
givenBy: mongoose.Types.ObjectId; // User who created the ban
|
|
9
|
+
isActive: boolean; // true if the ban is still active, false if lifted
|
|
10
|
+
liftedAt?: Date; // When the ban was lifted (if applicable)
|
|
11
|
+
liftedBy?: mongoose.Types.ObjectId; // Who lifted the ban
|
|
12
|
+
liftReason?: string; // Why the ban was lifted
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const banSchema = new Schema<IBan>({
|
|
16
|
+
playerId: {
|
|
17
|
+
type: Schema.Types.ObjectId,
|
|
18
|
+
ref: "Player",
|
|
19
|
+
required: true,
|
|
20
|
+
index: true
|
|
21
|
+
},
|
|
22
|
+
reason: {
|
|
23
|
+
type: String,
|
|
24
|
+
required: true
|
|
25
|
+
},
|
|
26
|
+
expireDate: {
|
|
27
|
+
type: Date,
|
|
28
|
+
required: true,
|
|
29
|
+
index: true
|
|
30
|
+
},
|
|
31
|
+
createdAt: {
|
|
32
|
+
type: Date,
|
|
33
|
+
default: () => new Date(),
|
|
34
|
+
required: true,
|
|
35
|
+
index: true
|
|
36
|
+
},
|
|
37
|
+
givenBy: {
|
|
38
|
+
type: Schema.Types.ObjectId,
|
|
39
|
+
ref: "User",
|
|
40
|
+
required: true
|
|
41
|
+
},
|
|
42
|
+
isActive: {
|
|
43
|
+
type: Boolean,
|
|
44
|
+
default: true,
|
|
45
|
+
required: true,
|
|
46
|
+
index: true
|
|
47
|
+
},
|
|
48
|
+
liftedAt: {
|
|
49
|
+
type: Date,
|
|
50
|
+
default: null
|
|
51
|
+
},
|
|
52
|
+
liftedBy: {
|
|
53
|
+
type: Schema.Types.ObjectId,
|
|
54
|
+
ref: "User"
|
|
55
|
+
},
|
|
56
|
+
liftReason: {
|
|
57
|
+
type: String,
|
|
58
|
+
default: null
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
// Ensure unique index on active bans per player
|
|
63
|
+
banSchema.index({ playerId: 1, isActive: 1 });
|
|
64
|
+
|
|
65
|
+
// Create compound index for efficient queries
|
|
66
|
+
banSchema.index({ playerId: 1, expireDate: 1, isActive: 1 });
|
|
67
|
+
|
|
68
|
+
const Ban = mongoose.model<IBan>("Ban", banSchema);
|
|
69
|
+
|
|
70
|
+
export default Ban;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import mongoose, { Document, Schema } from 'mongoose';
|
|
2
|
+
|
|
3
|
+
export interface IChatMessage extends Document {
|
|
4
|
+
content: string;
|
|
5
|
+
author: {
|
|
6
|
+
id: string;
|
|
7
|
+
firstName: string;
|
|
8
|
+
lastName: string;
|
|
9
|
+
profilePicture?: string;
|
|
10
|
+
role: 'user' | 'admin';
|
|
11
|
+
};
|
|
12
|
+
timestamp: Date;
|
|
13
|
+
edited: boolean;
|
|
14
|
+
editedAt?: Date;
|
|
15
|
+
replyTo?: string; // ID of message being replied to
|
|
16
|
+
reactions: {
|
|
17
|
+
emoji: string;
|
|
18
|
+
users: string[]; // User IDs who reacted
|
|
19
|
+
}[];
|
|
20
|
+
isDeleted: boolean;
|
|
21
|
+
deletedAt?: Date;
|
|
22
|
+
deletedBy?: string;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const chatMessageSchema = new Schema<IChatMessage>(
|
|
26
|
+
{
|
|
27
|
+
content: {
|
|
28
|
+
type: String,
|
|
29
|
+
required: true,
|
|
30
|
+
maxlength: 1000,
|
|
31
|
+
trim: true
|
|
32
|
+
},
|
|
33
|
+
author: {
|
|
34
|
+
id: { type: String, required: true },
|
|
35
|
+
firstName: { type: String, required: true },
|
|
36
|
+
lastName: { type: String, required: true },
|
|
37
|
+
profilePicture: { type: String },
|
|
38
|
+
role: {
|
|
39
|
+
type: String,
|
|
40
|
+
enum: ['user', 'admin'],
|
|
41
|
+
required: true
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
timestamp: {
|
|
45
|
+
type: Date,
|
|
46
|
+
default: Date.now,
|
|
47
|
+
required: true
|
|
48
|
+
},
|
|
49
|
+
edited: {
|
|
50
|
+
type: Boolean,
|
|
51
|
+
default: false
|
|
52
|
+
},
|
|
53
|
+
editedAt: {
|
|
54
|
+
type: Date
|
|
55
|
+
},
|
|
56
|
+
replyTo: {
|
|
57
|
+
type: mongoose.Schema.Types.ObjectId,
|
|
58
|
+
ref: 'ChatMessage'
|
|
59
|
+
},
|
|
60
|
+
reactions: [{
|
|
61
|
+
emoji: { type: String, required: true },
|
|
62
|
+
users: [{ type: String, required: true }]
|
|
63
|
+
}],
|
|
64
|
+
isDeleted: {
|
|
65
|
+
type: Boolean,
|
|
66
|
+
default: false
|
|
67
|
+
},
|
|
68
|
+
deletedAt: {
|
|
69
|
+
type: Date
|
|
70
|
+
},
|
|
71
|
+
deletedBy: {
|
|
72
|
+
type: String
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
timestamps: true,
|
|
77
|
+
toJSON: { virtuals: true },
|
|
78
|
+
id: true
|
|
79
|
+
}
|
|
80
|
+
);
|
|
81
|
+
|
|
82
|
+
// Index for efficient querying
|
|
83
|
+
chatMessageSchema.index({ timestamp: -1 });
|
|
84
|
+
chatMessageSchema.index({ 'author.id': 1 });
|
|
85
|
+
chatMessageSchema.index({ isDeleted: 1 });
|
|
86
|
+
|
|
87
|
+
const ChatMessage = mongoose.model<IChatMessage>('ChatMessage', chatMessageSchema);
|
|
88
|
+
|
|
89
|
+
export default ChatMessage;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Schema, model, Types, Document } from "mongoose";
|
|
2
|
+
|
|
3
|
+
export interface IComment extends Document {
|
|
4
|
+
_id: Types.ObjectId;
|
|
5
|
+
gameId: Types.ObjectId;
|
|
6
|
+
userId: Types.ObjectId;
|
|
7
|
+
content: string;
|
|
8
|
+
parentCommentId?: Types.ObjectId;
|
|
9
|
+
likes: Types.ObjectId[]; // Array of user IDs who liked this comment
|
|
10
|
+
isEdited: boolean;
|
|
11
|
+
createdAt: Date;
|
|
12
|
+
updatedAt: Date;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const commentSchema = new Schema<IComment>({
|
|
16
|
+
gameId: {
|
|
17
|
+
type: Schema.Types.ObjectId,
|
|
18
|
+
ref: "Game",
|
|
19
|
+
required: true,
|
|
20
|
+
index: true
|
|
21
|
+
},
|
|
22
|
+
userId: {
|
|
23
|
+
type: Schema.Types.ObjectId,
|
|
24
|
+
ref: "User",
|
|
25
|
+
required: true,
|
|
26
|
+
index: true
|
|
27
|
+
},
|
|
28
|
+
content: {
|
|
29
|
+
type: String,
|
|
30
|
+
required: true,
|
|
31
|
+
trim: true,
|
|
32
|
+
maxlength: 1000 // Limit comment length
|
|
33
|
+
},
|
|
34
|
+
parentCommentId: {
|
|
35
|
+
type: Schema.Types.ObjectId,
|
|
36
|
+
ref: "Comment",
|
|
37
|
+
default: null,
|
|
38
|
+
index: true
|
|
39
|
+
},
|
|
40
|
+
likes: [{
|
|
41
|
+
type: Schema.Types.ObjectId,
|
|
42
|
+
ref: "User"
|
|
43
|
+
}],
|
|
44
|
+
isEdited: {
|
|
45
|
+
type: Boolean,
|
|
46
|
+
default: false
|
|
47
|
+
}
|
|
48
|
+
}, {
|
|
49
|
+
timestamps: true,
|
|
50
|
+
collection: "comments"
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
// Index for efficient querying by game
|
|
54
|
+
commentSchema.index({ gameId: 1, createdAt: -1 });
|
|
55
|
+
|
|
56
|
+
// Index for efficient querying of replies
|
|
57
|
+
commentSchema.index({ parentCommentId: 1, createdAt: 1 });
|
|
58
|
+
|
|
59
|
+
// Index for user's comments
|
|
60
|
+
commentSchema.index({ userId: 1, createdAt: -1 });
|
|
61
|
+
|
|
62
|
+
export const Comment = model<IComment>("Comment", commentSchema);
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import mongoose, { Schema, Document } from "mongoose";
|
|
2
|
+
import { SERIES_FORMAT } from "./game/game";
|
|
3
|
+
|
|
4
|
+
export enum EVENT_TYPE {
|
|
5
|
+
ALL_STAR = "ALL_STAR"
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export enum EVENT_STATUS {
|
|
9
|
+
DRAFT = "draft",
|
|
10
|
+
REGISTRATION = "registration",
|
|
11
|
+
DRAFT_IN_PROGRESS = "draft_in_progress",
|
|
12
|
+
COMPLETED = "completed"
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface IAllStarDraftTeam {
|
|
16
|
+
id: string;
|
|
17
|
+
name: string;
|
|
18
|
+
captainId: mongoose.Types.ObjectId;
|
|
19
|
+
players: mongoose.Types.ObjectId[];
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export interface IAllStarDraftConfig {
|
|
23
|
+
numberOfCaptains: number;
|
|
24
|
+
matchFormat: SERIES_FORMAT;
|
|
25
|
+
registrationOpenDate: Date;
|
|
26
|
+
registrationCloseDate: Date;
|
|
27
|
+
teams?: IAllStarDraftTeam[];
|
|
28
|
+
captainIds?: mongoose.Types.ObjectId[];
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export interface IEventStats {
|
|
32
|
+
playerId: mongoose.Types.ObjectId;
|
|
33
|
+
goals: number;
|
|
34
|
+
assists: number;
|
|
35
|
+
appearances: number;
|
|
36
|
+
playerOfTheMatch: number;
|
|
37
|
+
avgRating: number;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export interface IEvent extends Document {
|
|
41
|
+
id: string;
|
|
42
|
+
name: string;
|
|
43
|
+
type: EVENT_TYPE;
|
|
44
|
+
league: mongoose.Types.ObjectId;
|
|
45
|
+
seasonNumber: number;
|
|
46
|
+
date: Date;
|
|
47
|
+
status: EVENT_STATUS;
|
|
48
|
+
createdBy: mongoose.Types.ObjectId;
|
|
49
|
+
createdAt: Date;
|
|
50
|
+
updatedAt: Date;
|
|
51
|
+
|
|
52
|
+
// All-Star specific fields
|
|
53
|
+
allStarConfig?: IAllStarDraftConfig;
|
|
54
|
+
registeredPlayers?: mongoose.Types.ObjectId[];
|
|
55
|
+
fixtures?: mongoose.Types.ObjectId[]; // Event-specific fixtures/games
|
|
56
|
+
stats?: IEventStats[]; // Track all-star specific statistics
|
|
57
|
+
|
|
58
|
+
// Event outcome
|
|
59
|
+
winnerTeam?: IAllStarDraftTeam;
|
|
60
|
+
completedDate?: Date;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
const allStarTeamSchema = new Schema(
|
|
64
|
+
{
|
|
65
|
+
id: { type: String, required: true },
|
|
66
|
+
name: { type: String, required: true },
|
|
67
|
+
captainId: { type: mongoose.Schema.Types.ObjectId, ref: "Player", required: true },
|
|
68
|
+
players: [{ type: mongoose.Schema.Types.ObjectId, ref: "Player" }],
|
|
69
|
+
},
|
|
70
|
+
{ _id: false }
|
|
71
|
+
);
|
|
72
|
+
|
|
73
|
+
const allStarDraftConfigSchema = new Schema(
|
|
74
|
+
{
|
|
75
|
+
numberOfCaptains: { type: Number, required: true },
|
|
76
|
+
matchFormat: {
|
|
77
|
+
type: String,
|
|
78
|
+
enum: Object.values(SERIES_FORMAT),
|
|
79
|
+
required: true,
|
|
80
|
+
},
|
|
81
|
+
registrationOpenDate: { type: Date, required: true },
|
|
82
|
+
registrationCloseDate: { type: Date, required: true },
|
|
83
|
+
teams: [allStarTeamSchema],
|
|
84
|
+
captainIds: [{ type: mongoose.Schema.Types.ObjectId, ref: "Player" }],
|
|
85
|
+
},
|
|
86
|
+
{ _id: false }
|
|
87
|
+
);
|
|
88
|
+
|
|
89
|
+
const eventStatsSchema = new Schema(
|
|
90
|
+
{
|
|
91
|
+
playerId: { type: mongoose.Schema.Types.ObjectId, ref: "Player", required: true },
|
|
92
|
+
goals: { type: Number, default: 0 },
|
|
93
|
+
assists: { type: Number, default: 0 },
|
|
94
|
+
appearances: { type: Number, default: 0 },
|
|
95
|
+
playerOfTheMatch: { type: Number, default: 0 },
|
|
96
|
+
avgRating: { type: Number, default: 0 },
|
|
97
|
+
},
|
|
98
|
+
{ _id: false }
|
|
99
|
+
);
|
|
100
|
+
|
|
101
|
+
const eventSchema = new Schema<IEvent>(
|
|
102
|
+
{
|
|
103
|
+
name: { type: String, required: true },
|
|
104
|
+
type: { type: String, enum: Object.values(EVENT_TYPE), required: true },
|
|
105
|
+
league: { type: mongoose.Schema.Types.ObjectId, ref: "League", required: true },
|
|
106
|
+
seasonNumber: { type: Number, required: true },
|
|
107
|
+
date: { type: Date, required: true },
|
|
108
|
+
status: { type: String, enum: Object.values(EVENT_STATUS), required: true, default: EVENT_STATUS.DRAFT },
|
|
109
|
+
createdBy: { type: mongoose.Schema.Types.ObjectId, ref: "Player", required: true },
|
|
110
|
+
createdAt: { type: Date, required: true, default: Date.now },
|
|
111
|
+
updatedAt: { type: Date, required: true, default: Date.now },
|
|
112
|
+
|
|
113
|
+
// All-Star specific fields
|
|
114
|
+
allStarConfig: allStarDraftConfigSchema,
|
|
115
|
+
registeredPlayers: { type: [{ type: mongoose.Schema.Types.ObjectId, ref: "Player" }], default: [] },
|
|
116
|
+
fixtures: [{ type: mongoose.Schema.Types.ObjectId, ref: "Fixture" }],
|
|
117
|
+
stats: [eventStatsSchema],
|
|
118
|
+
|
|
119
|
+
// Event outcome
|
|
120
|
+
winnerTeam: allStarTeamSchema,
|
|
121
|
+
completedDate: { type: Date },
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
toJSON: { virtuals: true },
|
|
125
|
+
id: true,
|
|
126
|
+
}
|
|
127
|
+
);
|
|
128
|
+
|
|
129
|
+
// Indexes for common queries
|
|
130
|
+
eventSchema.index({ league: 1, seasonNumber: 1 });
|
|
131
|
+
eventSchema.index({ status: 1 });
|
|
132
|
+
eventSchema.index({ type: 1 });
|
|
133
|
+
eventSchema.index({ createdAt: -1 });
|
|
134
|
+
|
|
135
|
+
const Event = mongoose.model<IEvent>("Event", eventSchema);
|
|
136
|
+
|
|
137
|
+
export default Event;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import mongoose, { Schema, Document } from "mongoose";
|
|
2
|
+
import { AddGameData, PlayoffDetails } from "./game/game";
|
|
3
|
+
|
|
4
|
+
export interface AddFixtureData {
|
|
5
|
+
leagueId: mongoose.Types.ObjectId;
|
|
6
|
+
seasonNumber: number;
|
|
7
|
+
gamesData: AddGameData[];
|
|
8
|
+
round: number;
|
|
9
|
+
startDate: Date;
|
|
10
|
+
endDate: Date;
|
|
11
|
+
isPlayoff?: boolean;
|
|
12
|
+
playoffDetails?: PlayoffDetails;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface IFixture extends Document {
|
|
16
|
+
id: string;
|
|
17
|
+
league: mongoose.Types.ObjectId;
|
|
18
|
+
seasonNumber: number;
|
|
19
|
+
round: number;
|
|
20
|
+
startDate: Date;
|
|
21
|
+
endDate: Date;
|
|
22
|
+
games: mongoose.Types.ObjectId[];
|
|
23
|
+
isPlayoff?: boolean;
|
|
24
|
+
playoffDetails?: PlayoffDetails;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const fixtureSchema = new Schema<IFixture>(
|
|
28
|
+
{
|
|
29
|
+
league: { type: mongoose.Schema.Types.ObjectId, ref: "League", required: true },
|
|
30
|
+
round: { type: Number, required: true },
|
|
31
|
+
seasonNumber: { type: Number, required: true },
|
|
32
|
+
startDate: { type: mongoose.Schema.Types.Date, required: true },
|
|
33
|
+
endDate: { type: mongoose.Schema.Types.Date, required: true },
|
|
34
|
+
games: [{ type: mongoose.Schema.Types.ObjectId, ref: "Game", required: true }],
|
|
35
|
+
isPlayoff: { type: Boolean, required: false, default: false },
|
|
36
|
+
playoffDetails: {
|
|
37
|
+
type: {
|
|
38
|
+
stage: { type: String, required: true },
|
|
39
|
+
format: { type: String, required: true }
|
|
40
|
+
},
|
|
41
|
+
required: false
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
toJSON: { virtuals: true },
|
|
46
|
+
id: true, // Use 'id' instead of '_id'
|
|
47
|
+
}
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
const Fixture = mongoose.model<IFixture>("Fixture", fixtureSchema);
|
|
51
|
+
|
|
52
|
+
export default Fixture;
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Clean EA Game Statistics - Simplified statistics sent to client and stored in database
|
|
3
|
+
* Contains only essential performance metrics from both teams
|
|
4
|
+
*/
|
|
5
|
+
export interface EAGameStatistics {
|
|
6
|
+
goals: number;
|
|
7
|
+
assists: number;
|
|
8
|
+
passesMade: number;
|
|
9
|
+
passAttempts: number;
|
|
10
|
+
redcards: number;
|
|
11
|
+
saves: number;
|
|
12
|
+
shots: number;
|
|
13
|
+
tackleattempts: number;
|
|
14
|
+
tacklesmade: number;
|
|
15
|
+
tackleSuccessRate: number; // (tacklesmade / tackleattempts) * 100, rounded to 2 decimals
|
|
16
|
+
passSuccessRate: number; // (passesMade / passAttempts) * 100, rounded to 2 decimals
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Internal aggregate stats used for processing from EA API
|
|
21
|
+
* This is used internally but not sent to client
|
|
22
|
+
*/
|
|
23
|
+
export interface EAGameAggregateStats {
|
|
24
|
+
archetypeid: number;
|
|
25
|
+
assists: number;
|
|
26
|
+
ballDiveSaves: number;
|
|
27
|
+
cleansheetsany: number;
|
|
28
|
+
cleansheetsdef: number;
|
|
29
|
+
cleansheetsgk: number;
|
|
30
|
+
crossSaves: number;
|
|
31
|
+
gameTime: number;
|
|
32
|
+
goals: number;
|
|
33
|
+
goalsconceded: number;
|
|
34
|
+
goodDirectionSaves: number;
|
|
35
|
+
losses: number;
|
|
36
|
+
match_event_aggregate_0: number;
|
|
37
|
+
match_event_aggregate_1: number;
|
|
38
|
+
match_event_aggregate_2: number;
|
|
39
|
+
match_event_aggregate_3: number;
|
|
40
|
+
mom: number;
|
|
41
|
+
namespace: number;
|
|
42
|
+
parrySaves: number;
|
|
43
|
+
passattempts: number;
|
|
44
|
+
passesmade: number;
|
|
45
|
+
pos: number;
|
|
46
|
+
punchSaves: number;
|
|
47
|
+
rating: number;
|
|
48
|
+
realtimegame: number;
|
|
49
|
+
realtimeidle: number;
|
|
50
|
+
redcards: number;
|
|
51
|
+
reflexSaves: number;
|
|
52
|
+
saves: number;
|
|
53
|
+
SCORE: number;
|
|
54
|
+
secondsPlayed: number;
|
|
55
|
+
shots: number;
|
|
56
|
+
tackleattempts: number;
|
|
57
|
+
tacklesmade: number;
|
|
58
|
+
userResult: number;
|
|
59
|
+
vproattr: number;
|
|
60
|
+
vprohackreason: number;
|
|
61
|
+
wins: number;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* EA Game Details stored in database
|
|
66
|
+
* Contains simplified statistics for both teams
|
|
67
|
+
*/
|
|
68
|
+
export interface EAGameDetails {
|
|
69
|
+
eaMatchId?: string;
|
|
70
|
+
fetchedAt?: Date;
|
|
71
|
+
homeTeamStats?: EAGameStatistics;
|
|
72
|
+
awayTeamStats?: EAGameStatistics;
|
|
73
|
+
homeTeamAggregateStats?: EAGameAggregateStats;
|
|
74
|
+
awayTeamAggregateStats?: EAGameAggregateStats;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Internal representation of raw EA API response
|
|
79
|
+
* Used temporarily during processing but not stored
|
|
80
|
+
*/
|
|
81
|
+
export interface EAApiResponse {
|
|
82
|
+
// EA Match ID
|
|
83
|
+
matchId: string;
|
|
84
|
+
|
|
85
|
+
// Club details - keyed by EA Team ID
|
|
86
|
+
clubs?: {
|
|
87
|
+
[eaTeamId: string]: {
|
|
88
|
+
date: string;
|
|
89
|
+
gameNumber: string;
|
|
90
|
+
goals: string;
|
|
91
|
+
goalsAgainst: string;
|
|
92
|
+
losses: string;
|
|
93
|
+
matchType: string;
|
|
94
|
+
result: string;
|
|
95
|
+
score: string;
|
|
96
|
+
season_id: string;
|
|
97
|
+
TEAM: string;
|
|
98
|
+
ties: string;
|
|
99
|
+
winnerByDnf: string;
|
|
100
|
+
wins: string;
|
|
101
|
+
details?: {
|
|
102
|
+
name: string;
|
|
103
|
+
clubId: number;
|
|
104
|
+
regionId: number;
|
|
105
|
+
teamId: number;
|
|
106
|
+
customKit?: any;
|
|
107
|
+
};
|
|
108
|
+
};
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
// Team aggregate statistics - keyed by EA Team ID
|
|
112
|
+
aggregate: {
|
|
113
|
+
[eaTeamId: string]: EAGameAggregateStats;
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
// Timestamp of the match
|
|
117
|
+
timestamp: number;
|
|
118
|
+
|
|
119
|
+
// Time ago information
|
|
120
|
+
timeAgo?: {
|
|
121
|
+
number: number;
|
|
122
|
+
unit: string;
|
|
123
|
+
};
|
|
124
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Types } from "mongoose";
|
|
2
|
+
import { PLAYOFF_STAGE } from "./game";
|
|
3
|
+
|
|
4
|
+
export type AddGameData = {
|
|
5
|
+
homeTeam: Types.ObjectId;
|
|
6
|
+
awayTeam: Types.ObjectId;
|
|
7
|
+
date?: Date;
|
|
8
|
+
round?: number;
|
|
9
|
+
isPlayoff?: boolean;
|
|
10
|
+
playoffStage?: PLAYOFF_STAGE;
|
|
11
|
+
matchNumber?: number;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export type PlayerGamePerformance = {
|
|
15
|
+
playerId: Types.ObjectId;
|
|
16
|
+
rating: number;
|
|
17
|
+
playerOfTheMatch?: boolean;
|
|
18
|
+
goals?: number;
|
|
19
|
+
assists?: number;
|
|
20
|
+
cleanSheet: boolean;
|
|
21
|
+
positionPlayed: string;
|
|
22
|
+
formation?: string;
|
|
23
|
+
isBotPlayer?: boolean; // Flag to identify BOT players
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
type PopulatedBasicInfo = {
|
|
27
|
+
id: string;
|
|
28
|
+
name: string;
|
|
29
|
+
imgUrl?: string;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export type PopulatedPlayerGameData = {
|
|
33
|
+
id: string;
|
|
34
|
+
league: PopulatedBasicInfo;
|
|
35
|
+
seasonNumber: number;
|
|
36
|
+
round: number;
|
|
37
|
+
date?: Date;
|
|
38
|
+
result?: {
|
|
39
|
+
homeTeamGoals: number;
|
|
40
|
+
awayTeamGoals: number;
|
|
41
|
+
};
|
|
42
|
+
homeTeam: PopulatedBasicInfo;
|
|
43
|
+
awayTeam: PopulatedBasicInfo;
|
|
44
|
+
homeTeamPlayersPerformance: PlayerGamePerformance[];
|
|
45
|
+
awayTeamPlayersPerformance: PlayerGamePerformance[];
|
|
46
|
+
};
|