diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md
index f47c550875..deb2657c59 100644
--- a/plugins/scaffolder-backend/api-report.md
+++ b/plugins/scaffolder-backend/api-report.md
@@ -193,9 +193,7 @@ export const createTemplateAction: <
templateAction: TemplateAction,
) => TemplateAction;
-// Warning: (ae-missing-release-tag) "CreateWorkerOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
-//
-// @public (undocumented)
+// @public
export type CreateWorkerOptions = {
taskBroker: TaskBroker;
actionRegistry: TemplateActionRegistry;
@@ -206,7 +204,7 @@ export type CreateWorkerOptions = {
// @public
export class DatabaseTaskStore implements TaskStore {
- constructor(db: Knex);
+ constructor(options: DatabaseTaskStoreOptions);
// (undocumented)
claimTask(): Promise;
// (undocumented)
@@ -219,8 +217,10 @@ export class DatabaseTaskStore implements TaskStore {
status: Status;
eventBody: JsonObject;
}): Promise;
+ // Warning: (ae-forgotten-export) The symbol "DatabaseTaskStoreOptions" needs to be exported by the entry point index.d.ts
+ //
// (undocumented)
- static create(knex: Knex): Promise;
+ static create(options: DatabaseTaskStoreOptions): Promise;
// (undocumented)
createTask(
spec: TaskSpec,
diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts
index 3aec10d949..6783da674e 100644
--- a/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts
@@ -54,20 +54,35 @@ export type RawDbTaskEventRow = {
created_at: string;
};
+/**
+ * DatabaseTaskStore
+ *
+ * @public
+ */
+export type DatabaseTaskStoreOptions = {
+ database: Knex;
+};
+
/**
* DatabaseTaskStore
*
* @public
*/
export class DatabaseTaskStore implements TaskStore {
- static async create(knex: Knex): Promise {
- await knex.migrate.latest({
+ private readonly db: Knex;
+
+ static async create(
+ options: DatabaseTaskStoreOptions,
+ ): Promise {
+ await options.database.migrate.latest({
directory: migrationsDir,
});
- return new DatabaseTaskStore(knex);
+ return new DatabaseTaskStore(options);
}
- constructor(private readonly db: Knex) {}
+ constructor(options: DatabaseTaskStoreOptions) {
+ this.db = options.database;
+ }
async getTask(taskId: string): Promise {
const [result] = await this.db('tasks')
diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts
index 183253ea0e..c5d94c1324 100644
--- a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts
@@ -31,7 +31,9 @@ async function createStore(): Promise {
},
}),
).forPlugin('scaffolder');
- return await DatabaseTaskStore.create(await manager.getClient());
+ return await DatabaseTaskStore.create({
+ database: await manager.getClient(),
+ });
}
describe('StorageTaskBroker', () => {
diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.test.ts
index 87a0229b5d..f6b332b6d3 100644
--- a/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.test.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.test.ts
@@ -33,7 +33,9 @@ async function createStore(): Promise {
},
}),
).forPlugin('scaffolder');
- return await DatabaseTaskStore.create(await manager.getClient());
+ return await DatabaseTaskStore.create({
+ database: await manager.getClient(),
+ });
}
describe('TaskWorker', () => {
diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/index.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/index.ts
index ada12df476..13831ca1bb 100644
--- a/plugins/scaffolder-backend/src/scaffolder/tasks/index.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/tasks/index.ts
@@ -13,8 +13,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
export { DatabaseTaskStore } from './DatabaseTaskStore';
+export type { DatabaseTaskStoreOptions } from './DatabaseTaskStore';
export { StorageTaskBroker, TaskAgent } from './StorageTaskBroker';
export type { TaskState } from './StorageTaskBroker';
export { TaskWorker } from './TaskWorker';
diff --git a/plugins/scaffolder-backend/src/service/router.ts b/plugins/scaffolder-backend/src/service/router.ts
index d4d4dd0486..0bc00a2778 100644
--- a/plugins/scaffolder-backend/src/service/router.ts
+++ b/plugins/scaffolder-backend/src/service/router.ts
@@ -92,9 +92,9 @@ export async function createRouter(
const entityClient = new CatalogEntityClient(catalogClient);
const integrations = ScmIntegrations.fromConfig(config);
- const databaseTaskStore = await DatabaseTaskStore.create(
- await database.getClient(),
- );
+ const databaseTaskStore = await DatabaseTaskStore.create({
+ database: await database.getClient(),
+ });
const taskBroker =
options.taskBroker || new StorageTaskBroker(databaseTaskStore, logger);
const actionRegistry = new TemplateActionRegistry();