Skip to content

Commit ae54eac

Browse files
committed
chore: refactors media collection class
1 parent 0505a79 commit ae54eac

File tree

1 file changed

+14
-19
lines changed

1 file changed

+14
-19
lines changed

lesson_10/libraries/src/models/media_collection.ts

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -13,29 +13,24 @@ export class MediaCollection {
1313
}
1414

1515
search(criteria?: SearchCriteria): ReadonlySet<MediaItem> {
16-
const items = [...this.items.values()];
17-
if (!criteria) {
18-
return new Set(items);
16+
if (criteria?.title) {
17+
return this.searchByTitle(criteria.title);
1918
}
20-
const title = criteria.title;
21-
if (title) {
22-
return this.searchByTitle(title);
23-
}
24-
if (criteria.releaseYear) {
19+
if (criteria?.releaseYear) {
2520
return this.searchByReleaseYear(criteria.releaseYear);
2621
}
27-
if (criteria.type) {
22+
if (criteria?.type) {
2823
return this.searchByType(criteria.type);
2924
}
30-
if (criteria.creditName) {
25+
if (criteria?.creditName) {
3126
return this.searchByCreditName(criteria.creditName);
3227
}
33-
return new Set(items);
28+
return new Set(this.getItems());
3429
}
3530

3631
searchByTitle(title: string): ReadonlySet<MediaItem> {
3732
return new Set(
38-
[...this.items.values()].filter((item) =>
33+
this.getItems().filter((item) =>
3934
item
4035
.getTitle()
4136
.toLowerCase()
@@ -46,21 +41,17 @@ export class MediaCollection {
4641

4742
searchByReleaseYear(releaseYear: number): ReadonlySet<MediaItem> {
4843
return new Set(
49-
[...this.items.values()].filter(
50-
(item) => item.getReleaseYear() === releaseYear,
51-
),
44+
this.getItems().filter((item) => item.getReleaseYear() === releaseYear),
5245
);
5346
}
5447

5548
searchByType(type: string): ReadonlySet<MediaItem> {
56-
return new Set(
57-
[...this.items.values()].filter((item) => item.getType() === type),
58-
);
49+
return new Set(this.getItems().filter((item) => item.getType() === type));
5950
}
6051

6152
searchByCreditName(name: string): ReadonlySet<MediaItem> {
6253
return new Set(
63-
[...this.items.values()].filter((item) =>
54+
this.getItems().filter((item) =>
6455
item.getCredits().some((credit) =>
6556
credit
6657
.getName()
@@ -71,6 +62,10 @@ export class MediaCollection {
7162
);
7263
}
7364

65+
private getItems(): readonly MediaItem[] {
66+
return [...this.items.values()];
67+
}
68+
7469
getInfo() {
7570
return {
7671
getItems: () => [...this.items] as readonly [string, MediaItem][],

0 commit comments

Comments
 (0)