summaryrefslogtreecommitdiff
path: root/src/server/api/endpoints/admin/show-users.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/api/endpoints/admin/show-users.ts')
-rw-r--r--src/server/api/endpoints/admin/show-users.ts119
1 files changed, 0 insertions, 119 deletions
diff --git a/src/server/api/endpoints/admin/show-users.ts b/src/server/api/endpoints/admin/show-users.ts
deleted file mode 100644
index 20b63e7be6..0000000000
--- a/src/server/api/endpoints/admin/show-users.ts
+++ /dev/null
@@ -1,119 +0,0 @@
-import $ from 'cafy';
-import define from '../../define';
-import { Users } from '@/models/index';
-
-export const meta = {
- tags: ['admin'],
-
- requireCredential: true as const,
- requireModerator: true,
-
- params: {
- limit: {
- validator: $.optional.num.range(1, 100),
- default: 10
- },
-
- offset: {
- validator: $.optional.num.min(0),
- default: 0
- },
-
- sort: {
- validator: $.optional.str.or([
- '+follower',
- '-follower',
- '+createdAt',
- '-createdAt',
- '+updatedAt',
- '-updatedAt',
- ]),
- },
-
- state: {
- validator: $.optional.str.or([
- 'all',
- 'available',
- 'admin',
- 'moderator',
- 'adminOrModerator',
- 'silenced',
- 'suspended',
- ]),
- default: 'all'
- },
-
- origin: {
- validator: $.optional.str.or([
- 'combined',
- 'local',
- 'remote',
- ]),
- default: 'local'
- },
-
- username: {
- validator: $.optional.str,
- default: null
- },
-
- hostname: {
- validator: $.optional.str,
- default: null
- }
- },
-
- res: {
- type: 'array' as const,
- nullable: false as const, optional: false as const,
- items: {
- type: 'object' as const,
- nullable: false as const, optional: false as const,
- ref: 'User'
- }
- }
-};
-
-export default define(meta, async (ps, me) => {
- const query = Users.createQueryBuilder('user');
-
- switch (ps.state) {
- case 'available': query.where('user.isSuspended = FALSE'); break;
- case 'admin': query.where('user.isAdmin = TRUE'); break;
- case 'moderator': query.where('user.isModerator = TRUE'); break;
- case 'adminOrModerator': query.where('user.isAdmin = TRUE OR user.isModerator = TRUE'); break;
- case 'alive': query.where('user.updatedAt > :date', { date: new Date(Date.now() - 1000 * 60 * 60 * 24 * 5) }); break;
- case 'silenced': query.where('user.isSilenced = TRUE'); break;
- case 'suspended': query.where('user.isSuspended = TRUE'); break;
- }
-
- switch (ps.origin) {
- case 'local': query.andWhere('user.host IS NULL'); break;
- case 'remote': query.andWhere('user.host IS NOT NULL'); break;
- }
-
- if (ps.username) {
- query.andWhere('user.usernameLower like :username', { username: ps.username.toLowerCase() + '%' });
- }
-
- if (ps.hostname) {
- query.andWhere('user.host like :hostname', { hostname: '%' + ps.hostname.toLowerCase() + '%' });
- }
-
- switch (ps.sort) {
- case '+follower': query.orderBy('user.followersCount', 'DESC'); break;
- case '-follower': query.orderBy('user.followersCount', 'ASC'); break;
- case '+createdAt': query.orderBy('user.createdAt', 'DESC'); break;
- case '-createdAt': query.orderBy('user.createdAt', 'ASC'); break;
- case '+updatedAt': query.orderBy('user.updatedAt', 'DESC', 'NULLS LAST'); break;
- case '-updatedAt': query.orderBy('user.updatedAt', 'ASC', 'NULLS FIRST'); break;
- default: query.orderBy('user.id', 'ASC'); break;
- }
-
- query.take(ps.limit!);
- query.skip(ps.offset);
-
- const users = await query.getMany();
-
- return await Users.packMany(users, me, { detail: true });
-});