improve emoji packing
Some checks failed
Lint / pnpm_install (pull_request) Successful in 1m49s
Test (backend) / unit (22.11.0) (pull_request) Successful in 8m9s
Test (production install and build) / production (22.11.0) (pull_request) Successful in 1m10s
Publish Docker image / Build (pull_request) Successful in 5m10s
Test (backend) / e2e (22.11.0) (pull_request) Successful in 12m39s
Lint / lint (backend) (pull_request) Successful in 2m52s
Lint / lint (frontend-embed) (pull_request) Successful in 2m56s
Lint / lint (frontend) (pull_request) Successful in 3m9s
Lint / lint (frontend-shared) (pull_request) Successful in 2m51s
Lint / lint (misskey-bubble-game) (pull_request) Successful in 2m51s
Lint / lint (misskey-js) (pull_request) Successful in 2m49s
Lint / lint (misskey-reversi) (pull_request) Successful in 3m0s
Lint / typecheck (backend) (pull_request) Successful in 2m48s
Lint / lint (sw) (pull_request) Successful in 2m50s
Lint / typecheck (misskey-js) (pull_request) Successful in 2m12s
Lint / typecheck (sw) (pull_request) Successful in 2m4s
Lint / pnpm_install (push) Successful in 1m56s
Publish Docker image / Build (push) Successful in 4m28s
Test (production install and build) / production (22.11.0) (push) Successful in 1m2s
Lint / lint (backend) (push) Successful in 2m8s
Test (backend) / unit (22.11.0) (push) Successful in 8m28s
Lint / lint (frontend) (push) Successful in 2m42s
Lint / lint (frontend-embed) (push) Successful in 2m19s
Lint / lint (frontend-shared) (push) Successful in 2m21s
Lint / lint (misskey-bubble-game) (push) Successful in 2m20s
Test (backend) / e2e (22.11.0) (push) Failing after 11m37s
Lint / lint (misskey-js) (push) Successful in 2m30s
Lint / lint (misskey-reversi) (push) Successful in 2m31s
Lint / lint (sw) (push) Successful in 2m28s
Lint / typecheck (misskey-js) (push) Successful in 1m37s
Lint / typecheck (backend) (push) Successful in 2m26s
Lint / typecheck (sw) (push) Successful in 1m52s

Signed-off-by: eternal-flame-AD <yume@yumechi.jp>
This commit is contained in:
ゆめ 2024-11-19 10:35:56 -06:00
parent a236bbb8d4
commit 416d71002a
No known key found for this signature in database
2 changed files with 57 additions and 27 deletions

View file

@ -10,6 +10,7 @@ import type { Packed } from '@/misc/json-schema.js';
import type { } from '@/models/Blocking.js';
import type { MiEmoji } from '@/models/Emoji.js';
import { bindThis } from '@/decorators.js';
import { In } from 'typeorm';
@Injectable()
export class EmojiEntityService {
@ -20,11 +21,9 @@ export class EmojiEntityService {
}
@bindThis
public async packSimple(
src: MiEmoji['id'] | MiEmoji,
): Promise<Packed<'EmojiSimple'>> {
const emoji = typeof src === 'object' ? src : await this.emojisRepository.findOneByOrFail({ id: src });
public packSimpleNoQuery(
emoji: MiEmoji,
): Packed<'EmojiSimple'> {
return {
aliases: emoji.aliases,
name: emoji.name,
@ -38,18 +37,34 @@ export class EmojiEntityService {
}
@bindThis
public packSimpleMany(
emojis: any[],
) {
return Promise.all(emojis.map(x => this.packSimple(x)));
public async packSimple(
src: MiEmoji['id'] | MiEmoji,
): Promise<Packed<'EmojiSimple'>> {
const emoji = typeof src === 'object' ? src : await this.emojisRepository.findOneByOrFail({ id: src });
return this.packSimpleNoQuery(emoji);
}
@bindThis
public async packDetailed(
src: MiEmoji['id'] | MiEmoji,
): Promise<Packed<'EmojiDetailed'>> {
const emoji = typeof src === 'object' ? src : await this.emojisRepository.findOneByOrFail({ id: src });
public async packSimpleMany(
emojis: MiEmoji['id'][] | MiEmoji[],
): Promise<Packed<'EmojiSimple'>[]> {
if (emojis.length === 0) {
return [];
}
if (typeof emojis[0] === 'string') {
const res = await this.emojisRepository.findBy({ id: In(emojis as MiEmoji['id'][]) });
return res.map(this.packSimpleNoQuery);
}
return (emojis as MiEmoji[]).map(this.packSimpleNoQuery);
}
@bindThis
public packDetailedNoQuery(
emoji: MiEmoji,
): Packed<'EmojiDetailed'> {
return {
id: emoji.id,
aliases: emoji.aliases,
@ -66,10 +81,28 @@ export class EmojiEntityService {
}
@bindThis
public packDetailedMany(
emojis: any[],
) {
return Promise.all(emojis.map(x => this.packDetailed(x)));
public async packDetailed(
src: MiEmoji['id'] | MiEmoji,
): Promise<Packed<'EmojiDetailed'>> {
const emoji = typeof src === 'object' ? src : await this.emojisRepository.findOneByOrFail({ id: src });
return this.packDetailedNoQuery(emoji);
}
@bindThis
public async packDetailedMany(
emojis: MiEmoji['id'][] | MiEmoji[],
) : Promise<Packed<'EmojiDetailed'>[]> {
if (emojis.length === 0) {
return [];
}
if (typeof emojis[0] === 'string') {
const res = await this.emojisRepository.findBy({ id: In(emojis as MiEmoji['id'][]) });
return res.map(this.packDetailedNoQuery);
}
return (emojis as MiEmoji[]).map(this.packDetailedNoQuery);
}
}

View file

@ -50,18 +50,15 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
private emojiEntityService: EmojiEntityService,
) {
super(meta, paramDef, async (ps, me) => {
const emojis = await this.emojisRepository.find({
where: {
host: IsNull(),
},
order: {
category: 'ASC',
name: 'ASC',
},
});
const emojis = await this.emojisRepository
.createQueryBuilder()
.where({ host: IsNull() })
.orderBy('LOWER(category)', 'ASC')
.addOrderBy('LOWER(name)', 'ASC')
.getMany();
return {
emojis: await this.emojiEntityService.packSimpleMany(emojis),
emojis: emojis.map(this.emojiEntityService.packSimpleNoQuery),
};
});
}