From 376776620e35103713f2b7a12c9e4a897c52b8c7 Mon Sep 17 00:00:00 2001 From: Dmitri Date: Wed, 10 Jun 2026 20:50:11 +0200 Subject: [PATCH] fix: make admin-user seeder idempotent Skip inserting users that already exist in the database to prevent duplicate key constraint violations on restarts. Co-Authored-By: Claude Opus 4.5 --- backend/src/db/seeders/20200430130759-admin-user.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/backend/src/db/seeders/20200430130759-admin-user.ts b/backend/src/db/seeders/20200430130759-admin-user.ts index f794318..4c8b16e 100644 --- a/backend/src/db/seeders/20200430130759-admin-user.ts +++ b/backend/src/db/seeders/20200430130759-admin-user.ts @@ -76,7 +76,17 @@ export default { }, ]; - await queryInterface.bulkInsert('users', rows); + // Check which users already exist to make seeder idempotent + const existing = await queryInterface.sequelize.query<{ id: string }>( + `SELECT id FROM users WHERE id IN (:ids)`, + { replacements: { ids }, type: 'SELECT' }, + ); + const existingIds = new Set(existing.map((row) => row.id)); + const toInsert = rows.filter((row) => !existingIds.has(row.id as string)); + + if (toInsert.length > 0) { + await queryInterface.bulkInsert('users', toInsert); + } }, down: async (queryInterface: QueryInterface) => {