add emoji schema

This commit is contained in:
tamaina 2021-09-12 21:11:06 +09:00
parent 03dcfcf2a3
commit 3afdfe848b
2 changed files with 41 additions and 4 deletions

View File

@ -1,14 +1,14 @@
import { EntityRepository, Repository } from 'typeorm'; import { EntityRepository, Repository } from 'typeorm';
import { Emoji } from '@/models/entities/emoji'; import { Emoji } from '@/models/entities/emoji';
import { Resolved } from '@/prelude/types'; import { SchemaType } from '@/misc/schema';
export type PackedEmoji = Resolved<ReturnType<EmojiRepository['pack']>>; export type PackedEmoji = SchemaType<typeof packedEmojiSchema>;
@EntityRepository(Emoji) @EntityRepository(Emoji)
export class EmojiRepository extends Repository<Emoji> { export class EmojiRepository extends Repository<Emoji> {
public async pack( public async pack(
src: Emoji['id'] | Emoji, src: Emoji['id'] | Emoji,
) { ): Promise<PackedEmoji> {
const emoji = typeof src === 'object' ? src : await this.findOneOrFail(src); const emoji = typeof src === 'object' ? src : await this.findOneOrFail(src);
return { return {
@ -27,3 +27,41 @@ export class EmojiRepository extends Repository<Emoji> {
return Promise.all(emojis.map(x => this.pack(x))); return Promise.all(emojis.map(x => this.pack(x)));
} }
} }
export const packedEmojiSchema = {
type: 'object' as const,
optional: false as const, nullable: false as const,
properties: {
id: {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'id',
example: 'xxxxxxxxxx',
},
aliases: {
type: 'array' as const,
optional: false as const, nullable: false as const,
items: {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'id',
},
},
name: {
type: 'string' as const,
optional: false as const, nullable: false as const,
},
category: {
type: 'string' as const,
optional: false as const, nullable: true as const,
},
host: {
type: 'string' as const,
optional: false as const, nullable: true as const,
},
url: {
type: 'string' as const,
optional: false as const, nullable: false as const,
},
}
};

View File

@ -1 +0,0 @@
export type Resolved<P> = P extends PromiseLike<infer R> ? Resolved<R> : never;