Skip to content

Commit e99c4bf

Browse files
authored
add /textures/animated endpoint (#70)
1 parent e26029f commit e99c4bf

File tree

4 files changed

+20
-0
lines changed

4 files changed

+20
-0
lines changed

src/v2/controller/texture.controller.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,15 @@ export class TextureController extends Controller {
7272
return this.service.getResolutions();
7373
}
7474

75+
/**
76+
* Get all animated textures in the database
77+
* @returns array of texture IDs
78+
*/
79+
@Get("animated")
80+
public getAnimated(): Promise<number[]> {
81+
return this.service.getAnimated();
82+
}
83+
7584
/**
7685
* Get all existing Minecraft versions supported in the database
7786
*/

src/v2/interfaces/textures.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ export interface TextureRepository {
7373
getVersions(): Promise<string[]>;
7474
getEditions(): Promise<string[]>;
7575
getResolutions(): Promise<number[]>;
76+
getAnimated(): Promise<number[]>;
7677
getTags(): Promise<string[]>;
7778
getVersionByEdition(edition: Edition): Promise<string[]>;
7879
searchTexturePropertyByNameOrId(

src/v2/repository/texture.repository.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,12 @@ export default class TextureFirestormRepository implements TextureRepository {
140140
return packs.values({ field: "resolution" }).then((res) => res.sort());
141141
}
142142

143+
public async getAnimated(): Promise<number[]> {
144+
const filteredPaths = await paths.search([{ field: "mcmeta", criteria: "==", value: true }]);
145+
const filteredUses = await uses.searchKeys(filteredPaths.map((p) => p.use));
146+
return filteredUses.map((u) => u.texture);
147+
}
148+
143149
public async getTags(): Promise<string[]> {
144150
const res = await textures.values({ field: "tags", flatten: true });
145151
return res.sort();

src/v2/service/texture.service.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,10 @@ export default class TextureService {
7171
return this.textureRepo.getResolutions();
7272
}
7373

74+
getAnimated(): Promise<number[]> {
75+
return this.textureRepo.getAnimated();
76+
}
77+
7478
getPropertyByNameOrId<Property extends TextureProperty>(
7579
nameOrID: string | number,
7680
property: Property,

0 commit comments

Comments
 (0)