Refactor out transactions and always call rebuild on update

This commit is contained in:
Owen
2026-06-23 18:12:51 -04:00
parent 2a8ceeec1b
commit bc63747efe
7 changed files with 37 additions and 61 deletions

View File

@@ -148,11 +148,9 @@ export async function addClientToSiteResource(
);
}
await db.transaction(async (trx) => {
await trx.insert(clientSiteResources).values({
clientId,
siteResourceId
});
await db.insert(clientSiteResources).values({
clientId,
siteResourceId
});
rebuildClientAssociationsFromSiteResource(siteResource).catch((e) => {

View File

@@ -155,11 +155,9 @@ export async function addRoleToSiteResource(
);
}
await db.transaction(async (trx) => {
await trx.insert(roleSiteResources).values({
roleId,
siteResourceId
});
await db.insert(roleSiteResources).values({
roleId,
siteResourceId
});
rebuildClientAssociationsFromSiteResource(siteResource).catch((e) => {

View File

@@ -124,11 +124,9 @@ export async function addUserToSiteResource(
);
}
await db.transaction(async (trx) => {
await trx.insert(userSiteResources).values({
userId,
siteResourceId
});
await db.insert(userSiteResources).values({
userId,
siteResourceId
});
rebuildClientAssociationsFromSiteResource(siteResource).catch((e) => {

View File

@@ -148,16 +148,14 @@ export async function removeClientFromSiteResource(
);
}
await db.transaction(async (trx) => {
await trx
.delete(clientSiteResources)
.where(
and(
eq(clientSiteResources.siteResourceId, siteResourceId),
eq(clientSiteResources.clientId, clientId)
)
);
});
await db
.delete(clientSiteResources)
.where(
and(
eq(clientSiteResources.siteResourceId, siteResourceId),
eq(clientSiteResources.clientId, clientId)
)
);
rebuildClientAssociationsFromSiteResource(siteResource).catch((e) => {
logger.error(

View File

@@ -156,16 +156,14 @@ export async function removeRoleFromSiteResource(
);
}
await db.transaction(async (trx) => {
await trx
.delete(roleSiteResources)
.where(
and(
eq(roleSiteResources.siteResourceId, siteResourceId),
eq(roleSiteResources.roleId, roleId)
)
);
});
await db
.delete(roleSiteResources)
.where(
and(
eq(roleSiteResources.siteResourceId, siteResourceId),
eq(roleSiteResources.roleId, roleId)
)
);
rebuildClientAssociationsFromSiteResource(siteResource).catch((e) => {
logger.error(

View File

@@ -126,16 +126,14 @@ export async function removeUserFromSiteResource(
);
}
await db.transaction(async (trx) => {
await trx
.delete(userSiteResources)
.where(
and(
eq(userSiteResources.siteResourceId, siteResourceId),
eq(userSiteResources.userId, userId)
)
);
});
await db
.delete(userSiteResources)
.where(
and(
eq(userSiteResources.siteResourceId, siteResourceId),
eq(userSiteResources.userId, userId)
)
);
rebuildClientAssociationsFromSiteResource(siteResource).catch((e) => {
logger.error(

View File

@@ -390,7 +390,6 @@ export async function updateSiteResource(
);
}
let sitesChanged = false;
const existingSiteIds = existingSiteResource.networkId
? await db
.select()
@@ -399,16 +398,7 @@ export async function updateSiteResource(
eq(siteNetworks.networkId, existingSiteResource.networkId)
)
: [];
const existingSiteIdSet = new Set(existingSiteIds.map((s) => s.siteId));
const newSiteIdSet = new Set(siteIds);
if (
existingSiteIdSet.size !== newSiteIdSet.size ||
![...existingSiteIdSet].every((id) => newSiteIdSet.has(id))
) {
sitesChanged = true;
}
let fullDomain: string | null = null;
let finalSubdomain: string | null = null;
@@ -615,15 +605,13 @@ export async function updateSiteResource(
throw new Error("No updated resource found after update");
}
if (sitesChanged) {
rebuildClientAssociationsFromSiteResource(
updatedSiteResource
).catch((e) => {
rebuildClientAssociationsFromSiteResource(updatedSiteResource).catch(
(e) => {
logger.error(
`Failed to rebuild client associations for site resource ${siteResourceId}. Error: ${e}`
);
});
}
}
);
handleMessagingForUpdatedSiteResource(
existingSiteResource,