]>
Commit | Line | Data |
---|---|---|
9593a78a C |
1 | import express from 'express' |
2 | import { query } from 'express-validator' | |
a85d5303 | 3 | |
74dc3bca | 4 | import { SORTABLE_COLUMNS } from '../../initializers/constants' |
9593a78a | 5 | import { areValidationErrors } from './shared' |
a877d5ac | 6 | |
9593a78a C |
7 | function checkSortFactory (columns: string[], tags: string[] = []) { |
8 | return checkSort(createSortableColumns(columns), tags) | |
9 | } | |
10 | ||
11 | function checkSort (sortableColumns: string[], tags: string[] = []) { | |
12 | return [ | |
396f6f01 C |
13 | query('sort') |
14 | .optional() | |
15 | .isIn(sortableColumns), | |
9593a78a C |
16 | |
17 | (req: express.Request, res: express.Response, next: express.NextFunction) => { | |
a85d5303 | 18 | if (areValidationErrors(req, res, { tags })) return |
9593a78a C |
19 | |
20 | return next() | |
21 | } | |
22 | ] | |
23 | } | |
24 | ||
25 | function createSortableColumns (sortableColumns: string[]) { | |
26 | const sortableColumnDesc = sortableColumns.map(sortableColumn => '-' + sortableColumn) | |
27 | ||
28 | return sortableColumns.concat(sortableColumnDesc) | |
29 | } | |
5c39adb7 | 30 | |
87a0cac6 | 31 | const adminUsersSortValidator = checkSortFactory(SORTABLE_COLUMNS.ADMIN_USERS) |
9593a78a C |
32 | const accountsSortValidator = checkSortFactory(SORTABLE_COLUMNS.ACCOUNTS) |
33 | const jobsSortValidator = checkSortFactory(SORTABLE_COLUMNS.JOBS, [ 'jobs' ]) | |
34 | const abusesSortValidator = checkSortFactory(SORTABLE_COLUMNS.ABUSES) | |
35 | const videosSortValidator = checkSortFactory(SORTABLE_COLUMNS.VIDEOS) | |
36 | const videoImportsSortValidator = checkSortFactory(SORTABLE_COLUMNS.VIDEO_IMPORTS) | |
37 | const videosSearchSortValidator = checkSortFactory(SORTABLE_COLUMNS.VIDEOS_SEARCH) | |
38 | const videoChannelsSearchSortValidator = checkSortFactory(SORTABLE_COLUMNS.VIDEO_CHANNELS_SEARCH) | |
39 | const videoPlaylistsSearchSortValidator = checkSortFactory(SORTABLE_COLUMNS.VIDEO_PLAYLISTS_SEARCH) | |
40 | const videoCommentsValidator = checkSortFactory(SORTABLE_COLUMNS.VIDEO_COMMENTS) | |
41 | const videoCommentThreadsSortValidator = checkSortFactory(SORTABLE_COLUMNS.VIDEO_COMMENT_THREADS) | |
42 | const videoRatesSortValidator = checkSortFactory(SORTABLE_COLUMNS.VIDEO_RATES) | |
43 | const blacklistSortValidator = checkSortFactory(SORTABLE_COLUMNS.BLACKLISTS) | |
44 | const videoChannelsSortValidator = checkSortFactory(SORTABLE_COLUMNS.VIDEO_CHANNELS) | |
45 | const instanceFollowersSortValidator = checkSortFactory(SORTABLE_COLUMNS.INSTANCE_FOLLOWERS) | |
46 | const instanceFollowingSortValidator = checkSortFactory(SORTABLE_COLUMNS.INSTANCE_FOLLOWING) | |
47 | const userSubscriptionsSortValidator = checkSortFactory(SORTABLE_COLUMNS.USER_SUBSCRIPTIONS) | |
48 | const accountsBlocklistSortValidator = checkSortFactory(SORTABLE_COLUMNS.ACCOUNTS_BLOCKLIST) | |
49 | const serversBlocklistSortValidator = checkSortFactory(SORTABLE_COLUMNS.SERVERS_BLOCKLIST) | |
50 | const userNotificationsSortValidator = checkSortFactory(SORTABLE_COLUMNS.USER_NOTIFICATIONS) | |
51 | const videoPlaylistsSortValidator = checkSortFactory(SORTABLE_COLUMNS.VIDEO_PLAYLISTS) | |
52 | const pluginsSortValidator = checkSortFactory(SORTABLE_COLUMNS.PLUGINS) | |
53 | const availablePluginsSortValidator = checkSortFactory(SORTABLE_COLUMNS.AVAILABLE_PLUGINS) | |
54 | const videoRedundanciesSortValidator = checkSortFactory(SORTABLE_COLUMNS.VIDEO_REDUNDANCIES) | |
2a491182 | 55 | const videoChannelSyncsSortValidator = checkSortFactory(SORTABLE_COLUMNS.VIDEO_CHANNEL_SYNCS) |
55fa55a9 | 56 | |
4beda9e1 C |
57 | const accountsFollowersSortValidator = checkSortFactory(SORTABLE_COLUMNS.ACCOUNT_FOLLOWERS) |
58 | const videoChannelsFollowersSortValidator = checkSortFactory(SORTABLE_COLUMNS.CHANNEL_FOLLOWERS) | |
59 | ||
55fa55a9 C |
60 | // --------------------------------------------------------------------------- |
61 | ||
65fcc311 | 62 | export { |
87a0cac6 | 63 | adminUsersSortValidator, |
d95d1559 | 64 | abusesSortValidator, |
72c7248b | 65 | videoChannelsSortValidator, |
ed31c059 | 66 | videoImportsSortValidator, |
0f8d00e3 | 67 | videoCommentsValidator, |
57c36b27 | 68 | videosSearchSortValidator, |
792dbaf0 | 69 | videosSortValidator, |
7a7724e6 | 70 | blacklistSortValidator, |
265ba139 | 71 | accountsSortValidator, |
9593a78a C |
72 | instanceFollowersSortValidator, |
73 | instanceFollowingSortValidator, | |
bf1f6508 | 74 | jobsSortValidator, |
06a05d5f | 75 | videoCommentThreadsSortValidator, |
c100a614 | 76 | videoRatesSortValidator, |
f37dc0dd | 77 | userSubscriptionsSortValidator, |
6702a1b2 | 78 | availablePluginsSortValidator, |
7ad9b984 C |
79 | videoChannelsSearchSortValidator, |
80 | accountsBlocklistSortValidator, | |
cef534ed | 81 | serversBlocklistSortValidator, |
418d092a | 82 | userNotificationsSortValidator, |
ad91e700 | 83 | videoPlaylistsSortValidator, |
b764380a | 84 | videoRedundanciesSortValidator, |
37a44fc9 | 85 | videoPlaylistsSearchSortValidator, |
4beda9e1 C |
86 | accountsFollowersSortValidator, |
87 | videoChannelsFollowersSortValidator, | |
2a491182 | 88 | videoChannelSyncsSortValidator, |
ad91e700 | 89 | pluginsSortValidator |
65fcc311 | 90 | } |