* カスタム絵文字を重複登録できないように

* fix

* fix
This commit is contained in:
MeiMei 2019-10-16 04:03:18 +09:00 committed by syuilo
parent 3a973aee69
commit 5c44c75c23
3 changed files with 33 additions and 2 deletions

View file

@ -5,6 +5,7 @@ import { Emojis } from '../../../../../models';
import { genId } from '../../../../../misc/gen-id'; import { genId } from '../../../../../misc/gen-id';
import { getConnection } from 'typeorm'; import { getConnection } from 'typeorm';
import { insertModerationLog } from '../../../../../services/insert-moderation-log'; import { insertModerationLog } from '../../../../../services/insert-moderation-log';
import { ApiError } from '../../../error';
export const meta = { export const meta = {
desc: { desc: {
@ -29,12 +30,24 @@ export const meta = {
validator: $.optional.arr($.str.min(1)), validator: $.optional.arr($.str.min(1)),
default: [] as string[] default: [] as string[]
} }
},
errors: {
emojiAlredyExists: {
message: 'Emoji already exists.',
code: 'EMOJI_ALREADY_EXISTS',
id: 'fc46b5a4-6b92-4c33-ac66-b806659bb5cf'
}
} }
}; };
export default define(meta, async (ps, me) => { export default define(meta, async (ps, me) => {
const type = await detectUrlMine(ps.url); const type = await detectUrlMine(ps.url);
const exists = await Emojis.findOne({ name: ps.name });
if (exists != null) throw new ApiError(meta.errors.emojiAlredyExists);
const emoji = await Emojis.save({ const emoji = await Emojis.save({
id: genId(), id: genId(),
updatedAt: new Date(), updatedAt: new Date(),

View file

@ -4,6 +4,7 @@ import { ID } from '../../../../../misc/cafy-id';
import { Emojis } from '../../../../../models'; import { Emojis } from '../../../../../models';
import { getConnection } from 'typeorm'; import { getConnection } from 'typeorm';
import { insertModerationLog } from '../../../../../services/insert-moderation-log'; import { insertModerationLog } from '../../../../../services/insert-moderation-log';
import { ApiError } from '../../../error';
export const meta = { export const meta = {
desc: { desc: {
@ -19,13 +20,21 @@ export const meta = {
id: { id: {
validator: $.type(ID) validator: $.type(ID)
} }
},
errors: {
noSuchEmoji: {
message: 'No such emoji.',
code: 'NO_SUCH_EMOJI',
id: 'be83669b-773a-44b7-b1f8-e5e5170ac3c2'
}
} }
}; };
export default define(meta, async (ps, me) => { export default define(meta, async (ps, me) => {
const emoji = await Emojis.findOne(ps.id); const emoji = await Emojis.findOne(ps.id);
if (emoji == null) throw new Error('emoji not found'); if (emoji == null) throw new ApiError(meta.errors.noSuchEmoji);
await Emojis.delete(emoji.id); await Emojis.delete(emoji.id);

View file

@ -4,6 +4,7 @@ import { detectUrlMine } from '../../../../../misc/detect-url-mine';
import { ID } from '../../../../../misc/cafy-id'; import { ID } from '../../../../../misc/cafy-id';
import { Emojis } from '../../../../../models'; import { Emojis } from '../../../../../models';
import { getConnection } from 'typeorm'; import { getConnection } from 'typeorm';
import { ApiError } from '../../../error';
export const meta = { export const meta = {
desc: { desc: {
@ -31,13 +32,21 @@ export const meta = {
aliases: { aliases: {
validator: $.arr($.str) validator: $.arr($.str)
} }
},
errors: {
noSuchEmoji: {
message: 'No such emoji.',
code: 'NO_SUCH_EMOJI',
id: '684dec9d-a8c2-4364-9aa8-456c49cb1dc8'
}
} }
}; };
export default define(meta, async (ps) => { export default define(meta, async (ps) => {
const emoji = await Emojis.findOne(ps.id); const emoji = await Emojis.findOne(ps.id);
if (emoji == null) throw new Error('emoji not found'); if (emoji == null) throw new ApiError(meta.errors.noSuchEmoji);
const type = await detectUrlMine(ps.url); const type = await detectUrlMine(ps.url);