]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/helpers/query.ts
Refactor search query options
[github/Chocobozzz/PeerTube.git] / server / helpers / query.ts
diff --git a/server/helpers/query.ts b/server/helpers/query.ts
new file mode 100644 (file)
index 0000000..e711b15
--- /dev/null
@@ -0,0 +1,74 @@
+import { pick } from '@shared/core-utils'
+import {
+  VideoChannelsSearchQueryAfterSanitize,
+  VideoPlaylistsSearchQueryAfterSanitize,
+  VideosCommonQueryAfterSanitize,
+  VideosSearchQueryAfterSanitize
+} from '@shared/models'
+
+function pickCommonVideoQuery (query: VideosCommonQueryAfterSanitize) {
+  return pick(query, [
+    'start',
+    'count',
+    'sort',
+    'nsfw',
+    'isLive',
+    'categoryOneOf',
+    'licenceOneOf',
+    'languageOneOf',
+    'tagsOneOf',
+    'tagsAllOf',
+    'filter',
+    'skipCount'
+  ])
+}
+
+function pickSearchVideoQuery (query: VideosSearchQueryAfterSanitize) {
+  return {
+    ...pickCommonVideoQuery(query),
+
+    ...pick(query, [
+      'searchTarget',
+      'search',
+      'host',
+      'startDate',
+      'endDate',
+      'originallyPublishedStartDate',
+      'originallyPublishedEndDate',
+      'durationMin',
+      'durationMax',
+      'uuids'
+    ])
+  }
+}
+
+function pickSearchChannelQuery (query: VideoChannelsSearchQueryAfterSanitize) {
+  return pick(query, [
+    'searchTarget',
+    'search',
+    'start',
+    'count',
+    'sort',
+    'host',
+    'handles'
+  ])
+}
+
+function pickSearchPlaylistQuery (query: VideoPlaylistsSearchQueryAfterSanitize) {
+  return pick(query, [
+    'searchTarget',
+    'search',
+    'start',
+    'count',
+    'sort',
+    'host',
+    'uuids'
+  ])
+}
+
+export {
+  pickCommonVideoQuery,
+  pickSearchVideoQuery,
+  pickSearchPlaylistQuery,
+  pickSearchChannelQuery
+}