diff --git a/attached_assets/image_1754941674961.png b/attached_assets/image_1754941674961.png new file mode 100644 index 0000000..e9523ad Binary files /dev/null and b/attached_assets/image_1754941674961.png differ diff --git a/server/storage.ts b/server/storage.ts index afeccaa..96f244a 100644 --- a/server/storage.ts +++ b/server/storage.ts @@ -694,15 +694,23 @@ export class DatabaseStorage implements IStorage { const [newUserGroup] = await db.insert(userGroups).values(userGroup).returning(); return newUserGroup; } catch (error: any) { - // If created_at column doesn't exist (production), insert without it + // If created_at column doesn't exist (production), use raw SQL if (error?.code === '42703' && error?.message?.includes('created_at')) { - console.log('⚠️ Production mode: user_groups table missing created_at column, inserting without it'); - const userGroupWithoutCreatedAt = { + console.log('⚠️ Production mode: user_groups table missing created_at column, using raw SQL'); + + // Use raw SQL to insert without created_at column + await db.execute(sql` + INSERT INTO user_groups (user_id, group_id) + VALUES (${userGroup.userId}, ${userGroup.groupId}) + ON CONFLICT DO NOTHING + `); + + // Return a UserGroup object with null created_at + return { userId: userGroup.userId, - groupId: userGroup.groupId + groupId: userGroup.groupId, + createdAt: null }; - const [newUserGroup] = await db.insert(userGroups).values(userGroupWithoutCreatedAt).returning(); - return { ...newUserGroup, createdAt: null }; } throw error; } diff --git a/test-user-groups.js b/test-user-groups.js new file mode 100644 index 0000000..228816c --- /dev/null +++ b/test-user-groups.js @@ -0,0 +1,36 @@ +// Test script pour vérifier l'attribution des groupes en production +// À exécuter avec: node test-user-groups.js + +import { storage } from './server/storage.js'; + +async function testUserGroups() { + try { + console.log('🧪 Test d\'attribution des groupes...'); + + // Test data + const testUserGroup = { + userId: 'test_user_123', + groupId: 1 + }; + + console.log('📝 Tentative d\'attribution du groupe:', testUserGroup); + + const result = await storage.assignUserToGroup(testUserGroup); + + console.log('✅ Attribution réussie:', result); + console.log('🎉 Le problème d\'attribution des groupes est résolu !'); + + } catch (error) { + console.error('❌ Erreur lors du test:', error); + console.error('Code d\'erreur:', error?.code); + console.error('Message:', error?.message); + } +} + +if (process.env.NODE_ENV === 'production') { + console.log('🏭 Exécution en mode production'); + testUserGroups(); +} else { + console.log('🛠️ Ce test est conçu pour la production'); + console.log('Pour tester localement, définissez NODE_ENV=production'); +} \ No newline at end of file