diff --git a/app/models/server/raw/Analytics.ts b/app/models/server/raw/Analytics.ts index 943274853746f..681a8be0ef633 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 86e97ebe76a70..d79fd32c89133 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 },