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
@@ -148,12 +148,10 @@ export async function addClientToSiteResource(
); );
} }
await db.transaction(async (trx) => { await db.insert(clientSiteResources).values({
await trx.insert(clientSiteResources).values({
clientId, clientId,
siteResourceId siteResourceId
}); });
});
rebuildClientAssociationsFromSiteResource(siteResource).catch((e) => { rebuildClientAssociationsFromSiteResource(siteResource).catch((e) => {
logger.error( logger.error(
@@ -155,12 +155,10 @@ export async function addRoleToSiteResource(
); );
} }
await db.transaction(async (trx) => { await db.insert(roleSiteResources).values({
await trx.insert(roleSiteResources).values({
roleId, roleId,
siteResourceId siteResourceId
}); });
});
rebuildClientAssociationsFromSiteResource(siteResource).catch((e) => { rebuildClientAssociationsFromSiteResource(siteResource).catch((e) => {
logger.error( logger.error(
@@ -124,12 +124,10 @@ export async function addUserToSiteResource(
); );
} }
await db.transaction(async (trx) => { await db.insert(userSiteResources).values({
await trx.insert(userSiteResources).values({
userId, userId,
siteResourceId siteResourceId
}); });
});
rebuildClientAssociationsFromSiteResource(siteResource).catch((e) => { rebuildClientAssociationsFromSiteResource(siteResource).catch((e) => {
logger.error( logger.error(
@@ -148,8 +148,7 @@ export async function removeClientFromSiteResource(
); );
} }
await db.transaction(async (trx) => { await db
await trx
.delete(clientSiteResources) .delete(clientSiteResources)
.where( .where(
and( and(
@@ -157,7 +156,6 @@ export async function removeClientFromSiteResource(
eq(clientSiteResources.clientId, clientId) eq(clientSiteResources.clientId, clientId)
) )
); );
});
rebuildClientAssociationsFromSiteResource(siteResource).catch((e) => { rebuildClientAssociationsFromSiteResource(siteResource).catch((e) => {
logger.error( logger.error(
@@ -156,8 +156,7 @@ export async function removeRoleFromSiteResource(
); );
} }
await db.transaction(async (trx) => { await db
await trx
.delete(roleSiteResources) .delete(roleSiteResources)
.where( .where(
and( and(
@@ -165,7 +164,6 @@ export async function removeRoleFromSiteResource(
eq(roleSiteResources.roleId, roleId) eq(roleSiteResources.roleId, roleId)
) )
); );
});
rebuildClientAssociationsFromSiteResource(siteResource).catch((e) => { rebuildClientAssociationsFromSiteResource(siteResource).catch((e) => {
logger.error( logger.error(
@@ -126,8 +126,7 @@ export async function removeUserFromSiteResource(
); );
} }
await db.transaction(async (trx) => { await db
await trx
.delete(userSiteResources) .delete(userSiteResources)
.where( .where(
and( and(
@@ -135,7 +134,6 @@ export async function removeUserFromSiteResource(
eq(userSiteResources.userId, userId) eq(userSiteResources.userId, userId)
) )
); );
});
rebuildClientAssociationsFromSiteResource(siteResource).catch((e) => { rebuildClientAssociationsFromSiteResource(siteResource).catch((e) => {
logger.error( logger.error(
@@ -390,7 +390,6 @@ export async function updateSiteResource(
); );
} }
let sitesChanged = false;
const existingSiteIds = existingSiteResource.networkId const existingSiteIds = existingSiteResource.networkId
? await db ? await db
.select() .select()
@@ -399,16 +398,7 @@ export async function updateSiteResource(
eq(siteNetworks.networkId, existingSiteResource.networkId) eq(siteNetworks.networkId, existingSiteResource.networkId)
) )
: []; : [];
const existingSiteIdSet = new Set(existingSiteIds.map((s) => s.siteId)); 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 fullDomain: string | null = null;
let finalSubdomain: 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"); throw new Error("No updated resource found after update");
} }
if (sitesChanged) { rebuildClientAssociationsFromSiteResource(updatedSiteResource).catch(
rebuildClientAssociationsFromSiteResource( (e) => {
updatedSiteResource
).catch((e) => {
logger.error( logger.error(
`Failed to rebuild client associations for site resource ${siteResourceId}. Error: ${e}` `Failed to rebuild client associations for site resource ${siteResourceId}. Error: ${e}`
); );
});
} }
);
handleMessagingForUpdatedSiteResource( handleMessagingForUpdatedSiteResource(
existingSiteResource, existingSiteResource,