import { ilike, inArray, or } from 'drizzle-orm'; import { db } from '../src/db'; import { permissions, rolePermissions, users } from '../src/db/schema/auth'; import { media } from '../src/db/schema/media'; import { aclRules, resources } from '../src/db/schema/resource'; import { cleanupMediaRecord } from './helpers/media-cleanup'; async function cleanupTestArtifacts() { const mediaRows = await db.select({ id: media.id }).from(media).where(or( ilike(media.filename, 'e2e-%'), ilike(media.filename, 'media-status-%'), ilike(media.filename, 'media-list-%'), ilike(media.filename, 'permission-test%'), )); for (const row of mediaRows) { await cleanupMediaRecord(row.id); } const resourceRows = await db.select({ id: resources.id }).from(resources).where(or( ilike(resources.path, '/permission-admin/%'), ilike(resources.path, '/media-status/%'), ilike(resources.path, '/media-list/%'), )); const resourceIds = resourceRows.map((row) => row.id); if (resourceIds.length > 0) { await db.delete(aclRules).where(inArray(aclRules.resourceId, resourceIds)); await db.delete(resources).where(inArray(resources.id, resourceIds)); } const permissionRows = await db .select({ id: permissions.id }) .from(permissions) .where(ilike(permissions.action, 'read-1%')); const permissionIds = permissionRows.map((row) => row.id); if (permissionIds.length > 0) { await db.delete(rolePermissions).where(inArray(rolePermissions.permissionId, permissionIds)); await db.delete(permissions).where(inArray(permissions.id, permissionIds)); } const userRows = await db .select({ id: users.id }) .from(users) .where(ilike(users.email, 'admin-flow-%@ekb.com')); const userIds = userRows.map((row) => row.id); if (userIds.length > 0) { await db.delete(users).where(inArray(users.id, userIds)); } console.log('Cleaned test artifacts:', { media: mediaRows.length, resources: resourceRows.length, permissions: permissionRows.length, users: userRows.length, }); } cleanupTestArtifacts().catch((error) => { console.error('Failed to clean test artifacts:', error); process.exit(1); });