summaryrefslogtreecommitdiff
path: root/src/server/api/endpoints/users/lists
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2019-04-07 21:50:36 +0900
committerGitHub <noreply@github.com>2019-04-07 21:50:36 +0900
commitf0a29721c9fb10f97faf386bc9d6b1b2fad97895 (patch)
treeb5c1d38d698589bb444c0881a431391db91eb5bc /src/server/api/endpoints/users/lists
parentUpdate README.md [AUTOGEN] (#4639) (diff)
downloadsharkey-f0a29721c9fb10f97faf386bc9d6b1b2fad97895.tar.gz
sharkey-f0a29721c9fb10f97faf386bc9d6b1b2fad97895.tar.bz2
sharkey-f0a29721c9fb10f97faf386bc9d6b1b2fad97895.zip
Use PostgreSQL instead of MongoDB (#4572)
* wip * Update note.ts * Update timeline.ts * Update core.ts * wip * Update generate-visibility-query.ts * wip * wip * wip * wip * wip * Update global-timeline.ts * wip * wip * wip * Update vote.ts * wip * wip * Update create.ts * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * Update files.ts * wip * wip * Update CONTRIBUTING.md * wip * wip * wip * wip * wip * wip * wip * wip * Update read-notification.ts * wip * wip * wip * wip * wip * wip * wip * Update cancel.ts * wip * wip * wip * Update show.ts * wip * wip * Update gen-id.ts * Update create.ts * Update id.ts * wip * wip * wip * wip * wip * wip * wip * Docker: Update files about Docker (#4599) * Docker: Use cache if files used by `yarn install` was not updated This patch reduces the number of times to installing node_modules. For example, `yarn install` step will be skipped when only ".config/default.yml" is updated. * Docker: Migrate MongoDB to Postgresql Misskey uses Postgresql as a database instead of Mongodb since version 11. * Docker: Uncomment about data persistence This patch will save a lot of databases. * wip * wip * wip * Update activitypub.ts * wip * wip * wip * Update logs.ts * wip * Update drive-file.ts * Update register.ts * wip * wip * Update mentions.ts * wip * wip * wip * Update recommendation.ts * wip * Update index.ts * wip * Update recommendation.ts * Doc: Update docker.ja.md and docker.en.md (#1) (#4608) Update how to set up misskey. * wip * :v: * wip * Update note.ts * Update postgre.ts * wip * wip * wip * wip * Update add-file.ts * wip * wip * wip * Clean up * Update logs.ts * wip * :pizza: * wip * Ad notes * wip * Update api-visibility.ts * Update note.ts * Update add-file.ts * tests * tests * Update postgre.ts * Update utils.ts * wip * wip * Refactor * wip * Refactor * wip * wip * Update show-users.ts * Update update-instance.ts * wip * Update feed.ts * Update outbox.ts * Update outbox.ts * Update user.ts * wip * Update list.ts * Update update-hashtag.ts * wip * Update update-hashtag.ts * Refactor * Update update.ts * wip * wip * :v: * clean up * docs * Update push.ts * wip * Update api.ts * wip * :v: * Update make-pagination-query.ts * :v: * Delete hashtags.ts * Update instances.ts * Update instances.ts * Update create.ts * Update search.ts * Update reversi-game.ts * Update signup.ts * Update user.ts * id * Update example.yml * :art: * objectid * fix * reversi * reversi * Fix bug of chart engine * Add test of chart engine * Improve test * Better testing * Improve chart engine * Refactor * Add test of chart engine * Refactor * Add chart test * Fix bug * コミットし忘れ * Refactoring * :v: * Add tests * Add test * Extarct note tests * Refactor * 存在しないユーザーにメンションできなくなっていた問題を修正 * Fix bug * Update update-meta.ts * Fix bug * Update mention.vue * Fix bug * Update meta.ts * Update CONTRIBUTING.md * Fix bug * Fix bug * Fix bug * Clean up * Clean up * Update notification.ts * Clean up * Add mute tests * Add test * Refactor * Add test * Fix test * Refactor * Refactor * Add tests * Update utils.ts * Update utils.ts * Fix test * Update package.json * Update update.ts * Update manifest.ts * Fix bug * Fix bug * Add test * :art: * Update endpoint permissions * Updaye permisison * Update person.ts #4299 * データベースと同期しないように * Fix bug * Fix bug * Update reversi-game.ts * Use a feature of Node v11.7.0 to extract a public key (#4644) * wip * wip * :v: * Refactoring #1540 * test * test * test * test * test * test * test * Fix bug * Fix test * :sushi: * wip * #4471 * Add test for #4335 * Refactor * Fix test * Add tests * :clock4: * Fix bug * Add test * Add test * rename * Fix bug
Diffstat (limited to 'src/server/api/endpoints/users/lists')
-rw-r--r--src/server/api/endpoints/users/lists/create.ts18
-rw-r--r--src/server/api/endpoints/users/lists/delete.ts17
-rw-r--r--src/server/api/endpoints/users/lists/list.ts10
-rw-r--r--src/server/api/endpoints/users/lists/pull.ts23
-rw-r--r--src/server/api/endpoints/users/lists/push.ts21
-rw-r--r--src/server/api/endpoints/users/lists/show.ts15
-rw-r--r--src/server/api/endpoints/users/lists/update.ts23
7 files changed, 59 insertions, 68 deletions
diff --git a/src/server/api/endpoints/users/lists/create.ts b/src/server/api/endpoints/users/lists/create.ts
index 00d2538c9f..21dc6d331d 100644
--- a/src/server/api/endpoints/users/lists/create.ts
+++ b/src/server/api/endpoints/users/lists/create.ts
@@ -1,6 +1,8 @@
import $ from 'cafy';
-import UserList, { pack } from '../../../../../models/user-list';
import define from '../../../define';
+import { UserLists } from '../../../../../models';
+import { genId } from '../../../../../misc/gen-id';
+import { UserList } from '../../../../../models/entities/user-list';
export const meta = {
desc: {
@@ -12,7 +14,7 @@ export const meta = {
requireCredential: true,
- kind: 'account-write',
+ kind: 'write:account',
params: {
title: {
@@ -22,12 +24,12 @@ export const meta = {
};
export default define(meta, async (ps, user) => {
- const userList = await UserList.insert({
+ const userList = await UserLists.save({
+ id: genId(),
createdAt: new Date(),
- userId: user._id,
- title: ps.title,
- userIds: []
- });
+ userId: user.id,
+ name: ps.title,
+ } as UserList);
- return await pack(userList);
+ return await UserLists.pack(userList);
});
diff --git a/src/server/api/endpoints/users/lists/delete.ts b/src/server/api/endpoints/users/lists/delete.ts
index d8faaa928c..0634bca4e3 100644
--- a/src/server/api/endpoints/users/lists/delete.ts
+++ b/src/server/api/endpoints/users/lists/delete.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import ID, { transform } from '../../../../../misc/cafy-id';
-import UserList from '../../../../../models/user-list';
+import { ID } from '../../../../../misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
+import { UserLists } from '../../../../../models';
export const meta = {
desc: {
@@ -14,12 +14,11 @@ export const meta = {
requireCredential: true,
- kind: 'account-write',
+ kind: 'write:account',
params: {
listId: {
validator: $.type(ID),
- transform: transform,
desc: {
'ja-JP': '対象となるユーザーリストのID',
'en-US': 'ID of target user list'
@@ -37,16 +36,14 @@ export const meta = {
};
export default define(meta, async (ps, user) => {
- const userList = await UserList.findOne({
- _id: ps.listId,
- userId: user._id
+ const userList = await UserLists.findOne({
+ id: ps.listId,
+ userId: user.id
});
if (userList == null) {
throw new ApiError(meta.errors.noSuchList);
}
- await UserList.remove({
- _id: userList._id
- });
+ await UserLists.delete(userList.id);
});
diff --git a/src/server/api/endpoints/users/lists/list.ts b/src/server/api/endpoints/users/lists/list.ts
index ece2af5603..b05fc45527 100644
--- a/src/server/api/endpoints/users/lists/list.ts
+++ b/src/server/api/endpoints/users/lists/list.ts
@@ -1,5 +1,5 @@
-import UserList, { pack } from '../../../../../models/user-list';
import define from '../../../define';
+import { UserLists } from '../../../../../models';
export const meta = {
desc: {
@@ -10,7 +10,7 @@ export const meta = {
requireCredential: true,
- kind: 'account-read',
+ kind: 'read:account',
res: {
type: 'array',
@@ -21,9 +21,9 @@ export const meta = {
};
export default define(meta, async (ps, me) => {
- const userLists = await UserList.find({
- userId: me._id,
+ const userLists = await UserLists.find({
+ userId: me.id,
});
- return await Promise.all(userLists.map(x => pack(x)));
+ return await Promise.all(userLists.map(x => UserLists.pack(x)));
});
diff --git a/src/server/api/endpoints/users/lists/pull.ts b/src/server/api/endpoints/users/lists/pull.ts
index 0eee1975db..524670b341 100644
--- a/src/server/api/endpoints/users/lists/pull.ts
+++ b/src/server/api/endpoints/users/lists/pull.ts
@@ -1,11 +1,10 @@
import $ from 'cafy';
-import ID, { transform } from '../../../../../misc/cafy-id';
-import UserList from '../../../../../models/user-list';
-import { pack as packUser } from '../../../../../models/user';
+import { ID } from '../../../../../misc/cafy-id';
import { publishUserListStream } from '../../../../../services/stream';
import define from '../../../define';
import { ApiError } from '../../../error';
import { getUser } from '../../../common/getters';
+import { UserLists, UserListJoinings, Users } from '../../../../../models';
export const meta = {
desc: {
@@ -17,17 +16,15 @@ export const meta = {
requireCredential: true,
- kind: 'account-write',
+ kind: 'write:account',
params: {
listId: {
validator: $.type(ID),
- transform: transform,
},
userId: {
validator: $.type(ID),
- transform: transform,
desc: {
'ja-JP': '対象のユーザーのID',
'en-US': 'Target user ID'
@@ -52,9 +49,9 @@ export const meta = {
export default define(meta, async (ps, me) => {
// Fetch the list
- const userList = await UserList.findOne({
- _id: ps.listId,
- userId: me._id,
+ const userList = await UserLists.findOne({
+ id: ps.listId,
+ userId: me.id,
});
if (userList == null) {
@@ -68,11 +65,7 @@ export default define(meta, async (ps, me) => {
});
// Pull the user
- await UserList.update({ _id: userList._id }, {
- $pull: {
- userIds: user._id
- }
- });
+ await UserListJoinings.delete({ userId: user.id });
- publishUserListStream(userList._id, 'userRemoved', await packUser(user));
+ publishUserListStream(userList.id, 'userRemoved', await Users.pack(user));
});
diff --git a/src/server/api/endpoints/users/lists/push.ts b/src/server/api/endpoints/users/lists/push.ts
index eea2f39a8c..2763b3a19c 100644
--- a/src/server/api/endpoints/users/lists/push.ts
+++ b/src/server/api/endpoints/users/lists/push.ts
@@ -1,10 +1,10 @@
import $ from 'cafy';
-import ID, { transform } from '../../../../../misc/cafy-id';
-import UserList from '../../../../../models/user-list';
+import { ID } from '../../../../../misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
import { getUser } from '../../../common/getters';
import { pushUserToUserList } from '../../../../../services/user-list/push';
+import { UserLists, UserListJoinings } from '../../../../../models';
export const meta = {
desc: {
@@ -16,17 +16,15 @@ export const meta = {
requireCredential: true,
- kind: 'account-write',
+ kind: 'write:account',
params: {
listId: {
validator: $.type(ID),
- transform: transform,
},
userId: {
validator: $.type(ID),
- transform: transform,
desc: {
'ja-JP': '対象のユーザーのID',
'en-US': 'Target user ID'
@@ -57,9 +55,9 @@ export const meta = {
export default define(meta, async (ps, me) => {
// Fetch the list
- const userList = await UserList.findOne({
- _id: ps.listId,
- userId: me._id,
+ const userList = await UserLists.findOne({
+ id: ps.listId,
+ userId: me.id,
});
if (userList == null) {
@@ -72,7 +70,12 @@ export default define(meta, async (ps, me) => {
throw e;
});
- if (userList.userIds.map(id => id.toHexString()).includes(user._id.toHexString())) {
+ const exist = await UserListJoinings.findOne({
+ userListId: userList.id,
+ userId: user.id
+ });
+
+ if (exist) {
throw new ApiError(meta.errors.alreadyAdded);
}
diff --git a/src/server/api/endpoints/users/lists/show.ts b/src/server/api/endpoints/users/lists/show.ts
index 0fab2fa499..1a997ec7c5 100644
--- a/src/server/api/endpoints/users/lists/show.ts
+++ b/src/server/api/endpoints/users/lists/show.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import ID, { transform } from '../../../../../misc/cafy-id';
-import UserList, { pack } from '../../../../../models/user-list';
+import { ID } from '../../../../../misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
+import { UserLists } from '../../../../../models';
export const meta = {
desc: {
@@ -14,12 +14,11 @@ export const meta = {
requireCredential: true,
- kind: 'account-read',
+ kind: 'read:account',
params: {
listId: {
validator: $.type(ID),
- transform: transform,
},
},
@@ -38,14 +37,14 @@ export const meta = {
export default define(meta, async (ps, me) => {
// Fetch the list
- const userList = await UserList.findOne({
- _id: ps.listId,
- userId: me._id,
+ const userList = await UserLists.findOne({
+ id: ps.listId,
+ userId: me.id,
});
if (userList == null) {
throw new ApiError(meta.errors.noSuchList);
}
- return await pack(userList);
+ return await UserLists.pack(userList);
});
diff --git a/src/server/api/endpoints/users/lists/update.ts b/src/server/api/endpoints/users/lists/update.ts
index 5897693144..dc08d59f6a 100644
--- a/src/server/api/endpoints/users/lists/update.ts
+++ b/src/server/api/endpoints/users/lists/update.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import ID, { transform } from '../../../../../misc/cafy-id';
-import UserList, { pack } from '../../../../../models/user-list';
+import { ID } from '../../../../../misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
+import { UserLists } from '../../../../../models';
export const meta = {
desc: {
@@ -14,19 +14,18 @@ export const meta = {
requireCredential: true,
- kind: 'account-write',
+ kind: 'write:account',
params: {
listId: {
validator: $.type(ID),
- transform: transform,
desc: {
'ja-JP': '対象となるユーザーリストのID',
'en-US': 'ID of target user list'
}
},
- title: {
+ name: {
validator: $.str.range(1, 100),
desc: {
'ja-JP': 'このユーザーリストの名前',
@@ -46,20 +45,18 @@ export const meta = {
export default define(meta, async (ps, user) => {
// Fetch the list
- const userList = await UserList.findOne({
- _id: ps.listId,
- userId: user._id
+ const userList = await UserLists.findOne({
+ id: ps.listId,
+ userId: user.id
});
if (userList == null) {
throw new ApiError(meta.errors.noSuchList);
}
- await UserList.update({ _id: userList._id }, {
- $set: {
- title: ps.title
- }
+ await UserLists.update(userList.id, {
+ name: ps.name
});
- return await pack(userList._id);
+ return await UserLists.pack(userList.id);
});