diff --git a/.eslintrc.js b/.eslintrc.js index 2df965ab73..01cad187be 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -23,8 +23,11 @@ module.exports = { 'notice/notice': [ 'error', { - // eslint-disable-next-line no-restricted-syntax - templateFile: path.resolve(__dirname, './scripts/copyright-header.txt'), + templateFile: path.resolve( + // eslint-disable-next-line no-restricted-syntax + __dirname, + './scripts/templates/copyright-header.txt' + ), onNonMatchingHeader: 'replace', }, ], diff --git a/.prettierignore b/.prettierignore index c561036ebb..3a16bd1388 100644 --- a/.prettierignore +++ b/.prettierignore @@ -11,6 +11,7 @@ cli-report.md plugins/scaffolder-backend/sample-templates .vscode dist-types +.eslintrc.js # reduce the barrier for adopters to add themselves ADOPTERS.md diff --git a/plugins/catalog-backend-module-incremental-ingestion/knexfile.js b/knexfile.js similarity index 52% rename from plugins/catalog-backend-module-incremental-ingestion/knexfile.js rename to knexfile.js index 4cf9ef77c3..d7c91e0348 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/knexfile.js +++ b/knexfile.js @@ -1,5 +1,5 @@ /* - * Copyright 2021 The Backstage Authors + * Copyright 2024 The Backstage Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,13 +14,26 @@ * limitations under the License. */ -// This file makes it possible to run "yarn knex migrate:make some_file_name" -// to assist in making new migrations +// To create a new migration in a plugin, run: +// +// yarn workspace knex migrate:make +// +// for example: +// +// yarn workspace @backstage/plugin-catalog-backend knex migrate:make add_feature_foo +// +// This creates a file similar to +// +// plugins/catalog-backend/migrations/20240206160252_add_feature_foo.js + module.exports = { client: 'better-sqlite3', connection: ':memory:', useNullAsDefault: true, migrations: { - directory: './migrations', + // unfortunately this needs to be relative to the TARGET, not this file, and + // it just so happens to work to make it go up two steps due to our repo + // layout + stub: '../../scripts/templates/knex-migration.stub.js', }, }; diff --git a/packages/backend/knexfile.ts b/packages/backend/knexfile.ts deleted file mode 100644 index 93993c1d5c..0000000000 --- a/packages/backend/knexfile.ts +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -module.exports = { - development: { - client: 'better-sqlite3', - connection: { - filename: './dev.sqlite3', - }, - }, - - /* - staging: { - client: 'postgresql', - connection: { - database: 'my_db', - user: 'username', - password: 'password', - }, - pool: { - min: 2, - max: 10, - }, - migrations: { - tableName: 'knex_migrations', - }, - }, - - production: { - client: 'postgresql', - connection: { - database: 'my_db', - user: 'username', - password: 'password', - }, - pool: { - min: 2, - max: 10, - }, - migrations: { - tableName: 'knex_migrations', - }, - }, - */ -}; diff --git a/plugins/catalog-backend/knexfile.js b/plugins/catalog-backend/knexfile.js deleted file mode 100644 index 4cf9ef77c3..0000000000 --- a/plugins/catalog-backend/knexfile.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright 2021 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// This file makes it possible to run "yarn knex migrate:make some_file_name" -// to assist in making new migrations -module.exports = { - client: 'better-sqlite3', - connection: ':memory:', - useNullAsDefault: true, - migrations: { - directory: './migrations', - }, -}; diff --git a/scripts/copyright-header.txt b/scripts/templates/copyright-header.txt similarity index 100% rename from scripts/copyright-header.txt rename to scripts/templates/copyright-header.txt diff --git a/plugins/bazaar-backend/knexfile.js b/scripts/templates/knex-migration.stub.js similarity index 62% rename from plugins/bazaar-backend/knexfile.js rename to scripts/templates/knex-migration.stub.js index c05af246c5..abed7526cd 100644 --- a/plugins/bazaar-backend/knexfile.js +++ b/scripts/templates/knex-migration.stub.js @@ -1,5 +1,5 @@ /* - * Copyright 2022 The Backstage Authors + * Copyright 2024 The Backstage Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,15 +14,20 @@ * limitations under the License. */ -// Update with your config settings. +// @ts-check -// This file makes it possible to run "yarn knex migrate:make some_file_name" -// to assist in making new migrations -module.exports = { - client: 'better-sqlite3', - connection: ':memory:', - useNullAsDefault: true, - migrations: { - directory: './migrations', - }, +/** + * @param { import("knex").Knex } knex + * @returns { Promise } + */ +exports.up = async function up(knex) { + // await knex.schema... +}; + +/** + * @param { import("knex").Knex } knex + * @returns { Promise } + */ +exports.down = async function down(knex) { + // await knex.schema... };