Add plugin table migration table

This commit is contained in:
Chocobozzz 2019-07-22 11:18:22 +02:00 committed by Chocobozzz
parent 6691c52280
commit 587568e1cc
6 changed files with 51 additions and 4 deletions

View File

@ -14,7 +14,7 @@ import { CONFIG, registerConfigChangedHandler } from './config'
// ---------------------------------------------------------------------------
const LAST_MIGRATION_VERSION = 400
const LAST_MIGRATION_VERSION = 405
// ---------------------------------------------------------------------------

View File

@ -0,0 +1,40 @@
import * as Sequelize from 'sequelize'
async function up (utils: {
transaction: Sequelize.Transaction,
queryInterface: Sequelize.QueryInterface,
sequelize: Sequelize.Sequelize,
db: any
}): Promise<void> {
{
const query = `
CREATE TABLE IF NOT EXISTS "plugin"
(
"id" SERIAL,
"name" VARCHAR(255) NOT NULL,
"type" INTEGER NOT NULL,
"version" VARCHAR(255) NOT NULL,
"latestVersion" VARCHAR(255),
"enabled" BOOLEAN NOT NULL,
"uninstalled" BOOLEAN NOT NULL,
"peertubeEngine" VARCHAR(255) NOT NULL,
"description" VARCHAR(255),
"homepage" VARCHAR(255) NOT NULL,
"settings" JSONB,
"storage" JSONB,
"createdAt" TIMESTAMP WITH TIME ZONE NOT NULL,
"updatedAt" TIMESTAMP WITH TIME ZONE NOT NULL,
PRIMARY KEY ("id")
);`
await utils.sequelize.query(query)
}
}
function down (options) {
throw new Error('Not implemented.')
}
export {
up,
down
}

View File

@ -9,7 +9,7 @@ type RawFunction <U, T> = (params: U) => T
// Helpers to run hooks
const Hooks = {
wrapObject: <T, U extends ServerFilterHookName>(result: T, hookName: U) => {
return PluginManager.Instance.runHook(hookName, result) as Promise<T>
return PluginManager.Instance.runHook(hookName, result)
},
wrapPromiseFun: async <U, T, V extends ServerFilterHookName>(fun: PromiseFunction<U, T>, params: U, hookName: V) => {

View File

@ -125,6 +125,13 @@ export class PluginManager implements ServerHook {
try {
await this.registerPluginOrTheme(plugin)
} catch (err) {
// Try to unregister the plugin
try {
await this.unregister(PluginModel.buildNpmName(plugin.name, plugin.type))
} catch {
// we don't care if we cannot unregister it
}
logger.error('Cannot register plugin %s, skipping.', plugin.name, { err })
}
}

View File

@ -43,7 +43,7 @@ describe('Test plugin action hooks', function () {
path: getPluginTestPath()
})
await killallServers([ servers[0] ])
killallServers([ servers[0] ])
await reRunServer(servers[0])
})

View File

@ -8,7 +8,7 @@ function getHookType (hookName: string) {
return HookType.STATIC
}
async function internalRunHook <T>(handler: Function, hookType: HookType, result: T, params: any, onError: (err: Error) => void) {
async function internalRunHook <T> (handler: Function, hookType: HookType, result: T, params: any, onError: (err: Error) => void) {
try {
if (hookType === HookType.FILTER) {
const p = handler(result, params)