Reclaim tenant aliases from every other version, not only the same product.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -110,9 +110,8 @@ export class TenantsService {
|
|||||||
notes: dto.notes,
|
notes: dto.notes,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
await this.reclaimAliasesFromSameProduct(tx, {
|
await this.reclaimAliasesFromOtherTenants(tx, {
|
||||||
tenantId: created.id,
|
tenantId: created.id,
|
||||||
product: created.product,
|
|
||||||
aliases,
|
aliases,
|
||||||
});
|
});
|
||||||
return created;
|
return created;
|
||||||
@@ -193,9 +192,8 @@ export class TenantsService {
|
|||||||
try {
|
try {
|
||||||
const tenant = await this.prisma.$transaction(async (tx: any) => {
|
const tenant = await this.prisma.$transaction(async (tx: any) => {
|
||||||
if (nextAliases !== undefined) {
|
if (nextAliases !== undefined) {
|
||||||
await this.reclaimAliasesFromSameProduct(tx, {
|
await this.reclaimAliasesFromOtherTenants(tx, {
|
||||||
tenantId: id,
|
tenantId: id,
|
||||||
product: dto.product ?? before.product,
|
|
||||||
aliases: nextAliases,
|
aliases: nextAliases,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -364,18 +362,18 @@ export class TenantsService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* دامنه/IP در aliases این نسخه، از domains[] نسخههای دیگر همان محصول برداشته میشود.
|
* دامنه/IP در aliases این نسخه، از domains[] همهٔ نسخههای دیگر برداشته میشود.
|
||||||
* خانگی و همکار جدا هستند؛ دامنهٔ اصلی (ستون domain) جابهجا نمیشود.
|
* دامنهٔ اصلی (ستون domain) جابهجا نمیشود.
|
||||||
*/
|
*/
|
||||||
private async reclaimAliasesFromSameProduct(
|
private async reclaimAliasesFromOtherTenants(
|
||||||
tx: any,
|
tx: any,
|
||||||
opts: { tenantId: string; product: ProductType; aliases: string[] },
|
opts: { tenantId: string; aliases: string[] },
|
||||||
) {
|
) {
|
||||||
const keys = new Set(opts.aliases.map((item) => this.hostKey(item)).filter(Boolean));
|
const keys = new Set(opts.aliases.map((item) => this.hostKey(item)).filter(Boolean));
|
||||||
if (!keys.size) return;
|
if (!keys.size) return;
|
||||||
|
|
||||||
const others = await tx.tenant.findMany({
|
const others = await tx.tenant.findMany({
|
||||||
where: { product: opts.product, id: { not: opts.tenantId } },
|
where: { id: { not: opts.tenantId } },
|
||||||
select: { id: true, nameFa: true, domain: true, domains: true },
|
select: { id: true, nameFa: true, domain: true, domains: true },
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user