From c08ac86c5f844fae24ba6a371ac3dbb1a716b81a Mon Sep 17 00:00:00 2001 From: David Leek Date: Mon, 29 Jan 2024 15:14:44 +0100 Subject: [PATCH] chore: filter on token username and user id in SQL instead (#6061) ## About the changes Change the sorting of features to migrate created_by_user_id for, and filter out unresolvable feature/users Query tested manually in enterprise --- .../feature-toggle/feature-toggle-store.ts | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/lib/features/feature-toggle/feature-toggle-store.ts b/src/lib/features/feature-toggle/feature-toggle-store.ts index 980f0eb23b..452ac2ff0c 100644 --- a/src/lib/features/feature-toggle/feature-toggle-store.ts +++ b/src/lib/features/feature-toggle/feature-toggle-store.ts @@ -740,21 +740,21 @@ export default class FeatureToggleStore implements IFeatureToggleStore { `LEFT OUTER JOIN ${API_TOKEN_TABLE} AS t on ev.created_by = t.username`, ) .whereRaw( - `f.created_by_user_id IS null AND ev.type = 'feature-created'`, + `f.created_by_user_id IS null AND + ev.type = 'feature-created' AND + (u.id IS NOT null OR t.username IS NOT null)`, ) - .orderBy('f.created_at', 'asc') + .orderBy('f.created_at', 'desc') .limit(batchSize) .select(['f.*', 'ev.created_by', 'u.id', 't.username']); - const updatePromises = toUpdate - .filter((row) => row.id || row.username) - .map((row) => { - const id = row.id || ADMIN_TOKEN_USER.id; + const updatePromises = toUpdate.map((row) => { + const id = row.id || ADMIN_TOKEN_USER.id; - return this.db(TABLE) - .update({ created_by_user_id: id }) - .where({ name: row.name }); - }); + return this.db(TABLE) + .update({ created_by_user_id: id }) + .where({ name: row.name }); + }); await Promise.all(updatePromises); }