cleanup-test-artifacts.ts 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import { ilike, inArray, or } from 'drizzle-orm';
  2. import { db } from '../src/db';
  3. import { permissions, rolePermissions, users } from '../src/db/schema/auth';
  4. import { media } from '../src/db/schema/media';
  5. import { aclRules, resources } from '../src/db/schema/resource';
  6. import { cleanupMediaRecord } from './helpers/media-cleanup';
  7. async function cleanupTestArtifacts() {
  8. const mediaRows = await db.select({ id: media.id }).from(media).where(or(
  9. ilike(media.filename, 'e2e-%'),
  10. ilike(media.filename, 'media-status-%'),
  11. ilike(media.filename, 'media-list-%'),
  12. ilike(media.filename, 'permission-test%'),
  13. ));
  14. for (const row of mediaRows) {
  15. await cleanupMediaRecord(row.id);
  16. }
  17. const resourceRows = await db.select({ id: resources.id }).from(resources).where(or(
  18. ilike(resources.path, '/permission-admin/%'),
  19. ilike(resources.path, '/media-status/%'),
  20. ilike(resources.path, '/media-list/%'),
  21. ));
  22. const resourceIds = resourceRows.map((row) => row.id);
  23. if (resourceIds.length > 0) {
  24. await db.delete(aclRules).where(inArray(aclRules.resourceId, resourceIds));
  25. await db.delete(resources).where(inArray(resources.id, resourceIds));
  26. }
  27. const permissionRows = await db
  28. .select({ id: permissions.id })
  29. .from(permissions)
  30. .where(ilike(permissions.action, 'read-1%'));
  31. const permissionIds = permissionRows.map((row) => row.id);
  32. if (permissionIds.length > 0) {
  33. await db.delete(rolePermissions).where(inArray(rolePermissions.permissionId, permissionIds));
  34. await db.delete(permissions).where(inArray(permissions.id, permissionIds));
  35. }
  36. const userRows = await db
  37. .select({ id: users.id })
  38. .from(users)
  39. .where(ilike(users.email, 'admin-flow-%@ekb.com'));
  40. const userIds = userRows.map((row) => row.id);
  41. if (userIds.length > 0) {
  42. await db.delete(users).where(inArray(users.id, userIds));
  43. }
  44. console.log('Cleaned test artifacts:', {
  45. media: mediaRows.length,
  46. resources: resourceRows.length,
  47. permissions: permissionRows.length,
  48. users: userRows.length,
  49. });
  50. }
  51. cleanupTestArtifacts().catch((error) => {
  52. console.error('Failed to clean test artifacts:', error);
  53. process.exit(1);
  54. });