Skip to content

Commit 2c674b8

Browse files
Artem ZahorodniukArtem Zahorodniuk
Artem Zahorodniuk
authored and
Artem Zahorodniuk
committed
feat: script should support more than 1 local git repository gf-589 (#589)
- moved helpers into src/libs/helpers - changed functions to arrow functions
1 parent aff30fd commit 2c674b8

File tree

5 files changed

+60
-46
lines changed

5 files changed

+60
-46
lines changed

scripts/analytics/src/modules/analytics/analytics.service.ts

+1-46
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
EMPTY_LENGTH,
99
FIRST_ARRAY_INDEX,
1010
} from "./libs/constants/constants.js";
11+
import { mergeStats } from "./libs/helpers/helpers.js";
1112
import {
1213
type ActivityLogCreateItemRequestDto,
1314
type CommitStatistics,
@@ -122,50 +123,4 @@ class AnalyticsService {
122123
}
123124
}
124125

125-
function mergeStats(
126-
statsAll: ActivityLogCreateItemRequestDto[],
127-
): ActivityLogCreateItemRequestDto[] {
128-
return mergeByCriteria(
129-
statsAll,
130-
(item1, item2) => item1.date === item2.date,
131-
(mergedItem, item) =>
132-
(mergedItem.items = mergeStatsItems([
133-
...mergedItem.items,
134-
...item.items,
135-
])),
136-
);
137-
}
138-
139-
function mergeStatsItems(items: CommitStatistics[]): CommitStatistics[] {
140-
return mergeByCriteria(
141-
items,
142-
(item1, item2) =>
143-
item1.authorEmail === item2.authorEmail &&
144-
item1.authorName === item2.authorName,
145-
(mergedItem, item) => (mergedItem.commitsNumber += item.commitsNumber),
146-
);
147-
}
148-
149-
function mergeByCriteria<T>(
150-
items: T[],
151-
compareFunction: (item1: T, item2: T) => boolean,
152-
mergeFunction: (mergedItem: T, item: T) => void,
153-
): T[] {
154-
const mergedItems: T[] = [];
155-
156-
for (const item of items) {
157-
const mergedItem = mergedItems.find((mergedItem) =>
158-
compareFunction(mergedItem, item),
159-
);
160-
161-
if (mergedItem) {
162-
mergeFunction(mergedItem, item);
163-
} else {
164-
mergedItems.push(item);
165-
}
166-
}
167-
168-
return mergedItems;
169-
}
170-
171126
export { AnalyticsService };
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export { mergeStats } from "./merge-stats/merge-stats.helper.js";
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
const mergeArrayItems = <T>(
2+
items: T[],
3+
compareFunction: (item1: T, item2: T) => boolean,
4+
mergeFunction: (mergedItem: T, item: T) => void,
5+
): T[] => {
6+
const mergedItems: T[] = [];
7+
8+
for (const item of items) {
9+
const mergedItem = mergedItems.find((mergedItem) =>
10+
compareFunction(mergedItem, item),
11+
);
12+
13+
if (mergedItem) {
14+
mergeFunction(mergedItem, item);
15+
} else {
16+
mergedItems.push(item);
17+
}
18+
}
19+
20+
return mergedItems;
21+
};
22+
23+
export { mergeArrayItems };
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { type ActivityLogCreateItemRequestDto } from "../../types/types.js";
2+
3+
import { mergeArrayItems } from "../merge-array-items/merge-array-items.helper.js";
4+
5+
const mergeStatsItems = (
6+
items: ActivityLogCreateItemRequestDto["items"],
7+
): ActivityLogCreateItemRequestDto["items"] =>
8+
mergeArrayItems(
9+
items,
10+
(item1, item2) =>
11+
item1.authorEmail === item2.authorEmail &&
12+
item1.authorName === item2.authorName,
13+
(mergedItem, item) => (mergedItem.commitsNumber += item.commitsNumber),
14+
);
15+
16+
export { mergeStatsItems };
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { type ActivityLogCreateItemRequestDto } from "../../types/types.js";
2+
3+
import { mergeArrayItems } from "../merge-array-items/merge-array-items.helper.js";
4+
import { mergeStatsItems } from "../merge-stats-items/merge-stats-items.helper.js";
5+
6+
const mergeStats = (
7+
statsAll: ActivityLogCreateItemRequestDto[],
8+
): ActivityLogCreateItemRequestDto[] =>
9+
mergeArrayItems(
10+
statsAll,
11+
(item1, item2) => item1.date === item2.date,
12+
(mergedItem, item) =>
13+
(mergedItem.items = mergeStatsItems([
14+
...mergedItem.items,
15+
...item.items,
16+
])),
17+
);
18+
19+
export { mergeStats };

0 commit comments

Comments
 (0)