]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/lib/plugins/plugin-helpers.ts
Fix plugin storeData
[github/Chocobozzz/PeerTube.git] / server / lib / plugins / plugin-helpers.ts
1 import { PeerTubeHelpers } from '@server/typings/plugins'
2 import { sequelizeTypescript } from '@server/initializers/database'
3 import { buildLogger } from '@server/helpers/logger'
4 import { VideoModel } from '@server/models/video/video'
5 import { WEBSERVER } from '@server/initializers/constants'
6
7 function buildPluginHelpers (npmName: string): PeerTubeHelpers {
8 const logger = buildPluginLogger(npmName)
9
10 const database = buildDatabaseHelpers()
11 const videos = buildVideosHelpers()
12
13 const config = buildConfigHelpers()
14
15 return {
16 logger,
17 database,
18 videos,
19 config
20 }
21 }
22
23 export {
24 buildPluginHelpers
25 }
26
27 // ---------------------------------------------------------------------------
28
29 function buildPluginLogger (npmName: string) {
30 return buildLogger(npmName)
31 }
32
33 function buildDatabaseHelpers () {
34 return {
35 query: sequelizeTypescript.query.bind(sequelizeTypescript)
36 }
37 }
38
39 function buildVideosHelpers () {
40 return {
41 removeVideo: (id: number) => {
42 return sequelizeTypescript.transaction(async t => {
43 const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(id, t)
44
45 await video.destroy({ transaction: t })
46 })
47 }
48 }
49 }
50
51 function buildConfigHelpers () {
52 return {
53 getWebserverUrl () {
54 return WEBSERVER.URL
55 }
56 }
57 }