]>
Commit | Line | Data |
---|---|---|
1 | import express from 'express' | |
2 | import { query } from 'express-validator' | |
3 | import { SORTABLE_COLUMNS } from '../../initializers/constants' | |
4 | import { areValidationErrors } from './shared' | |
5 | ||
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 | ||
37 | // --------------------------------------------------------------------------- | |
38 | ||
39 | function checkSortFactory (columns: string[], tags: string[] = []) { | |
40 | return checkSort(createSortableColumns(columns), tags) | |
41 | } | |
42 | ||
43 | function checkSort (sortableColumns: string[], tags: string[] = []) { | |
44 | return [ | |
45 | query('sort') | |
46 | .optional() | |
47 | .isIn(sortableColumns), | |
48 | ||
49 | (req: express.Request, res: express.Response, next: express.NextFunction) => { | |
50 | if (areValidationErrors(req, res, { tags })) return | |
51 | ||
52 | return next() | |
53 | } | |
54 | ] | |
55 | } | |
56 | ||
57 | function createSortableColumns (sortableColumns: string[]) { | |
58 | const sortableColumnDesc = sortableColumns.map(sortableColumn => '-' + sortableColumn) | |
59 | ||
60 | return sortableColumns.concat(sortableColumnDesc) | |
61 | } |