]>
Commit | Line | Data |
---|---|---|
9593a78a C |
1 | import express from 'express' |
2 | import { query } from 'express-validator' | |
74dc3bca | 3 | import { SORTABLE_COLUMNS } from '../../initializers/constants' |
9593a78a | 4 | import { areValidationErrors } from './shared' |
a877d5ac | 5 | |
e364e31e C |
6 | export const adminUsersSortValidator = checkSortFactory(SORTABLE_COLUMNS.ADMIN_USERS) |
7 | export const accountsSortValidator = checkSortFactory(SORTABLE_COLUMNS.ACCOUNTS) | |
8 | export const jobsSortValidator = checkSortFactory(SORTABLE_COLUMNS.JOBS, [ 'jobs' ]) | |
9 | export const abusesSortValidator = checkSortFactory(SORTABLE_COLUMNS.ABUSES) | |
10 | export const videosSortValidator = checkSortFactory(SORTABLE_COLUMNS.VIDEOS) | |
11 | export const videoImportsSortValidator = checkSortFactory(SORTABLE_COLUMNS.VIDEO_IMPORTS) | |
12 | export const videosSearchSortValidator = checkSortFactory(SORTABLE_COLUMNS.VIDEOS_SEARCH) | |
13 | export const videoChannelsSearchSortValidator = checkSortFactory(SORTABLE_COLUMNS.VIDEO_CHANNELS_SEARCH) | |
14 | export const videoPlaylistsSearchSortValidator = checkSortFactory(SORTABLE_COLUMNS.VIDEO_PLAYLISTS_SEARCH) | |
15 | export const videoCommentsValidator = checkSortFactory(SORTABLE_COLUMNS.VIDEO_COMMENTS) | |
16 | export const videoCommentThreadsSortValidator = checkSortFactory(SORTABLE_COLUMNS.VIDEO_COMMENT_THREADS) | |
17 | export const videoRatesSortValidator = checkSortFactory(SORTABLE_COLUMNS.VIDEO_RATES) | |
18 | export const blacklistSortValidator = checkSortFactory(SORTABLE_COLUMNS.BLACKLISTS) | |
19 | export const videoChannelsSortValidator = checkSortFactory(SORTABLE_COLUMNS.VIDEO_CHANNELS) | |
20 | export const instanceFollowersSortValidator = checkSortFactory(SORTABLE_COLUMNS.INSTANCE_FOLLOWERS) | |
21 | export const instanceFollowingSortValidator = checkSortFactory(SORTABLE_COLUMNS.INSTANCE_FOLLOWING) | |
22 | export const userSubscriptionsSortValidator = checkSortFactory(SORTABLE_COLUMNS.USER_SUBSCRIPTIONS) | |
23 | export const accountsBlocklistSortValidator = checkSortFactory(SORTABLE_COLUMNS.ACCOUNTS_BLOCKLIST) | |
24 | export const serversBlocklistSortValidator = checkSortFactory(SORTABLE_COLUMNS.SERVERS_BLOCKLIST) | |
25 | export const userNotificationsSortValidator = checkSortFactory(SORTABLE_COLUMNS.USER_NOTIFICATIONS) | |
26 | export const videoPlaylistsSortValidator = checkSortFactory(SORTABLE_COLUMNS.VIDEO_PLAYLISTS) | |
27 | export const pluginsSortValidator = checkSortFactory(SORTABLE_COLUMNS.PLUGINS) | |
28 | export const availablePluginsSortValidator = checkSortFactory(SORTABLE_COLUMNS.AVAILABLE_PLUGINS) | |
29 | export const videoRedundanciesSortValidator = checkSortFactory(SORTABLE_COLUMNS.VIDEO_REDUNDANCIES) | |
30 | export const videoChannelSyncsSortValidator = checkSortFactory(SORTABLE_COLUMNS.VIDEO_CHANNEL_SYNCS) | |
31 | ||
32 | export const accountsFollowersSortValidator = checkSortFactory(SORTABLE_COLUMNS.ACCOUNT_FOLLOWERS) | |
33 | export const videoChannelsFollowersSortValidator = checkSortFactory(SORTABLE_COLUMNS.CHANNEL_FOLLOWERS) | |
34 | ||
35 | export const userRegistrationsSortValidator = checkSortFactory(SORTABLE_COLUMNS.USER_REGISTRATIONS) | |
36 | ||
0c9668f7 C |
37 | export const runnersSortValidator = checkSortFactory(SORTABLE_COLUMNS.RUNNERS) |
38 | export const runnerRegistrationTokensSortValidator = checkSortFactory(SORTABLE_COLUMNS.RUNNER_REGISTRATION_TOKENS) | |
39 | export const runnerJobsSortValidator = checkSortFactory(SORTABLE_COLUMNS.RUNNER_JOBS) | |
40 | ||
e364e31e C |
41 | // --------------------------------------------------------------------------- |
42 | ||
9593a78a C |
43 | function checkSortFactory (columns: string[], tags: string[] = []) { |
44 | return checkSort(createSortableColumns(columns), tags) | |
45 | } | |
46 | ||
47 | function checkSort (sortableColumns: string[], tags: string[] = []) { | |
48 | return [ | |
396f6f01 C |
49 | query('sort') |
50 | .optional() | |
51 | .isIn(sortableColumns), | |
9593a78a C |
52 | |
53 | (req: express.Request, res: express.Response, next: express.NextFunction) => { | |
a85d5303 | 54 | if (areValidationErrors(req, res, { tags })) return |
9593a78a C |
55 | |
56 | return next() | |
57 | } | |
58 | ] | |
59 | } | |
60 | ||
61 | function createSortableColumns (sortableColumns: string[]) { | |
62 | const sortableColumnDesc = sortableColumns.map(sortableColumn => '-' + sortableColumn) | |
63 | ||
64 | return sortableColumns.concat(sortableColumnDesc) | |
65 | } |