1
1
mirror of https://github.com/kokonect-link/cherrypick synced 2024-11-28 06:48:36 +09:00

絵文字重複チェック

This commit is contained in:
nenohi 2023-09-30 22:30:19 +09:00
parent 6840434661
commit fda8cf5c7f
3 changed files with 18 additions and 1 deletions

View File

@ -379,6 +379,13 @@ export class CustomEmojiService implements OnApplicationShutdown {
this.cache.set(`${emoji.name} ${emoji.host}`, emoji);
}
}
/**
*
* @param name
*/
public async isDuplicateCheck(name: string): Promise<boolean> {
return (await this.emojisRepository.findOneBy({ name, host: IsNull() })) !== null;
}
@bindThis
public dispose(): void {

View File

@ -23,6 +23,11 @@ export const meta = {
code: 'NO_SUCH_FILE',
id: 'fc46b5a4-6b92-4c33-ac66-b806659bb5cf',
},
duplicateName: {
message: 'Duplicate name.',
code: 'DUPLICATE_NAME',
id: 'f7a3462c-4e6e-4069-8421-b9bd4f4c3975',
},
},
} as const;
@ -64,7 +69,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
super(meta, paramDef, async (ps, me) => {
const driveFile = await this.driveFilesRepository.findOneBy({ id: ps.fileId });
if (driveFile == null) throw new ApiError(meta.errors.noSuchFile);
const duplicateCheck = await this.customEmojiService.isDuplicateCheck(ps.name);
if (duplicateCheck != null) throw new ApiError(meta.errors.duplicateName);
const emoji = await this.customEmojiService.add({
driveFile,
name: ps.name,

View File

@ -74,6 +74,10 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
driveFile = await this.driveFilesRepository.findOneBy({ id: ps.fileId });
if (driveFile == null) throw new ApiError(meta.errors.noSuchFile);
}
if (ps.name) {
const duplicateCheck = await this.customEmojiService.isDuplicateCheck(ps.name);
if (duplicateCheck != null) throw new ApiError(meta.errors.sameNameEmojiExists);
}
await this.customEmojiService.update(ps.id, {
driveFile,