()
| 243 | } |
| 244 | |
| 245 | async function seedDevMemberships(): Promise<void> { |
| 246 | const pool = getPool(); |
| 247 | const memberships = [ |
| 248 | // Admin user in their default org |
| 249 | { userId: 'user_dev_admin_001', orgId: 'org_dev_company_001', membershipId: 'mem_dev_admin_001', email: 'admin@test.local', firstName: 'Admin', lastName: 'Tester', role: 'owner' }, |
| 250 | // Admin user in IPG hierarchy org |
| 251 | { userId: 'user_dev_admin_001', orgId: 'org_dev_ipg_um', membershipId: 'mem_dev_admin_ipg', email: 'admin@test.local', firstName: 'Admin', lastName: 'Tester', role: 'owner' }, |
| 252 | // Member user |
| 253 | { userId: 'user_dev_member_001', orgId: 'org_dev_company_001', membershipId: 'mem_dev_member_001', email: 'member@test.local', firstName: 'Member', lastName: 'User', role: 'member' }, |
| 254 | // Builder user (paid tier org) |
| 255 | { userId: 'user_dev_builder_001', orgId: 'org_dev_builder_001', membershipId: 'mem_dev_builder_001', email: 'builder@test.local', firstName: 'Builder', lastName: 'Member', role: 'owner' }, |
| 256 | // Extra team members for the builder org (to show team dynamics) |
| 257 | { userId: 'user_dev_learner_001', orgId: 'org_dev_builder_001', membershipId: 'mem_dev_learner1_builder', email: 'learner1@test.local', firstName: 'Learner', lastName: 'One', role: 'member' }, |
| 258 | { userId: 'user_dev_learner_002', orgId: 'org_dev_builder_001', membershipId: 'mem_dev_learner2_builder', email: 'learner2@test.local', firstName: 'Learner', lastName: 'Two', role: 'member' }, |
| 259 | ]; |
| 260 | |
| 261 | for (const m of memberships) { |
| 262 | try { |
| 263 | await pool.query( |
| 264 | `INSERT INTO organization_memberships (workos_user_id, workos_organization_id, workos_membership_id, email, first_name, last_name, role, seat_type) |
| 265 | VALUES ($1, $2, $3, $4, $5, $6, $7, 'contributor') |
| 266 | ON CONFLICT (workos_user_id, workos_organization_id) DO NOTHING`, |
| 267 | [m.userId, m.orgId, m.membershipId, m.email, m.firstName, m.lastName, m.role] |
| 268 | ); |
| 269 | } catch (error) { |
| 270 | logger.debug({ userId: m.userId, orgId: m.orgId }, 'Dev membership seed skipped'); |
| 271 | } |
| 272 | } |
| 273 | logger.info('Seeded dev organization memberships'); |
| 274 | } |
no test coverage detected