Skip to content

Commit 3764a8e

Browse files
committed
Merge remote-tracking branch 'origin/features'
2 parents 9e244ab + 9f10863 commit 3764a8e

199 files changed

Lines changed: 1251 additions & 1308 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

apps/api/src/analytics/dto/common.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import z from "zod";
33
import { DateStringDto } from "src/common/dto";
44

55
import { INCOHERENT_DATE_RANGE_ERROR_MESSAGE } from "@repo/common/constants";
6-
import getPeriodResolution from "@repo/common/getPeriodResolution";
6+
import { getPeriodResolution } from "@repo/common/get-period-resolution";
77
import { GroupByEnum } from "@repo/common/types-schemas";
88

99
export const DateRangeDto = z.object({

apps/api/src/analytics/services/general-analytics.service.ts

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -8,30 +8,30 @@ import {
88
GetPeriodLanguagesTimeDtoType,
99
GetTimeSpentOnPeriodDtoType,
1010
} from "src/analytics/dto/general-analytics.dto";
11-
import getDaysOfPeriodStatsGroupedByMonths from "src/analytics/utils/general/getDaysOfPeriodStatsGroupedByMonths";
12-
import getDaysOfPeriodStatsGroupedByWeeks from "src/analytics/utils/general/getDaysOfPeriodStatsGroupedByWeeks";
13-
import getGeneralStatsOnPeriodGroupedByMonths from "src/analytics/utils/general/getGeneralStatsOnPeriodGroupedByMonths";
14-
import getGeneralStatsOnPeriodGroupedByWeeks from "src/analytics/utils/general/getGeneralStatsOnPeriodGroupedByWeeks";
15-
import getMostUsedLanguageOnPeriod from "src/analytics/utils/general/getMostUsedLanguageOnPeriod";
16-
import getPeriodLanguagesGroupedByMonths from "src/analytics/utils/general/getPeriodLanguagesGroupedByMonths";
17-
import getPeriodLanguagesGroupedByWeeks from "src/analytics/utils/general/getPeriodLanguagesGroupedByWeeks";
18-
import getWeekDayName from "src/common/utils/getWeekdayName";
11+
import { getDaysOfPeriodStatsGroupedByMonths } from "src/analytics/utils/general/get-days-of-period-stats-grouped-by-months";
12+
import { getDaysOfPeriodStatsGroupedByWeeks } from "src/analytics/utils/general/get-days-of-period-stats-grouped-by-weeks";
13+
import { getGeneralStatsOnPeriodGroupedByMonths } from "src/analytics/utils/general/get-general-stats-on-period-grouped-by-months";
14+
import { getGeneralStatsOnPeriodGroupedByWeeks } from "src/analytics/utils/general/get-general-stats-on-period-grouped-by-weeks";
15+
import { getMostUsedLanguageOnPeriod } from "src/analytics/utils/general/get-most-used-language-on-period";
16+
import { getPeriodLanguagesGroupedByMonths } from "src/analytics/utils/general/get-period-languages-grouped-by-months";
17+
import { getPeriodLanguagesGroupedByWeeks } from "src/analytics/utils/general/get-period-languages-grouped-by-weeks";
18+
import { getWeekDayName } from "src/common/utils/get-weekday-name";
1919
import { DailyDataService } from "src/daily-data/daily-data.service";
2020
import { LanguagesService } from "src/languages/languages.service";
2121

2222
import { Injectable } from "@nestjs/common";
23-
import convertToISODate from "@repo/common/convertToISODate";
24-
import formatDuration from "@repo/common/formatDuration";
23+
import { convertToISODate } from "@repo/common/convert-to-iso-date";
24+
import { formatDuration } from "@repo/common/format-duration";
2525

2626
@Injectable()
2727
export class GeneralAnalyticsService {
2828
constructor(
2929
private readonly dailyDataService: DailyDataService,
30-
private readonly languagesService: LanguagesService
30+
private readonly languagesService: LanguagesService,
3131
) {}
3232

3333
async getTimeSpentOnPeriod(
34-
getTimeSpentOnPeriodDto: GetTimeSpentOnPeriodDtoType
34+
getTimeSpentOnPeriodDto: GetTimeSpentOnPeriodDtoType,
3535
) {
3636
const { userId, start, end } = getTimeSpentOnPeriodDto;
3737

@@ -49,7 +49,7 @@ export class GeneralAnalyticsService {
4949
}
5050

5151
async getDaysOfPeriodStats(
52-
getDaysOfPeriodStatsDto: GetDaysOfPeriodStatsDtoType
52+
getDaysOfPeriodStatsDto: GetDaysOfPeriodStatsDtoType,
5353
) {
5454
const { userId, start, end, groupBy, periodResolution } =
5555
getDaysOfPeriodStatsDto;
@@ -66,7 +66,7 @@ export class GeneralAnalyticsService {
6666
case "weeks":
6767
return getDaysOfPeriodStatsGroupedByWeeks(
6868
dailyDataForPeriod,
69-
periodResolution
69+
periodResolution,
7070
);
7171

7272
case "months":
@@ -89,7 +89,7 @@ export class GeneralAnalyticsService {
8989
}
9090

9191
async getPeriodLanguagesTime(
92-
getPeriodLanguagesTimeDto: GetPeriodLanguagesTimeDtoType
92+
getPeriodLanguagesTimeDto: GetPeriodLanguagesTimeDtoType,
9393
) {
9494
const { userId, start, end } = getPeriodLanguagesTimeDto;
9595

@@ -108,8 +108,8 @@ export class GeneralAnalyticsService {
108108
const kVLangTime = (
109109
await Promise.all(
110110
dailyDataForPeriod.map(({ id }) =>
111-
this.languagesService.findAll({ dailyDataId: id })
112-
)
111+
this.languagesService.findAll({ dailyDataId: id }),
112+
),
113113
)
114114
).reduce((acc, dayStats) => {
115115
Object.keys(dayStats).forEach((languageSlug) => {
@@ -124,7 +124,7 @@ export class GeneralAnalyticsService {
124124
time: timeSpent,
125125
value: formatDuration(timeSpent),
126126
percentage: parseFloat(
127-
((timeSpent * 100) / totalTimeSpentOnPeriod).toFixed(2)
127+
((timeSpent * 100) / totalTimeSpentOnPeriod).toFixed(2),
128128
),
129129
}))
130130
.sort((a, b) => a.time - b.time);
@@ -133,7 +133,7 @@ export class GeneralAnalyticsService {
133133
}
134134

135135
async getPeriodLanguagesPerDay(
136-
getPeriodLanguagesPerDayDto: GetPeriodLanguagesPerDayDtoType
136+
getPeriodLanguagesPerDayDto: GetPeriodLanguagesPerDayDtoType,
137137
) {
138138
const { userId, start, end, groupBy, periodResolution } =
139139
getPeriodLanguagesPerDayDto;
@@ -151,13 +151,13 @@ export class GeneralAnalyticsService {
151151
return getPeriodLanguagesGroupedByWeeks(
152152
dailyDataForPeriod,
153153
periodResolution,
154-
this.languagesService
154+
this.languagesService,
155155
);
156156

157157
case "months":
158158
return getPeriodLanguagesGroupedByMonths(
159159
dailyDataForPeriod,
160-
this.languagesService
160+
this.languagesService,
161161
);
162162

163163
default:
@@ -166,8 +166,8 @@ export class GeneralAnalyticsService {
166166

167167
const allLanguages = await Promise.all(
168168
dailyDataForPeriod.map(({ id }) =>
169-
this.languagesService.findAll({ dailyDataId: id })
170-
)
169+
this.languagesService.findAll({ dailyDataId: id }),
170+
),
171171
);
172172

173173
const periodLanguagesPerDay = dailyDataForPeriod.map(
@@ -176,7 +176,7 @@ export class GeneralAnalyticsService {
176176
date: getWeekDayName(date),
177177
timeSpent,
178178
...allLanguages[index],
179-
})
179+
}),
180180
);
181181

182182
return periodLanguagesPerDay;
@@ -220,7 +220,7 @@ export class GeneralAnalyticsService {
220220
}
221221

222222
async getPeriodGeneralStats(
223-
getPeriodGeneralStatsDto: GetPeriodGeneralStatsDtoType
223+
getPeriodGeneralStatsDto: GetPeriodGeneralStatsDtoType,
224224
) {
225225
const { userId, start, end, todaysDateString, groupBy, periodResolution } =
226226
getPeriodGeneralStatsDto;
@@ -248,7 +248,7 @@ export class GeneralAnalyticsService {
248248
todaysDateString,
249249
this,
250250
dailyDataForPeriod,
251-
periodResolution
251+
periodResolution,
252252
);
253253

254254
case "months":
@@ -258,7 +258,7 @@ export class GeneralAnalyticsService {
258258
end,
259259
todaysDateString,
260260
this,
261-
dailyDataForPeriod
261+
dailyDataForPeriod,
262262
);
263263

264264
default:
@@ -299,15 +299,15 @@ export class GeneralAnalyticsService {
299299
? "N/A"
300300
: new Date(
301301
dailyDataForPeriod.find(
302-
(day) => day.timeSpent === maxTimeSpentPerDay
303-
)?.date || convertToISODate(new Date(start))
302+
(day) => day.timeSpent === maxTimeSpentPerDay,
303+
)?.date || convertToISODate(new Date(start)),
304304
).toDateString();
305305

306306
const mostUsedLanguageSlug = await getMostUsedLanguageOnPeriod(
307307
this,
308308
userId,
309309
start,
310-
end
310+
end,
311311
);
312312

313313
return {

apps/api/src/analytics/services/projects-analytics.service.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,18 @@ import {
2222
GetProjectOnPeriodDtoType,
2323
GetProjectPerDayOfPeriodDtoType,
2424
} from "src/analytics/dto/projects-analytics.dto";
25-
import getProjectLanguagesGroupedByMonths from "src/analytics/utils/projects/getProjectLanguagesGroupedByMonths";
26-
import getProjectLanguagesGroupedByWeeks from "src/analytics/utils/projects/getProjectLanguagesGroupedByWeeks";
27-
import getProjectPerDayOfPeriodGroupedByMonths from "src/analytics/utils/projects/getProjectPerDayOfPeriodGroupedByMonths";
28-
import getProjectPerDayOfPeriodGroupedByWeeks from "src/analytics/utils/projects/getProjectPerDayOfPeriodGroupedByWeeks";
29-
import getWeekDayName from "src/common/utils/getWeekdayName";
25+
import { getProjectLanguagesGroupedByMonths } from "src/analytics/utils/projects/get-project-languages-grouped-by-months";
26+
import { getProjectLanguagesGroupedByWeeks } from "src/analytics/utils/projects/get-project-languages-grouped-by-weeks";
27+
import { getProjectPerDayOfPeriodGroupedByMonths } from "src/analytics/utils/projects/get-project-per-day-of-period-grouped-by-months";
28+
import { getProjectPerDayOfPeriodGroupedByWeeks } from "src/analytics/utils/projects/get-project-per-day-of-period-grouped-by-weeks";
29+
import { getWeekDayName } from "src/common/utils/get-weekday-name";
3030
import { DrizzleAsyncProvider } from "src/drizzle/drizzle.provider";
3131
import { dailyData, files, languages, projects } from "src/drizzle/schema";
3232
import { ProjectsService } from "src/projects/projects.service";
3333

3434
import { Inject, Injectable } from "@nestjs/common";
35-
import convertToISODate from "@repo/common/convertToISODate";
36-
import formatDuration from "@repo/common/formatDuration";
35+
import { convertToISODate } from "@repo/common/convert-to-iso-date";
36+
import { formatDuration } from "@repo/common/format-duration";
3737
import { TRPCError } from "@trpc/server";
3838

3939
import { NUMBER_OF_FILES_PER_PAGE } from "../constants";

apps/api/src/analytics/utils/general/getDaysOfPeriodStatsGroupedByMonths.ts renamed to apps/api/src/analytics/utils/general/get-days-of-period-stats-grouped-by-months.ts

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import { endOfMonth, startOfMonth } from "date-fns";
2-
import formatShortDate from "src/common/utils/formatShortDate";
2+
import { formatShortDate } from "src/common/utils/format-short-date";
33
import { DailyDataService } from "src/daily-data/daily-data.service";
44

5-
import convertToISODate from "@repo/common/convertToISODate";
6-
import formatDuration from "@repo/common/formatDuration";
5+
import { convertToISODate } from "@repo/common/convert-to-iso-date";
6+
import { formatDuration } from "@repo/common/format-duration";
77

8-
const getDaysOfPeriodStatsGroupedByMonths = (
9-
data: Awaited<ReturnType<DailyDataService["findRange"]>>
8+
export const getDaysOfPeriodStatsGroupedByMonths = (
9+
data: Awaited<ReturnType<DailyDataService["findRange"]>>,
1010
) => {
1111
const monthlyMap = new Map<
1212
string,
@@ -45,10 +45,8 @@ const getDaysOfPeriodStatsGroupedByMonths = (
4545
timeSpentBar: timeSpent,
4646
timeSpentArea: timeSpent,
4747
value: formatDuration(timeSpent),
48-
})
48+
}),
4949
);
5050

5151
return daysOfPeriodStatsGroupedByMonths;
5252
};
53-
54-
export default getDaysOfPeriodStatsGroupedByMonths;

apps/api/src/analytics/utils/general/getDaysOfPeriodStatsGroupedByWeeks.ts renamed to apps/api/src/analytics/utils/general/get-days-of-period-stats-grouped-by-weeks.ts

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import { endOfMonth, endOfWeek, startOfMonth, startOfWeek } from "date-fns";
2-
import formatShortDate from "src/common/utils/formatShortDate";
2+
import { formatShortDate } from "src/common/utils/format-short-date";
33
import { DailyDataService } from "src/daily-data/daily-data.service";
44

5-
import convertToISODate from "@repo/common/convertToISODate";
6-
import formatDuration from "@repo/common/formatDuration";
5+
import { convertToISODate } from "@repo/common/convert-to-iso-date";
6+
import { formatDuration } from "@repo/common/format-duration";
77
import { PeriodResolution } from "@repo/common/types-schemas";
88

9-
const getDaysOfPeriodStatsGroupedByWeeks = (
9+
export const getDaysOfPeriodStatsGroupedByWeeks = (
1010
data: Awaited<ReturnType<DailyDataService["findRange"]>>,
11-
periodResolution: PeriodResolution
11+
periodResolution: PeriodResolution,
1212
) => {
1313
const weeklyMap = new Map<
1414
string,
@@ -83,10 +83,8 @@ const getDaysOfPeriodStatsGroupedByWeeks = (
8383
timeSpentBar: timeSpent,
8484
timeSpentArea: timeSpent,
8585
value: formatDuration(timeSpent),
86-
})
86+
}),
8787
);
8888

8989
return daysOfPeriodStatsGroupedByWeeks;
9090
};
91-
92-
export default getDaysOfPeriodStatsGroupedByWeeks;

apps/api/src/analytics/utils/general/getGeneralStatsOnPeriodGroupedByMonths.ts renamed to apps/api/src/analytics/utils/general/get-general-stats-on-period-grouped-by-months.ts

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,19 @@ import { NAString } from "src/analytics/dto/common";
33
import { GeneralAnalyticsService } from "src/analytics/services/general-analytics.service";
44
import { DailyDataService } from "src/daily-data/daily-data.service";
55

6-
import convertToISODate from "@repo/common/convertToISODate";
7-
import formatDuration from "@repo/common/formatDuration";
6+
import { convertToISODate } from "@repo/common/convert-to-iso-date";
7+
import { formatDuration } from "@repo/common/format-duration";
88

9-
import getDaysOfPeriodStatsGroupedByMonths from "./getDaysOfPeriodStatsGroupedByMonths";
10-
import getMostUsedLanguageOnPeriod from "./getMostUsedLanguageOnPeriod";
9+
import { getDaysOfPeriodStatsGroupedByMonths } from "./get-days-of-period-stats-grouped-by-months";
10+
import { getMostUsedLanguageOnPeriod } from "./get-most-used-language-on-period";
1111

12-
const getGeneralStatsOnPeriodGroupedByMonths = async (
12+
export const getGeneralStatsOnPeriodGroupedByMonths = async (
1313
userId: string,
1414
start: string,
1515
end: string,
1616
todaysDateString: string,
1717
generalAnalyticsService: GeneralAnalyticsService,
18-
dailyDataForPeriod: Awaited<ReturnType<DailyDataService["findRange"]>>
18+
dailyDataForPeriod: Awaited<ReturnType<DailyDataService["findRange"]>>,
1919
) => {
2020
const numberOfMonths = differenceInMonths(end, start) + 1;
2121
const timeSpentOnPeriod = (
@@ -28,7 +28,7 @@ const getGeneralStatsOnPeriodGroupedByMonths = async (
2828
const mean = timeSpentOnPeriod / numberOfMonths;
2929

3030
const monthlyDataForPeriod = getDaysOfPeriodStatsGroupedByMonths(
31-
dailyDataForPeriod
31+
dailyDataForPeriod,
3232
).map((entry) => ({
3333
timeSpent: entry.timeSpentBar,
3434
originalDate: entry.originalDate,
@@ -56,14 +56,14 @@ const getGeneralStatsOnPeriodGroupedByMonths = async (
5656
maxTimeSpentPerMonth === 0
5757
? "N/A"
5858
: monthlyDataForPeriod.find(
59-
(month) => month.timeSpent === maxTimeSpentPerMonth
59+
(month) => month.timeSpent === maxTimeSpentPerMonth,
6060
)?.originalDate || convertToISODate(new Date(start));
6161

6262
const mostUsedLanguageSlug = await getMostUsedLanguageOnPeriod(
6363
generalAnalyticsService,
6464
userId,
6565
start,
66-
end
66+
end,
6767
);
6868

6969
return {
@@ -73,5 +73,3 @@ const getGeneralStatsOnPeriodGroupedByMonths = async (
7373
mostUsedLanguageSlug,
7474
};
7575
};
76-
77-
export default getGeneralStatsOnPeriodGroupedByMonths;

apps/api/src/analytics/utils/general/getGeneralStatsOnPeriodGroupedByWeeks.ts renamed to apps/api/src/analytics/utils/general/get-general-stats-on-period-grouped-by-weeks.ts

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
11
import { endOfWeek, startOfWeek } from "date-fns";
22
import { GeneralAnalyticsService } from "src/analytics/services/general-analytics.service";
3-
import countStrictWeeks from "src/common/utils/countStrictWeeks";
3+
import { countStrictWeeks } from "src/common/utils/count-strict-weeks";
44
import { DailyDataService } from "src/daily-data/daily-data.service";
55

6-
import convertToISODate from "@repo/common/convertToISODate";
7-
import formatDuration from "@repo/common/formatDuration";
6+
import { convertToISODate } from "@repo/common/convert-to-iso-date";
7+
import { formatDuration } from "@repo/common/format-duration";
88
import { PeriodResolution } from "@repo/common/types-schemas";
99

10-
import getDaysOfPeriodStatsGroupedByWeeks from "./getDaysOfPeriodStatsGroupedByWeeks";
11-
import getMostUsedLanguageOnPeriod from "./getMostUsedLanguageOnPeriod";
10+
import { getDaysOfPeriodStatsGroupedByWeeks } from "./get-days-of-period-stats-grouped-by-weeks";
11+
import { getMostUsedLanguageOnPeriod } from "./get-most-used-language-on-period";
1212

13-
const getGeneralStatsOnPeriodGroupedByWeeks = async (
13+
export const getGeneralStatsOnPeriodGroupedByWeeks = async (
1414
userId: string,
1515
start: string,
1616
end: string,
1717
todaysDateString: string,
1818
generalAnalyticsService: GeneralAnalyticsService,
1919
dailyDataForPeriod: Awaited<ReturnType<DailyDataService["findRange"]>>,
20-
periodResolution: PeriodResolution
20+
periodResolution: PeriodResolution,
2121
) => {
2222
const numberOfWeeks = countStrictWeeks(new Date(start), new Date(end));
2323

@@ -33,7 +33,7 @@ const getGeneralStatsOnPeriodGroupedByWeeks = async (
3333

3434
const weeklyDataForPeriod = getDaysOfPeriodStatsGroupedByWeeks(
3535
dailyDataForPeriod,
36-
periodResolution
36+
periodResolution,
3737
).map((entry) => ({
3838
timeSpent: entry.timeSpentBar,
3939
originalDate: entry.originalDate,
@@ -60,14 +60,14 @@ const getGeneralStatsOnPeriodGroupedByWeeks = async (
6060
maxTimeSpentPerWeek === 0
6161
? "N/A"
6262
: weeklyDataForPeriod.find(
63-
(week) => week.timeSpent === maxTimeSpentPerWeek
63+
(week) => week.timeSpent === maxTimeSpentPerWeek,
6464
)?.originalDate || convertToISODate(new Date(start));
6565

6666
const mostUsedLanguageSlug = await getMostUsedLanguageOnPeriod(
6767
generalAnalyticsService,
6868
userId,
6969
start,
70-
end
70+
end,
7171
);
7272

7373
return {
@@ -77,4 +77,3 @@ const getGeneralStatsOnPeriodGroupedByWeeks = async (
7777
mostUsedLanguageSlug,
7878
};
7979
};
80-
export default getGeneralStatsOnPeriodGroupedByWeeks;

0 commit comments

Comments
 (0)