- Update endpoint
- Delete endpoint
- Soft delete support
- Audit logs
- Only admins can modify data
- Changes tracked
- Added
deleted_atcolumn toWaitlistentity - Imported
DeleteDateColumnfrom TypeORM - File:
src/modules/waitlist/entities/waitlist.entity.ts
- Created migration:
1740437000000-AddSoftDeleteToWaitlist.ts - Adds
deleted_at TIMESTAMP NULLcolumn - Includes rollback (down) method
- File:
src/database/migrations/1740437000000-AddSoftDeleteToWaitlist.ts
- Created
UpdateWaitlistDto - Validation: at least one field required
- Email format validation
- Telegram username format validation (@username, 5-32 chars)
- File:
src/modules/waitlist/dto/update-waitlist.dto.ts
-
update(id, dto)- Update entry with duplicate checking -
softDelete(id)- Soft delete using TypeORM -
hardDelete(id)- Permanent deletion - Imported
UpdateWaitlistDto - Error handling for not found entries
- Conflict handling for duplicates
- File:
src/modules/waitlist/waitlist.service.ts
-
PATCH /admin/waitlist/:id- Update endpoint -
DELETE /admin/waitlist/:id- Soft delete endpoint -
DELETE /admin/waitlist/:id/permanent- Hard delete endpoint
- JWT authentication guard
- Admin role guard
- Rate limiting (30/min for update/soft delete, 10/min for hard delete)
- Request object injection for audit logging
- Swagger/OpenAPI documentation
- Proper HTTP status codes (200, 204, 400, 401, 403, 409)
- Injected
AdminLogsService - Log update actions with changes
- Log soft delete actions
- Log hard delete actions
- Include admin ID, target ID, IP, user agent
- File:
src/modules/waitlist/waitlist-admin.controller.ts
- Imported
AdminLogsModuleintoWaitlistModule - AdminLogsService available for dependency injection
- File:
src/modules/waitlist/waitlist.module.ts
- Test update endpoint
- Test soft delete endpoint
- Test hard delete endpoint
- Verify audit logging calls
- File:
src/modules/waitlist/waitlist-admin-update-delete.controller.spec.ts
- Test update method - success case
- Test update method - not found error
- Test update method - duplicate conflict
- Test soft delete - success
- Test soft delete - not found error
- Test hard delete - success
- Test hard delete - not found error
- File:
src/modules/waitlist/waitlist-update-delete.service.spec.ts
- Feature documentation:
backend/WAITLIST_ADMIN_MANAGEMENT.md - Implementation summary:
WAITLIST_ADMIN_IMPLEMENTATION.md - API quick reference:
backend/WAITLIST_ADMIN_API.md - Usage examples (cURL, JavaScript/TypeScript)
- Security documentation
- Testing instructions
- ✅
src/modules/waitlist/dto/update-waitlist.dto.ts - ✅
src/database/migrations/1740437000000-AddSoftDeleteToWaitlist.ts - ✅
src/modules/waitlist/waitlist-admin-update-delete.controller.spec.ts - ✅
src/modules/waitlist/waitlist-update-delete.service.spec.ts - ✅
backend/WAITLIST_ADMIN_MANAGEMENT.md - ✅
WAITLIST_ADMIN_IMPLEMENTATION.md - ✅
backend/WAITLIST_ADMIN_API.md
- ✅
src/modules/waitlist/entities/waitlist.entity.ts - ✅
src/modules/waitlist/waitlist.service.ts - ✅
src/modules/waitlist/waitlist-admin.controller.ts - ✅
src/modules/waitlist/waitlist.module.ts
cd backend
npm run migration:runnpm run start:prod
# or
pm2 restart app# Get admin JWT token first
TOKEN="your-admin-jwt-token"
# Test update
curl -X PATCH "http://localhost:3000/admin/waitlist/1" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"email_address": "test@example.com"}'
# Test soft delete
curl -X DELETE "http://localhost:3000/admin/waitlist/1" \
-H "Authorization: Bearer $TOKEN"
# Check audit logs
curl "http://localhost:3000/admin/logs?search=waitlist" \
-H "Authorization: Bearer $TOKEN"- JWT authentication required
- Admin role required
- Rate limiting enabled
- Input validation
- Duplicate checking
- Audit logging
- Proper error messages (no sensitive data leakage)
- HTTPS recommended for production
- TypeScript types properly defined
- Error handling implemented
- Validation rules applied
- Test coverage for all methods
- Documentation complete
- API examples provided
- Migration tested
- Follows existing code patterns
All requirements met. Feature is production-ready.
- ✅ 3 new endpoints (update, soft delete, hard delete)
- ✅ Full audit trail integration
- ✅ Soft delete support with recovery capability
- ✅ Admin-only access with proper security
- ✅ Comprehensive test coverage
- ✅ Complete documentation
Ready for deployment!