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 // Helpers to run hooks
const Hooks = { const Hooks = {
wrapObject: <T, U extends ServerFilterHookName>(result: T, hookName: U) => { 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) => { 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 { try {
await this.registerPluginOrTheme(plugin) await this.registerPluginOrTheme(plugin)
} catch (err) { } 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 }) logger.error('Cannot register plugin %s, skipping.', plugin.name, { err })
} }
} }

View File

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