summaryrefslogtreecommitdiff
path: root/src/server/api/endpoints/gallery
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2021-11-12 02:02:25 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2021-11-12 02:02:25 +0900
commit0e4a111f81cceed275d9bec2695f6e401fb654d8 (patch)
tree40874799472fa07416f17b50a398ac33b7771905 /src/server/api/endpoints/gallery
parentupdate deps (diff)
downloadsharkey-0e4a111f81cceed275d9bec2695f6e401fb654d8.tar.gz
sharkey-0e4a111f81cceed275d9bec2695f6e401fb654d8.tar.bz2
sharkey-0e4a111f81cceed275d9bec2695f6e401fb654d8.zip
refactoring
Resolve #7779
Diffstat (limited to 'src/server/api/endpoints/gallery')
-rw-r--r--src/server/api/endpoints/gallery/featured.ts29
-rw-r--r--src/server/api/endpoints/gallery/popular.ts28
-rw-r--r--src/server/api/endpoints/gallery/posts.ts43
-rw-r--r--src/server/api/endpoints/gallery/posts/create.ts77
-rw-r--r--src/server/api/endpoints/gallery/posts/delete.ts40
-rw-r--r--src/server/api/endpoints/gallery/posts/like.ts71
-rw-r--r--src/server/api/endpoints/gallery/posts/show.ts43
-rw-r--r--src/server/api/endpoints/gallery/posts/unlike.ts54
-rw-r--r--src/server/api/endpoints/gallery/posts/update.ts82
9 files changed, 0 insertions, 467 deletions
diff --git a/src/server/api/endpoints/gallery/featured.ts b/src/server/api/endpoints/gallery/featured.ts
deleted file mode 100644
index 30ef8cedec..0000000000
--- a/src/server/api/endpoints/gallery/featured.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import define from '../../define';
-import { GalleryPosts } from '@/models/index';
-
-export const meta = {
- tags: ['gallery'],
-
- requireCredential: false as const,
-
- res: {
- type: 'array' as const,
- optional: false as const, nullable: false as const,
- items: {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- ref: 'GalleryPost',
- }
- },
-};
-
-export default define(meta, async (ps, me) => {
- const query = GalleryPosts.createQueryBuilder('post')
- .andWhere('post.createdAt > :date', { date: new Date(Date.now() - (1000 * 60 * 60 * 24 * 3)) })
- .andWhere('post.likedCount > 0')
- .orderBy('post.likedCount', 'DESC');
-
- const posts = await query.take(10).getMany();
-
- return await GalleryPosts.packMany(posts, me);
-});
diff --git a/src/server/api/endpoints/gallery/popular.ts b/src/server/api/endpoints/gallery/popular.ts
deleted file mode 100644
index 18449b9654..0000000000
--- a/src/server/api/endpoints/gallery/popular.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import define from '../../define';
-import { GalleryPosts } from '@/models/index';
-
-export const meta = {
- tags: ['gallery'],
-
- requireCredential: false as const,
-
- res: {
- type: 'array' as const,
- optional: false as const, nullable: false as const,
- items: {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- ref: 'GalleryPost',
- }
- },
-};
-
-export default define(meta, async (ps, me) => {
- const query = GalleryPosts.createQueryBuilder('post')
- .andWhere('post.likedCount > 0')
- .orderBy('post.likedCount', 'DESC');
-
- const posts = await query.take(10).getMany();
-
- return await GalleryPosts.packMany(posts, me);
-});
diff --git a/src/server/api/endpoints/gallery/posts.ts b/src/server/api/endpoints/gallery/posts.ts
deleted file mode 100644
index 53d3236d2d..0000000000
--- a/src/server/api/endpoints/gallery/posts.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { makePaginationQuery } from '../../common/make-pagination-query';
-import { GalleryPosts } from '@/models/index';
-
-export const meta = {
- tags: ['gallery'],
-
- params: {
- limit: {
- validator: $.optional.num.range(1, 100),
- default: 10
- },
-
- sinceId: {
- validator: $.optional.type(ID),
- },
-
- untilId: {
- validator: $.optional.type(ID),
- },
- },
-
- res: {
- type: 'array' as const,
- optional: false as const, nullable: false as const,
- items: {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- ref: 'GalleryPost',
- }
- },
-};
-
-export default define(meta, async (ps, me) => {
- const query = makePaginationQuery(GalleryPosts.createQueryBuilder('post'), ps.sinceId, ps.untilId)
- .innerJoinAndSelect('post.user', 'user');
-
- const posts = await query.take(ps.limit!).getMany();
-
- return await GalleryPosts.packMany(posts, me);
-});
diff --git a/src/server/api/endpoints/gallery/posts/create.ts b/src/server/api/endpoints/gallery/posts/create.ts
deleted file mode 100644
index 38b487e6ea..0000000000
--- a/src/server/api/endpoints/gallery/posts/create.ts
+++ /dev/null
@@ -1,77 +0,0 @@
-import $ from 'cafy';
-import * as ms from 'ms';
-import define from '../../../define';
-import { ID } from '../../../../../misc/cafy-id';
-import { DriveFiles, GalleryPosts } from '@/models/index';
-import { genId } from '../../../../../misc/gen-id';
-import { GalleryPost } from '@/models/entities/gallery-post';
-import { ApiError } from '../../../error';
-import { DriveFile } from '@/models/entities/drive-file';
-
-export const meta = {
- tags: ['gallery'],
-
- requireCredential: true as const,
-
- kind: 'write:gallery',
-
- limit: {
- duration: ms('1hour'),
- max: 300
- },
-
- params: {
- title: {
- validator: $.str.min(1),
- },
-
- description: {
- validator: $.optional.nullable.str,
- },
-
- fileIds: {
- validator: $.arr($.type(ID)).unique().range(1, 32),
- },
-
- isSensitive: {
- validator: $.optional.bool,
- default: false,
- },
- },
-
- res: {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- ref: 'GalleryPost',
- },
-
- errors: {
-
- }
-};
-
-export default define(meta, async (ps, user) => {
- const files = (await Promise.all(ps.fileIds.map(fileId =>
- DriveFiles.findOne({
- id: fileId,
- userId: user.id
- })
- ))).filter((file): file is DriveFile => file != null);
-
- if (files.length === 0) {
- throw new Error();
- }
-
- const post = await GalleryPosts.insert(new GalleryPost({
- id: genId(),
- createdAt: new Date(),
- updatedAt: new Date(),
- title: ps.title,
- description: ps.description,
- userId: user.id,
- isSensitive: ps.isSensitive,
- fileIds: files.map(file => file.id)
- })).then(x => GalleryPosts.findOneOrFail(x.identifiers[0]));
-
- return await GalleryPosts.pack(post, user);
-});
diff --git a/src/server/api/endpoints/gallery/posts/delete.ts b/src/server/api/endpoints/gallery/posts/delete.ts
deleted file mode 100644
index e5b7c07f2f..0000000000
--- a/src/server/api/endpoints/gallery/posts/delete.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-import $ from 'cafy';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { GalleryPosts } from '@/models/index';
-import { ID } from '@/misc/cafy-id';
-
-export const meta = {
- tags: ['gallery'],
-
- requireCredential: true as const,
-
- kind: 'write:gallery',
-
- params: {
- postId: {
- validator: $.type(ID),
- },
- },
-
- errors: {
- noSuchPost: {
- message: 'No such post.',
- code: 'NO_SUCH_POST',
- id: 'ae52f367-4bd7-4ecd-afc6-5672fff427f5'
- },
- }
-};
-
-export default define(meta, async (ps, user) => {
- const post = await GalleryPosts.findOne({
- id: ps.postId,
- userId: user.id,
- });
-
- if (post == null) {
- throw new ApiError(meta.errors.noSuchPost);
- }
-
- await GalleryPosts.delete(post.id);
-});
diff --git a/src/server/api/endpoints/gallery/posts/like.ts b/src/server/api/endpoints/gallery/posts/like.ts
deleted file mode 100644
index 81a25c0ad1..0000000000
--- a/src/server/api/endpoints/gallery/posts/like.ts
+++ /dev/null
@@ -1,71 +0,0 @@
-import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { GalleryPosts, GalleryLikes } from '@/models/index';
-import { genId } from '@/misc/gen-id';
-
-export const meta = {
- tags: ['gallery'],
-
- requireCredential: true as const,
-
- kind: 'write:gallery-likes',
-
- params: {
- postId: {
- validator: $.type(ID),
- }
- },
-
- errors: {
- noSuchPost: {
- message: 'No such post.',
- code: 'NO_SUCH_POST',
- id: '56c06af3-1287-442f-9701-c93f7c4a62ff'
- },
-
- yourPost: {
- message: 'You cannot like your post.',
- code: 'YOUR_POST',
- id: 'f78f1511-5ebc-4478-a888-1198d752da68'
- },
-
- alreadyLiked: {
- message: 'The post has already been liked.',
- code: 'ALREADY_LIKED',
- id: '40e9ed56-a59c-473a-bf3f-f289c54fb5a7'
- },
- }
-};
-
-export default define(meta, async (ps, user) => {
- const post = await GalleryPosts.findOne(ps.postId);
- if (post == null) {
- throw new ApiError(meta.errors.noSuchPost);
- }
-
- if (post.userId === user.id) {
- throw new ApiError(meta.errors.yourPost);
- }
-
- // if already liked
- const exist = await GalleryLikes.findOne({
- postId: post.id,
- userId: user.id
- });
-
- if (exist != null) {
- throw new ApiError(meta.errors.alreadyLiked);
- }
-
- // Create like
- await GalleryLikes.insert({
- id: genId(),
- createdAt: new Date(),
- postId: post.id,
- userId: user.id
- });
-
- GalleryPosts.increment({ id: post.id }, 'likedCount', 1);
-});
diff --git a/src/server/api/endpoints/gallery/posts/show.ts b/src/server/api/endpoints/gallery/posts/show.ts
deleted file mode 100644
index 93852a5f8d..0000000000
--- a/src/server/api/endpoints/gallery/posts/show.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { GalleryPosts } from '@/models/index';
-
-export const meta = {
- tags: ['gallery'],
-
- requireCredential: false as const,
-
- params: {
- postId: {
- validator: $.type(ID),
- },
- },
-
- errors: {
- noSuchPost: {
- message: 'No such post.',
- code: 'NO_SUCH_POST',
- id: '1137bf14-c5b0-4604-85bb-5b5371b1cd45'
- },
- },
-
- res: {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- ref: 'GalleryPost'
- }
-};
-
-export default define(meta, async (ps, me) => {
- const post = await GalleryPosts.findOne({
- id: ps.postId,
- });
-
- if (post == null) {
- throw new ApiError(meta.errors.noSuchPost);
- }
-
- return await GalleryPosts.pack(post, me);
-});
diff --git a/src/server/api/endpoints/gallery/posts/unlike.ts b/src/server/api/endpoints/gallery/posts/unlike.ts
deleted file mode 100644
index 0347cdf79e..0000000000
--- a/src/server/api/endpoints/gallery/posts/unlike.ts
+++ /dev/null
@@ -1,54 +0,0 @@
-import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { GalleryPosts, GalleryLikes } from '@/models/index';
-
-export const meta = {
- tags: ['gallery'],
-
- requireCredential: true as const,
-
- kind: 'write:gallery-likes',
-
- params: {
- postId: {
- validator: $.type(ID),
- }
- },
-
- errors: {
- noSuchPost: {
- message: 'No such post.',
- code: 'NO_SUCH_POST',
- id: 'c32e6dd0-b555-4413-925e-b3757d19ed84'
- },
-
- notLiked: {
- message: 'You have not liked that post.',
- code: 'NOT_LIKED',
- id: 'e3e8e06e-be37-41f7-a5b4-87a8250288f0'
- },
- }
-};
-
-export default define(meta, async (ps, user) => {
- const post = await GalleryPosts.findOne(ps.postId);
- if (post == null) {
- throw new ApiError(meta.errors.noSuchPost);
- }
-
- const exist = await GalleryLikes.findOne({
- postId: post.id,
- userId: user.id
- });
-
- if (exist == null) {
- throw new ApiError(meta.errors.notLiked);
- }
-
- // Delete like
- await GalleryLikes.delete(exist.id);
-
- GalleryPosts.decrement({ id: post.id }, 'likedCount', 1);
-});
diff --git a/src/server/api/endpoints/gallery/posts/update.ts b/src/server/api/endpoints/gallery/posts/update.ts
deleted file mode 100644
index 54eea130d3..0000000000
--- a/src/server/api/endpoints/gallery/posts/update.ts
+++ /dev/null
@@ -1,82 +0,0 @@
-import $ from 'cafy';
-import * as ms from 'ms';
-import define from '../../../define';
-import { ID } from '../../../../../misc/cafy-id';
-import { DriveFiles, GalleryPosts } from '@/models/index';
-import { GalleryPost } from '@/models/entities/gallery-post';
-import { ApiError } from '../../../error';
-import { DriveFile } from '@/models/entities/drive-file';
-
-export const meta = {
- tags: ['gallery'],
-
- requireCredential: true as const,
-
- kind: 'write:gallery',
-
- limit: {
- duration: ms('1hour'),
- max: 300
- },
-
- params: {
- postId: {
- validator: $.type(ID),
- },
-
- title: {
- validator: $.str.min(1),
- },
-
- description: {
- validator: $.optional.nullable.str,
- },
-
- fileIds: {
- validator: $.arr($.type(ID)).unique().range(1, 32),
- },
-
- isSensitive: {
- validator: $.optional.bool,
- default: false,
- },
- },
-
- res: {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- ref: 'GalleryPost',
- },
-
- errors: {
-
- }
-};
-
-export default define(meta, async (ps, user) => {
- const files = (await Promise.all(ps.fileIds.map(fileId =>
- DriveFiles.findOne({
- id: fileId,
- userId: user.id
- })
- ))).filter((file): file is DriveFile => file != null);
-
- if (files.length === 0) {
- throw new Error();
- }
-
- await GalleryPosts.update({
- id: ps.postId,
- userId: user.id,
- }, {
- updatedAt: new Date(),
- title: ps.title,
- description: ps.description,
- isSensitive: ps.isSensitive,
- fileIds: files.map(file => file.id)
- });
-
- const post = await GalleryPosts.findOneOrFail(ps.postId);
-
- return await GalleryPosts.pack(post, user);
-});