From 8875f5019bd4e1f6486b7ad116105f9a3664f2d8 Mon Sep 17 00:00:00 2001 From: Guilherme Gazzo Date: Fri, 12 Nov 2021 09:59:34 -0300 Subject: [PATCH] Regression: Improve AggregationCursor types (#23692) --- app/models/server/raw/Analytics.ts | 44 ++++++++++++++++++++++++------ app/models/server/raw/Sessions.ts | 14 ++++++++-- 2 files changed, 48 insertions(+), 10 deletions(-) diff --git a/app/models/server/raw/Analytics.ts b/app/models/server/raw/Analytics.ts index 94327485374..681a8be0ef6 100644 --- a/app/models/server/raw/Analytics.ts +++ b/app/models/server/raw/Analytics.ts @@ -49,8 +49,14 @@ export class AnalyticsRaw extends BaseRaw { }); } - getMessagesSentTotalByDate({ start, end, options = {} }: { start: IAnalytic['date']; end: IAnalytic['date']; options?: { sort?: SortOptionObject; count?: number } }): AggregationCursor { - return this.col.aggregate([ + getMessagesSentTotalByDate({ start, end, options = {} }: { start: IAnalytic['date']; end: IAnalytic['date']; options?: { sort?: SortOptionObject; count?: number } }): AggregationCursor<{ + _id: IAnalytic['date']; + messages: number; + }> { + return this.col.aggregate<{ + _id: IAnalytic['date']; + messages: number; + }>([ { $match: { type: 'messages', @@ -68,7 +74,10 @@ export class AnalyticsRaw extends BaseRaw { ]); } - getMessagesOrigin({ start, end }: { start: IAnalytic['date']; end: IAnalytic['date'] }): AggregationCursor { + getMessagesOrigin({ start, end }: { start: IAnalytic['date']; end: IAnalytic['date'] }): AggregationCursor<{ + t: 'message'; + messages: number; + }> { const params = [ { $match: { @@ -90,11 +99,24 @@ export class AnalyticsRaw extends BaseRaw { }, }, ]; - return this.col.aggregate(params); + return this.col.aggregate<{ + t: 'message'; + messages: number; + }>(params); } - getMostPopularChannelsByMessagesSentQuantity({ start, end, options = {} }: { start: IAnalytic['date']; end: IAnalytic['date']; options?: { sort?: SortOptionObject; count?: number } }): AggregationCursor { - return this.col.aggregate([ + getMostPopularChannelsByMessagesSentQuantity({ start, end, options = {} }: { start: IAnalytic['date']; end: IAnalytic['date']; options?: { sort?: SortOptionObject; count?: number } }): AggregationCursor<{ + t: 'messages'; + name: string; + messages: number; + usernames: string[]; + }> { + return this.col.aggregate<{ + t: 'messages'; + name: string; + messages: number; + usernames: string[]; + }>([ { $match: { type: 'messages', @@ -121,8 +143,14 @@ export class AnalyticsRaw extends BaseRaw { ]); } - getTotalOfRegisteredUsersByDate({ start, end, options = {} }: { start: IAnalytic['date']; end: IAnalytic['date']; options?: { sort?: SortOptionObject; count?: number } }): AggregationCursor { - return this.col.aggregate([ + getTotalOfRegisteredUsersByDate({ start, end, options = {} }: { start: IAnalytic['date']; end: IAnalytic['date']; options?: { sort?: SortOptionObject; count?: number } }): AggregationCursor<{ + _id: IAnalytic['date']; + users: number; + }> { + return this.col.aggregate<{ + _id: IAnalytic['date']; + users: number; + }>([ { $match: { type: 'users', diff --git a/app/models/server/raw/Sessions.ts b/app/models/server/raw/Sessions.ts index 86e97ebe76a..d79fd32c891 100644 --- a/app/models/server/raw/Sessions.ts +++ b/app/models/server/raw/Sessions.ts @@ -112,8 +112,18 @@ const getProjectionByFullDate = (): { day: string; month: string; year: string } }); export const aggregates = { - dailySessionsOfYesterday(collection: Collection, { year, month, day }: DestructuredDate): AggregationCursor { - return collection.aggregate([{ + dailySessionsOfYesterday(collection: Collection, { year, month, day }: DestructuredDate): AggregationCursor & { + time: number; + sessions: number; + devices: T['device'][]; + _computedAt: string; + }> { + return collection.aggregate & { + time: number; + sessions: number; + devices: T['device'][]; + _computedAt: string; + }>([{ $match: { userId: { $exists: true }, lastActivityAt: { $exists: true },