From 70c345df29690c605158a26d60ab2a6bbcfc57c4 Mon Sep 17 00:00:00 2001 From: Eric Peterson Date: Fri, 21 May 2021 17:25:26 +0200 Subject: [PATCH] Updating create-app so that cache store can be selected/configured. Signed-off-by: Eric Peterson --- packages/create-app/src/createApp.ts | 9 +++++++++ .../create-app/templates/default-app/app-config.yaml.hbs | 9 +++++++++ .../templates/default-app/packages/backend/src/index.ts | 5 ++++- .../templates/default-app/packages/backend/src/types.ts | 2 ++ 4 files changed, 24 insertions(+), 1 deletion(-) diff --git a/packages/create-app/src/createApp.ts b/packages/create-app/src/createApp.ts index 8a269416a3..e5bf323399 100644 --- a/packages/create-app/src/createApp.ts +++ b/packages/create-app/src/createApp.ts @@ -112,10 +112,19 @@ export default async (cmd: Command): Promise => { // @ts-ignore choices: ['SQLite', 'PostgreSQL'], }, + { + type: 'list', + name: 'cacheType', + message: chalk.blue('Select cache store for the backend [required]'), + // @ts-ignore + choices: ['in-memory', 'memcache'], + }, ]; const answers: Answers = await inquirer.prompt(questions); answers.dbTypePG = answers.dbType === 'PostgreSQL'; answers.dbTypeSqlite = answers.dbType === 'SQLite'; + answers.cacheTypeMemory = answers.cacheType === 'in-memory'; + answers.cacheTypeMemcache = answers.cacheType === 'memcache'; const templateDir = paths.resolveOwn('templates/default-app'); const tempDir = resolvePath(os.tmpdir(), answers.name); diff --git a/packages/create-app/templates/default-app/app-config.yaml.hbs b/packages/create-app/templates/default-app/app-config.yaml.hbs index 275b3865f9..7a8eb8f13c 100644 --- a/packages/create-app/templates/default-app/app-config.yaml.hbs +++ b/packages/create-app/templates/default-app/app-config.yaml.hbs @@ -34,6 +34,15 @@ backend: #ca: # if you have a CA file and want to verify it you can uncomment this section # $file: /ca/server.crt {{/if}} + {{#if cacheTypeMemory}} + cache: + store: memory + {{/if}} + {{#if cacheTypeMemcache}} + cache: + store: memcache + connection: ${MEMCACHE_USER}:${MEMCACHE_PASSWORD}@${MEMCACHE_HOST}:$MEMCACHE_PORT} + {{/if}} # workingDirectory: /tmp # Use this to configure a working directory for the scaffolder, defaults to the OS temp-dir integrations: diff --git a/packages/create-app/templates/default-app/packages/backend/src/index.ts b/packages/create-app/templates/default-app/packages/backend/src/index.ts index 80dc6230a6..aebd034aae 100644 --- a/packages/create-app/templates/default-app/packages/backend/src/index.ts +++ b/packages/create-app/templates/default-app/packages/backend/src/index.ts @@ -13,6 +13,7 @@ import { getRootLogger, useHotMemoize, notFoundHandler, + CacheManager, SingleConnectionDatabaseManager, SingleHostDiscovery, UrlReaders, @@ -34,11 +35,13 @@ function makeCreateEnv(config: Config) { root.info(`Created UrlReader ${reader}`); const databaseManager = SingleConnectionDatabaseManager.fromConfig(config); + const cacheManager = CacheManager.fromConfig(config); return (plugin: string): PluginEnvironment => { const logger = root.child({ type: 'plugin', plugin }); const database = databaseManager.forPlugin(plugin); - return { logger, database, config, reader, discovery }; + const cache = cacheManager.forPlugin(plugin); + return { logger, database, cache, config, reader, discovery }; }; } diff --git a/packages/create-app/templates/default-app/packages/backend/src/types.ts b/packages/create-app/templates/default-app/packages/backend/src/types.ts index 757a0e5acf..e5bfff2e1f 100644 --- a/packages/create-app/templates/default-app/packages/backend/src/types.ts +++ b/packages/create-app/templates/default-app/packages/backend/src/types.ts @@ -1,6 +1,7 @@ import { Logger } from 'winston'; import { Config } from '@backstage/config'; import { + PluginCacheManager, PluginDatabaseManager, PluginEndpointDiscovery, UrlReader, @@ -9,6 +10,7 @@ import { export type PluginEnvironment = { logger: Logger; database: PluginDatabaseManager; + cache: PluginCacheManager; config: Config; reader: UrlReader discovery: PluginEndpointDiscovery;