Skip to content

Commit 2ea94e0

Browse files
Merge pull request #5 from sergioflores-j/master
refactor: improve game service createManyToManyData readability
2 parents efa2fd7 + b5ef467 commit 2ea94e0

File tree

1 file changed

+20
-18
lines changed

1 file changed

+20
-18
lines changed

api/game/services/game.js

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -62,31 +62,33 @@ async function create(name, entityName) {
6262
}
6363

6464
async function createManyToManyData(products) {
65-
const developers = {};
66-
const publishers = {};
67-
const categories = {};
68-
const platforms = {};
65+
const developers = new Set();
66+
const publishers = new Set();
67+
const categories = new Set();
68+
const platforms = new Set();
6969

7070
products.forEach((product) => {
7171
const { developer, publisher, genres, supportedOperatingSystems } = product;
7272

73-
genres &&
74-
genres.forEach((item) => {
75-
categories[item] = true;
76-
});
77-
supportedOperatingSystems &&
78-
supportedOperatingSystems.forEach((item) => {
79-
platforms[item] = true;
80-
});
81-
developers[developer] = true;
82-
publishers[publisher] = true;
73+
genres?.forEach((item) => {
74+
categories.add(item);
75+
});
76+
77+
supportedOperatingSystems?.forEach((item) => {
78+
platforms.add(item);
79+
});
80+
81+
developers.add(developer);
82+
publishers.add(publisher);
8383
});
8484

85+
const createCall = (set, entityName) => Array.from(set).map((name) => create(name, entityName));
86+
8587
return Promise.all([
86-
...Object.keys(developers).map((name) => create(name, "developer")),
87-
...Object.keys(publishers).map((name) => create(name, "publisher")),
88-
...Object.keys(categories).map((name) => create(name, "category")),
89-
...Object.keys(platforms).map((name) => create(name, "platform")),
88+
...createCall(developers, "developer"),
89+
...createCall(publishers, "publisher"),
90+
...createCall(categories, "category"),
91+
...createCall(platforms, "platform"),
9092
]);
9193
}
9294

0 commit comments

Comments
 (0)