diff options
| author | Oni-Men <sensyaheis@gmail.com> | 2019-08-28 08:00:05 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2019-08-28 08:00:05 +0900 |
| commit | 2d6d9f30e1dc8e902ecaa9a9f6e2a4a6a73b6fe9 (patch) | |
| tree | bc19d2dfbf0a6797a28e6bca267060d0fd074ed6 /src/server/api | |
| parent | Save memo automatically (#5351) (diff) | |
| download | sharkey-2d6d9f30e1dc8e902ecaa9a9f6e2a4a6a73b6fe9.tar.gz sharkey-2d6d9f30e1dc8e902ecaa9a9f6e2a4a6a73b6fe9.tar.bz2 sharkey-2d6d9f30e1dc8e902ecaa9a9f6e2a4a6a73b6fe9.zip | |
ページURLが他と重複してたらエラーを投げるように (#5354)
* [Page]nameが重複したときの処理を追加
* page-editor側のerr.idにuuidを適用
* refactor
* uuidをわけた
Diffstat (limited to 'src/server/api')
| -rw-r--r-- | src/server/api/endpoints/pages/create.ts | 14 | ||||
| -rw-r--r-- | src/server/api/endpoints/pages/update.ts | 16 |
2 files changed, 30 insertions, 0 deletions
diff --git a/src/server/api/endpoints/pages/create.ts b/src/server/api/endpoints/pages/create.ts index a49a5d37b8..f18c82ffde 100644 --- a/src/server/api/endpoints/pages/create.ts +++ b/src/server/api/endpoints/pages/create.ts @@ -76,6 +76,11 @@ export const meta = { code: 'NO_SUCH_FILE', id: 'b7b97489-0f66-4b12-a5ff-b21bd63f6e1c' }, + nameAlreadyExists: { + message: 'Specified name already exists.', + code: 'NAME_ALREADY_EXISTS', + id: '4650348e-301c-499a-83c9-6aa988c66bc1' + } } }; @@ -92,6 +97,15 @@ export default define(meta, async (ps, user) => { } } + await Pages.find({ + userId: user.id, + name: ps.name + }).then(result => { + if (result.length > 0) { + throw new ApiError(meta.errors.nameAlreadyExists); + } + }); + const page = await Pages.save(new Page({ id: genId(), createdAt: new Date(), diff --git a/src/server/api/endpoints/pages/update.ts b/src/server/api/endpoints/pages/update.ts index 9daf5e9cae..564beb84cb 100644 --- a/src/server/api/endpoints/pages/update.ts +++ b/src/server/api/endpoints/pages/update.ts @@ -4,6 +4,7 @@ import define from '../../define'; import { ApiError } from '../../error'; import { Pages, DriveFiles } from '../../../../models'; import { ID } from '../../../../misc/cafy-id'; +import { Not } from 'typeorm'; export const meta = { desc: { @@ -85,6 +86,11 @@ export const meta = { code: 'NO_SUCH_FILE', id: 'cfc23c7c-3887-490e-af30-0ed576703c82' }, + nameAlreadyExists: { + message: 'Specified name already exists.', + code: 'NAME_ALREADY_EXISTS', + id: '2298a392-d4a1-44c5-9ebb-ac1aeaa5a9ab' + } } }; @@ -109,6 +115,16 @@ export default define(meta, async (ps, user) => { } } + await Pages.find({ + id: Not(ps.pageId), + userId: user.id, + name: ps.name + }).then(result => { + if (result.length > 0) { + throw new ApiError(meta.errors.nameAlreadyExists); + } + }); + await Pages.update(page.id, { updatedAt: new Date(), title: ps.title, |