@dweber019/backstage-plugin-accentuate-backend
TypeScript icon, indicating that this package has built-in type declarations

0.0.4 • Public • Published

Accentuate backend plugin

The accentuate backend plugin merges data stored in the database with the ingested entities mostly ingested from SCM.

Additionally, the plugin will provide an API to manage the data for the accentuate frontend plugin.

Install

Setup plugin

First we need to add the @dweber019/backstage-plugin-accentuate-backend package:

# From your Backstage root directory
yarn add --cwd packages/backend @dweber019/backstage-plugin-accentuate-backend

Then we open the file named packages/backend/src/plugins/catalog.ts, and extend it with:

import { AccentuateEntitiesProcessor } from '@dweber019/backstage-plugin-accentuate-backend';

export default async function createPlugin(
  env: PluginEnvironment,
  envAccentuate: PluginEnvironment, // required that the correct database is used in AccentuateEntitiesProcessor
): Promise<Router> {
  const builder = await CatalogBuilder.create(env);

  builder.addProcessor(
    await AccentuateEntitiesProcessor.fromEnv(envAccentuate),
  );

  const { processingEngine, router } = await builder.build();
  // ..
}

Then create a file at packages/backend/src/plugins/accentuate.ts with

import { createRouter } from '@dweber019/backstage-plugin-accentuate-backend';
import { Router } from 'express';
import { PluginEnvironment } from '../types';

export default async function createPlugin(
  env: PluginEnvironment,
): Promise<Router> {
  return await createRouter({
    logger: env.logger,
    database: env.database,
    identity: env.identity,
  });
}

Next we wire this into the overall backend router, edit packages/backend/src/index.ts:

import accentuate from './plugins/accentuate';
// ...
async function main() {
  // ...
  // Add this line under the other lines that follow the useHotMemoize pattern
  const accentuateEnv = useHotMemoize(module, () => createEnv('accentuate'));
  // ...
  // Extend the catalog to provide the accentuateEnv
  apiRouter.use('/catalog', await catalog(catalogEnv, accentuateEnv));
  // Insert this line under the other lines that add their routers to apiRouter in the same way
  apiRouter.use('/accentuate', await accentuate(accentuateEnv));

New Backend System

The backend plugin has support for the new backend system, here's how you can set that up:

In your packages/backend/src/index.ts make the following changes:

import {
  accentuatePlugin,
  catalogModuleAccentuateProcessor,
} from '@dweber019/backstage-plugin-accentuate-backend';
const backend = createBackend();

backend.add(accentuatePlugin);
backend.add(catalogModuleAccentuateProcessor);

// ... other feature additions

backend.start();

This was not tested and is here for reference

Readme

Keywords

none

Package Sidebar

Install

npm i @dweber019/backstage-plugin-accentuate-backend

Weekly Downloads

24

Version

0.0.4

License

MIT

Unpacked Size

40 kB

Total Files

7

Last publish

Collaborators

  • dweber019