From 8435e90951e2d86d8ae424b4b24070e715062847 Mon Sep 17 00:00:00 2001 From: suvajit Date: Mon, 1 Jan 2024 15:53:56 +0530 Subject: [PATCH] Rename LAST_SEEN collection to PLAYERS --- .../src/service-clans.service.ts | 6 ++--- .../src/service-players.service.ts | 6 ++--- .../src/service-ranking.service.ts | 6 ++--- apps/service-wars/src/service-wars.module.ts | 3 ++- apps/service-wars/src/service-wars.service.ts | 10 +++---- libs/constants/src/constants.values.ts | 6 +++-- libs/entities/src/index.ts | 1 + libs/entities/src/players.entity.ts | 27 +++++++++++++++++++ libs/entities/src/users.entity.ts | 4 +-- libs/mongodb/src/mongodb.service.ts | 6 ++--- libs/repositories/src/index.ts | 2 +- .../src/player-activities.repository.ts | 12 +++++++++ libs/repositories/src/players.repository.ts | 12 +++++++++ libs/repositories/src/repositories.module.ts | 5 ++-- 14 files changed, 79 insertions(+), 27 deletions(-) create mode 100644 libs/entities/src/players.entity.ts create mode 100644 libs/repositories/src/player-activities.repository.ts create mode 100644 libs/repositories/src/players.repository.ts diff --git a/apps/service-clans/src/service-clans.service.ts b/apps/service-clans/src/service-clans.service.ts index 30c26ed..048baf6 100644 --- a/apps/service-clans/src/service-clans.service.ts +++ b/apps/service-clans/src/service-clans.service.ts @@ -1,5 +1,5 @@ import { Collections, Tokens } from '@app/constants'; -import { LastSeenEntity } from '@app/entities'; +import { PlayersEntity } from '@app/entities'; import { MongoDbService, TrackedClanList } from '@app/mongodb'; import { RedisClient, RedisService } from '@app/redis'; import RestHandler from '@app/rest/rest.module'; @@ -17,8 +17,8 @@ export class ClansService { private redisService: RedisService, private mongoDbService: MongoDbService, - @Inject(Collections.LAST_SEEN) - private lastSeenCollection: Collection, + @Inject(Collections.PLAYERS) + private lastSeenCollection: Collection, ) {} getHello(): string { diff --git a/apps/service-players/src/service-players.service.ts b/apps/service-players/src/service-players.service.ts index 9b67210..9de8488 100644 --- a/apps/service-players/src/service-players.service.ts +++ b/apps/service-players/src/service-players.service.ts @@ -1,5 +1,5 @@ import { Collections, Tokens } from '@app/constants'; -import { LastSeenEntity } from '@app/entities'; +import { PlayersEntity } from '@app/entities'; import { MongoDbService, TrackedClanList } from '@app/mongodb'; import { RedisClient, RedisService } from '@app/redis'; import RestHandler from '@app/rest/rest.module'; @@ -17,8 +17,8 @@ export class PlayersService { private redisService: RedisService, private mongoDbService: MongoDbService, - @Inject(Collections.LAST_SEEN) - private lastSeenCollection: Collection, + @Inject(Collections.PLAYERS) + private lastSeenCollection: Collection, ) {} getHello(): string { diff --git a/apps/service-ranking/src/service-ranking.service.ts b/apps/service-ranking/src/service-ranking.service.ts index eb634b9..feefa86 100644 --- a/apps/service-ranking/src/service-ranking.service.ts +++ b/apps/service-ranking/src/service-ranking.service.ts @@ -1,5 +1,5 @@ import { Collections, Tokens } from '@app/constants'; -import { LastSeenEntity } from '@app/entities'; +import { PlayersEntity } from '@app/entities'; import { MongoDbService, TrackedClanList } from '@app/mongodb'; import { RedisClient, RedisService } from '@app/redis'; import RestHandler from '@app/rest/rest.module'; @@ -17,8 +17,8 @@ export class RankingService { private redisService: RedisService, private mongoDbService: MongoDbService, - @Inject(Collections.LAST_SEEN) - private lastSeenCollection: Collection, + @Inject(Collections.PLAYERS) + private lastSeenCollection: Collection, ) {} getHello(): string { diff --git a/apps/service-wars/src/service-wars.module.ts b/apps/service-wars/src/service-wars.module.ts index 0b23276..a1e50b4 100644 --- a/apps/service-wars/src/service-wars.module.ts +++ b/apps/service-wars/src/service-wars.module.ts @@ -1,5 +1,6 @@ import { MongoDbModule } from '@app/mongodb'; import { RedisModule } from '@app/redis'; +import * as repositories from '@app/repositories'; import { RestModule } from '@app/rest'; import { Module } from '@nestjs/common'; import { ConfigModule } from '@nestjs/config'; @@ -9,6 +10,6 @@ import { WarsService } from './service-wars.service'; @Module({ imports: [ConfigModule.forRoot({ isGlobal: true }), MongoDbModule, RedisModule, RestModule], controllers: [ServiceWarsController], - providers: [WarsService], + providers: [WarsService, ...Object.values(repositories)], }) export class ServiceWarsModule {} diff --git a/apps/service-wars/src/service-wars.service.ts b/apps/service-wars/src/service-wars.service.ts index 49a34b2..f735bfa 100644 --- a/apps/service-wars/src/service-wars.service.ts +++ b/apps/service-wars/src/service-wars.service.ts @@ -1,18 +1,14 @@ -import { Collections } from '@app/constants'; -import { LastSeenEntity } from '@app/entities'; import { MongoDbService, TrackedClanList } from '@app/mongodb'; -import { Inject, Injectable, Logger } from '@nestjs/common'; +import { PlayersRepository } from '@app/repositories'; +import { Injectable, Logger } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; -import { Collection } from 'mongodb'; @Injectable() export class WarsService { constructor( private configService: ConfigService, private mongoDbService: MongoDbService, - - @Inject(Collections.LAST_SEEN) - private lastSeenCollection: Collection, + private playersRepository: PlayersRepository, ) {} getHello(): string { diff --git a/libs/constants/src/constants.values.ts b/libs/constants/src/constants.values.ts index 91bde20..da3166c 100644 --- a/libs/constants/src/constants.values.ts +++ b/libs/constants/src/constants.values.ts @@ -46,7 +46,6 @@ export enum Collections { PATRONS = 'Patrons', SETTINGS = 'Settings', - LAST_SEEN = 'LastSeen', CLAN_WARS = 'ClanWars', CLAN_GAMES = 'ClanGames', CWL_WAR_TAGS = 'CWLWarTags', @@ -57,10 +56,13 @@ export enum Collections { CAPITAL_RAID_SEASONS = 'CapitalRaidSeasons', CLAN_GAMES_POINTS = 'ClanGamesPoints', - PLAYERS = 'Players', + /** a.k.a LAST_SEEN */ + PLAYERS = 'LastSeen', CLANS = 'Clans', WARS = 'Wars', + PLAYER_ACTIVITIES = 'PlayerActivities', + PLAYER_RANKS = 'PlayerRanks', CAPITAL_RANKS = 'CapitalRanks', CLAN_RANKS = 'ClanRanks', diff --git a/libs/entities/src/index.ts b/libs/entities/src/index.ts index 0758933..f38e076 100644 --- a/libs/entities/src/index.ts +++ b/libs/entities/src/index.ts @@ -3,3 +3,4 @@ export * from './clans.entity'; export * from './reminders.entity'; export * from './users.entity'; export * from './wars.entity'; +export * from './players.entity'; diff --git a/libs/entities/src/players.entity.ts b/libs/entities/src/players.entity.ts new file mode 100644 index 0000000..4e611d6 --- /dev/null +++ b/libs/entities/src/players.entity.ts @@ -0,0 +1,27 @@ +export class PlayerActivitiesEntity { + /** + * Indexed + */ + playerTag: string; + + /** + * Format: 2023-12-12T00:00 + * + * Compound index with playerTag + */ + timestamp: string; + + count: number; + + createdAt: Date; // TTL Indexed +} + +export class PlayerHistoriesEntity { + playerTag: string; + + clanTag: string; + + dateLastOut: Date; + + dateFirstIn: Date; +} diff --git a/libs/entities/src/users.entity.ts b/libs/entities/src/users.entity.ts index 18e2cae..a64a27f 100644 --- a/libs/entities/src/users.entity.ts +++ b/libs/entities/src/users.entity.ts @@ -13,13 +13,13 @@ export class UsersEntity { createdAt: Date; } -export class LastSeenEntity { +export class PlayersEntity { name: string; tag: string; clan: { name: string; tag: string; }; - lastSeen?: Date; + lastSeen: Date | null; createdAt: Date; } diff --git a/libs/mongodb/src/mongodb.service.ts b/libs/mongodb/src/mongodb.service.ts index 5c5be25..6fd6502 100644 --- a/libs/mongodb/src/mongodb.service.ts +++ b/libs/mongodb/src/mongodb.service.ts @@ -1,6 +1,6 @@ import { Collections, Tokens } from '@app/constants'; import { ClanStoresEntity } from '@app/entities'; -import { LastSeenEntity } from '@app/entities/users.entity'; +import { PlayersEntity } from '@app/entities/users.entity'; import { Inject, Injectable } from '@nestjs/common'; import { Util } from 'clashofclans.js'; import moment from 'moment'; @@ -11,8 +11,8 @@ export class MongoDbService { constructor( @Inject(Tokens.MONGODB) private readonly db: Db, - @Inject(Collections.LAST_SEEN) - private readonly lastSeenCollection: Collection, + @Inject(Collections.PLAYERS) + private readonly lastSeenCollection: Collection, @Inject(Collections.CLAN_STORES) private readonly clanStoresCollection: Collection, ) {} diff --git a/libs/repositories/src/index.ts b/libs/repositories/src/index.ts index d10d74b..12e9957 100644 --- a/libs/repositories/src/index.ts +++ b/libs/repositories/src/index.ts @@ -1,3 +1,3 @@ export * from './capital-raid-seasons.repository'; export * from './clan-stores.repository'; -export * from './repositories.module'; +export * from './players.repository'; diff --git a/libs/repositories/src/player-activities.repository.ts b/libs/repositories/src/player-activities.repository.ts new file mode 100644 index 0000000..4fa0f96 --- /dev/null +++ b/libs/repositories/src/player-activities.repository.ts @@ -0,0 +1,12 @@ +import { Collections } from '@app/constants'; +import { PlayerActivitiesEntity } from '@app/entities'; +import { Inject, Injectable } from '@nestjs/common'; +import { Collection } from 'mongodb'; + +@Injectable() +export class PlayerActivitiesRepository { + constructor( + @Inject(Collections.PLAYER_ACTIVITIES) + public collection: Collection, + ) {} +} diff --git a/libs/repositories/src/players.repository.ts b/libs/repositories/src/players.repository.ts new file mode 100644 index 0000000..b8b76d2 --- /dev/null +++ b/libs/repositories/src/players.repository.ts @@ -0,0 +1,12 @@ +import { Collections } from '@app/constants'; +import { PlayersEntity } from '@app/entities'; +import { Inject, Injectable } from '@nestjs/common'; +import { Collection } from 'mongodb'; + +@Injectable() +export class PlayersRepository { + constructor( + @Inject(Collections.PLAYERS) + public collection: Collection, + ) {} +} diff --git a/libs/repositories/src/repositories.module.ts b/libs/repositories/src/repositories.module.ts index 7c6ac99..0a8c66d 100644 --- a/libs/repositories/src/repositories.module.ts +++ b/libs/repositories/src/repositories.module.ts @@ -1,7 +1,8 @@ import { Module } from '@nestjs/common'; +import * as repositories from './'; @Module({ - providers: [], - exports: [], + providers: [...Object.values(repositories)], + exports: [...Object.values(repositories)], }) export class RepositoryModule {}