refactor: disable automatic slug regeneration on field and section name updates to ensure stable references

This commit is contained in:
pradeepkumar
2026-04-15 16:33:08 +05:30
parent 29447de5b2
commit 416257a881
2 changed files with 5 additions and 23 deletions

View File

@@ -134,7 +134,8 @@ export class ProfileFieldsService {
const data: any = { ...updateFieldDto }; const data: any = { ...updateFieldDto };
// If slug is explicitly provided, use it; otherwise auto-generate from name // Slug only changes when the admin explicitly edits it — renaming the field never
// regenerates the slug, so field value references stay stable.
if (updateFieldDto.slug) { if (updateFieldDto.slug) {
const newSlug = updateFieldDto.slug; const newSlug = updateFieldDto.slug;
const existing = await this.prisma.profileField.findFirst({ const existing = await this.prisma.profileField.findFirst({
@@ -150,21 +151,6 @@ export class ProfileFieldsService {
throw new ConflictException('A field with this slug already exists in this section'); throw new ConflictException('A field with this slug already exists in this section');
} }
data.slug = newSlug; data.slug = newSlug;
} else if (updateFieldDto.name) {
const newSlug = this.generateSlug(updateFieldDto.name);
const existing = await this.prisma.profileField.findFirst({
where: {
AND: [
{ id: { not: id } },
{ sectionId: field.sectionId },
{ slug: newSlug },
],
},
});
if (existing) {
throw new ConflictException('A field with this name already exists in this section');
}
data.slug = newSlug;
} }
return this.prisma.profileField.update({ return this.prisma.profileField.update({

View File

@@ -108,13 +108,9 @@ export class ProfileSectionsService {
const data: any = { ...updateSectionDto }; const data: any = { ...updateSectionDto };
// Resolve effective slug: explicit slug from DTO wins; otherwise regenerate from name if name changed // Slug only changes when admin explicitly sends one — renaming the section never
let effectiveSlug: string | undefined; // regenerates it, so field/section references stay stable.
if (updateSectionDto.slug) { const effectiveSlug: string | undefined = updateSectionDto.slug;
effectiveSlug = updateSectionDto.slug;
} else if (updateSectionDto.name) {
effectiveSlug = this.generateSlug(updateSectionDto.name);
}
if (effectiveSlug) { if (effectiveSlug) {
// Check if slug conflicts with another section // Check if slug conflicts with another section