K-Phoen / backstage-plugin-confluence

Confluence plugins for backstage
MIT License
52 stars 15 forks source link

New Backend Compatibility #192

Open stevenmchaves opened 2 months ago

stevenmchaves commented 2 months ago

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
  }
}
jwillaz commented 2 months ago

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),
                        }),
                    });
                },
            });
        },
    })
);
riginoommen commented 1 month ago

This worked

riginoommen commented 1 month ago

193 Mentioning here because this is critical