mirror of
https://github.com/fosrl/pangolin.git
synced 2026-07-09 17:18:31 +00:00
Refactor out transactions and always call rebuild on update
This commit is contained in:
parent
2a8ceeec1b
commit
bc63747efe
7 changed files with 37 additions and 61 deletions
|
|
@ -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) => {
|
||||
|
|
|
|||
|
|
@ -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) => {
|
||||
|
|
|
|||
|
|
@ -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) => {
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue