]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/lib/plugins/plugin-helpers.ts
Add config helper for plugins
[github/Chocobozzz/PeerTube.git] / server / lib / plugins / plugin-helpers.ts
CommitLineData
bc0d801b 1import { PeerTubeHelpers } from '@server/typings/plugins'
1b05d82d
C
2import { sequelizeTypescript } from '@server/initializers/database'
3import { buildLogger } from '@server/helpers/logger'
ab3ead3a 4import { VideoModel } from '@server/models/video/video'
5a7eecdd 5import { WEBSERVER } from '@server/initializers/constants'
bc0d801b 6
1b05d82d
C
7function buildPluginHelpers (npmName: string): PeerTubeHelpers {
8 const logger = buildPluginLogger(npmName)
9
10 const database = buildDatabaseHelpers()
ab3ead3a 11 const videos = buildVideosHelpers()
bc0d801b 12
5a7eecdd
C
13 const config = buildConfigHelpers()
14
bc0d801b 15 return {
1b05d82d 16 logger,
ab3ead3a 17 database,
5a7eecdd
C
18 videos,
19 config
bc0d801b
C
20 }
21}
22
23export {
24 buildPluginHelpers
25}
26
27// ---------------------------------------------------------------------------
28
1b05d82d 29function buildPluginLogger (npmName: string) {
bc0d801b
C
30 return buildLogger(npmName)
31}
1b05d82d
C
32
33function buildDatabaseHelpers () {
34 return {
35 query: sequelizeTypescript.query.bind(sequelizeTypescript)
36 }
37}
ab3ead3a
C
38
39function 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}
5a7eecdd
C
50
51function buildConfigHelpers () {
52 return {
53 getWebserverUrl () {
54 return WEBSERVER.URL
55 }
56 }
57}