backstage-plugin-confluence
backstage-plugin-confluence copied to clipboard
New Backend Compatibility
Doesn't seem to be working.
{
"error": {
"name": "InputError",
"message": "Invalid query string: [\n {\n \"code\": \"custom\",\n \"message\": \"Invalid input\",\n \"path\": [\n \"types\",\n 0\n ]\n }\n]",
"stack": "InputError: Invalid query string: [\n {\n \"code\": \"custom\",\n \"message\": \"Invalid input\",\n \"path\": [\n \"types\",\n 0\n ]\n }\n]\n at <anonymous> (/mnt/c/Users/u1175114/Gitlab-tstenv/backstage_poc/backstage/node_modules/@backstage/plugin-search-backend/src/service/router.ts:182:13)\n at handleReturn (/mnt/c/Users/u1175114/Gitlab-tstenv/backstage_poc/backstage/node_modules/express-promise-router/lib/express-promise-router.js:24:23)\n at /mnt/c/Users/u1175114/Gitlab-tstenv/backstage_poc/backstage/node_modules/express-promise-router/lib/express-promise-router.js:64:7\n at handleReturn (/mnt/c/Users/u1175114/Gitlab-tstenv/backstage_poc/backstage/node_modules/express-promise-router/lib/express-promise-router.js:24:23)\n at /mnt/c/Users/u1175114/Gitlab-tstenv/backstage_poc/backstage/node_modules/express-promise-router/lib/express-promise-router.js:64:7\n at Layer.handle [as handle_request] (/mnt/c/Users/u1175114/Gitlab-tstenv/backstage_poc/backstage/node_modules/express/lib/router/layer.js:95:5)\n at next (/mnt/c/Users/u1175114/Gitlab-tstenv/backstage_poc/backstage/node_modules/express/lib/router/route.js:149:13)\n at Route.dispatch (/mnt/c/Users/u1175114/Gitlab-tstenv/backstage_poc/backstage/node_modules/express/lib/router/route.js:119:3)\n at Layer.handle [as handle_request] (/mnt/c/Users/u1175114/Gitlab-tstenv/backstage_poc/backstage/node_modules/express/lib/router/layer.js:95:5)\n at /mnt/c/Users/u1175114/Gitlab-tstenv/backstage_poc/backstage/node_modules/express/lib/router/index.js:284:15\n at Function.process_params (/mnt/c/Users/u1175114/Gitlab-tstenv/backstage_poc/backstage/node_modules/express/lib/router/index.js:346:12)\n at next (/mnt/c/Users/u1175114/Gitlab-tstenv/backstage_poc/backstage/node_modules/express/lib/router/index.js:280:10)\n at Layer.handle [as handle_request] (/mnt/c/Users/u1175114/Gitlab-tstenv/backstage_poc/backstage/node_modules/express/lib/router/layer.js:91:12)\n at trim_prefix (/mnt/c/Users/u1175114/Gitlab-tstenv/backstage_poc/backstage/node_modules/express/lib/router/index.js:328:13)\n at /mnt/c/Users/u1175114/Gitlab-tstenv/backstage_poc/backstage/node_modules/express/lib/router/index.js:286:9\n at Function.process_params (/mnt/c/Users/u1175114/Gitlab-tstenv/backstage_poc/backstage/node_modules/express/lib/router/index.js:346:12)"
},
"request": {
"method": "GET",
"url": "/query?term=Backstage&types%5B0%5D=confluence"
},
"response": {
"statusCode": 400
}
}
Since it may be a while before any PRs get accepted, you can use the existing plugin with the new backend like this (in packages/backend/src/index.ts):
import { legacyPlugin, loggerToWinstonLogger } from '@backstage/backend-common';
import { createBackend } from '@backstage/backend-defaults';
import { coreServices, createBackendModule } from '@backstage/backend-plugin-api';
import { searchIndexRegistryExtensionPoint } from '@backstage/plugin-search-backend-node/alpha';
import { ConfluenceCollatorFactory } from '@k-phoen/backstage-plugin-confluence-backend';
...
const backend = createBackend();
...
backend.add(import('@backstage/plugin-search-backend/alpha'));
//backend.add(import('@backstage/plugin-search-backend-module-pg/alpha')); // if using pgsql search
backend.add(import('@backstage/plugin-search-backend-module-catalog/alpha'));
...
// Add Confluence collator to the search backend
backend.add(
createBackendModule({
pluginId: 'search',
moduleId: 'confluence-collator',
register(env) {
env.registerInit({
deps: {
config: coreServices.rootConfig,
logger: coreServices.logger,
discovery: coreServices.discovery,
scheduler: coreServices.scheduler,
indexRegistry: searchIndexRegistryExtensionPoint,
},
async init({ config, logger, scheduler, indexRegistry }) {
const defaultSchedule = scheduler.createScheduledTaskRunner({
frequency: { days: 1 },
timeout: { minutes: 15 },
initialDelay: { seconds: 3 },
});
indexRegistry.addCollator({
schedule: defaultSchedule,
factory: ConfluenceCollatorFactory.fromConfig(config, {
logger: loggerToWinstonLogger(logger),
}),
});
},
});
},
})
);
This worked
#193 Mentioning here because this is critical