// ---------------------------------------------------------------------------
-const LAST_MIGRATION_VERSION = 400
+const LAST_MIGRATION_VERSION = 405
// ---------------------------------------------------------------------------
--- /dev/null
+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
+}
// 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) => {
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 })
}
}
path: getPluginTestPath()
})
- await killallServers([ servers[0] ])
+ killallServers([ servers[0] ])
await reRunServer(servers[0])
})
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)