Fix mobile validation, cascade delete for businesses/categories, and DB error handling.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
import { NotFoundException } from '@nestjs/common';
|
||||
import { EntityManager } from 'typeorm';
|
||||
import { AttributeDefinitionEntity } from '../../entities/attribute-definition.entity';
|
||||
import { BookingEntity } from '../../entities/booking.entity';
|
||||
import { BusinessAttributeValueEntity } from '../../entities/business-attribute-value.entity';
|
||||
import { BusinessCategoryEntity } from '../../entities/business-category.entity';
|
||||
import { BusinessServiceEntity } from '../../entities/business-service.entity';
|
||||
import { BusinessEntity } from '../../entities/business.entity';
|
||||
import { ServiceTemplateEntity } from '../../entities/service-template.entity';
|
||||
|
||||
/** Remove a business and all rows that block FK deletes in production DB. */
|
||||
export async function deleteBusinessCascade(
|
||||
manager: EntityManager,
|
||||
businessId: string,
|
||||
): Promise<void> {
|
||||
await manager.delete(BookingEntity, { businessId });
|
||||
await manager.delete(BusinessServiceEntity, { businessId });
|
||||
await manager.delete(BusinessAttributeValueEntity, { businessId });
|
||||
|
||||
const result = await manager.delete(BusinessEntity, businessId);
|
||||
if (!result.affected) {
|
||||
throw new NotFoundException('Business not found');
|
||||
}
|
||||
}
|
||||
|
||||
/** Remove a category after all its businesses and catalog rows are cleared. */
|
||||
export async function deleteCategoryCascade(
|
||||
manager: EntityManager,
|
||||
categoryId: string,
|
||||
businessIds: string[],
|
||||
): Promise<void> {
|
||||
for (const businessId of businessIds) {
|
||||
await deleteBusinessCascade(manager, businessId);
|
||||
}
|
||||
|
||||
await manager.delete(ServiceTemplateEntity, { categoryId });
|
||||
await manager.delete(AttributeDefinitionEntity, { categoryId });
|
||||
|
||||
const result = await manager.delete(BusinessCategoryEntity, categoryId);
|
||||
if (!result.affected) {
|
||||
throw new NotFoundException('Business category not found');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user