mirror of
https://github.com/fosrl/pangolin.git
synced 2026-09-07 19:53:01 +02:00
Refactor out transactions and always call rebuild on update
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user