mirror of
https://github.com/fosrl/pangolin.git
synced 2026-03-21 01:56:38 +00:00
Remove siteSiteResources
This commit is contained in:
@@ -5,10 +5,11 @@ import {
|
||||
orgs,
|
||||
roles,
|
||||
roleSiteResources,
|
||||
siteNetworks,
|
||||
networks,
|
||||
SiteResource,
|
||||
siteResources,
|
||||
sites,
|
||||
siteSiteResources,
|
||||
userSiteResources
|
||||
} from "@server/db";
|
||||
import { getUniqueSiteResourceName } from "@server/db/names";
|
||||
@@ -186,7 +187,9 @@ export async function createSiteResource(
|
||||
.limit(1);
|
||||
|
||||
if (sitesToAssign.length !== siteIds.length) {
|
||||
return next(createHttpError(HttpCode.NOT_FOUND, "Some site not found"));
|
||||
return next(
|
||||
createHttpError(HttpCode.NOT_FOUND, "Some site not found")
|
||||
);
|
||||
}
|
||||
|
||||
const [org] = await db
|
||||
@@ -288,11 +291,29 @@ export async function createSiteResource(
|
||||
|
||||
let newSiteResource: SiteResource | undefined;
|
||||
await db.transaction(async (trx) => {
|
||||
const [network] = await trx
|
||||
.insert(networks)
|
||||
.values({
|
||||
scope: "resource",
|
||||
orgId: orgId
|
||||
})
|
||||
.returning();
|
||||
|
||||
if (!network) {
|
||||
return next(
|
||||
createHttpError(
|
||||
HttpCode.INTERNAL_SERVER_ERROR,
|
||||
`Failed to create network`
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
// Create the site resource
|
||||
const insertValues: typeof siteResources.$inferInsert = {
|
||||
niceId,
|
||||
orgId,
|
||||
name,
|
||||
networkId: network.networkId,
|
||||
mode: mode as "host" | "cidr",
|
||||
destination,
|
||||
enabled,
|
||||
@@ -318,9 +339,9 @@ export async function createSiteResource(
|
||||
//////////////////// update the associations ////////////////////
|
||||
|
||||
for (const siteId of siteIds) {
|
||||
await trx.insert(siteSiteResources).values({
|
||||
await trx.insert(siteNetworks).values({
|
||||
siteId: siteId,
|
||||
siteResourceId: siteResourceId
|
||||
networkId: network.networkId
|
||||
});
|
||||
}
|
||||
|
||||
@@ -383,7 +404,6 @@ export async function createSiteResource(
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
await rebuildClientAssociationsFromSiteResource(
|
||||
newSiteResource,
|
||||
trx
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { db, SiteResource, siteResources, sites, siteSiteResources } from "@server/db";
|
||||
import { db, SiteResource, siteNetworks, siteResources, sites } from "@server/db";
|
||||
import response from "@server/lib/response";
|
||||
import logger from "@server/logger";
|
||||
import { OpenAPITags, registry } from "@server/openApi";
|
||||
@@ -99,13 +99,15 @@ function querySiteResourcesBase() {
|
||||
disableIcmp: siteResources.disableIcmp,
|
||||
authDaemonMode: siteResources.authDaemonMode,
|
||||
authDaemonPort: siteResources.authDaemonPort,
|
||||
networkId: siteResources.networkId,
|
||||
defaultNetworkId: siteResources.defaultNetworkId,
|
||||
siteNames: sql<string[]>`array_agg(${sites.name})`,
|
||||
siteNiceIds: sql<string[]>`array_agg(${sites.niceId})`,
|
||||
siteAddresses: sql<(string | null)[]>`array_agg(${sites.address})`
|
||||
})
|
||||
.from(siteResources)
|
||||
.innerJoin(siteSiteResources, eq(siteResources.siteResourceId, siteSiteResources.siteResourceId))
|
||||
.innerJoin(sites, eq(siteSiteResources.siteId, sites.siteId))
|
||||
.innerJoin(siteNetworks, eq(siteResources.networkId, siteNetworks.networkId))
|
||||
.innerJoin(sites, eq(siteNetworks.siteId, sites.siteId))
|
||||
.groupBy(siteResources.siteResourceId);
|
||||
}
|
||||
|
||||
|
||||
@@ -8,8 +8,9 @@ import {
|
||||
orgs,
|
||||
roles,
|
||||
roleSiteResources,
|
||||
siteNetworks,
|
||||
sites,
|
||||
siteSiteResources,
|
||||
networks,
|
||||
Transaction,
|
||||
userSiteResources
|
||||
} from "@server/db";
|
||||
@@ -257,10 +258,14 @@ export async function updateSiteResource(
|
||||
}
|
||||
|
||||
let sitesChanged = false;
|
||||
const existingSiteIds = await db
|
||||
.select()
|
||||
.from(siteSiteResources)
|
||||
.where(eq(siteSiteResources.siteResourceId, siteResourceId));
|
||||
const existingSiteIds = existingSiteResource.networkId
|
||||
? await db
|
||||
.select()
|
||||
.from(siteNetworks)
|
||||
.where(
|
||||
eq(siteNetworks.networkId, existingSiteResource.networkId)
|
||||
)
|
||||
: [];
|
||||
|
||||
const existingSiteIdSet = new Set(existingSiteIds.map((s) => s.siteId));
|
||||
const newSiteIdSet = new Set(siteIds);
|
||||
@@ -460,15 +465,17 @@ export async function updateSiteResource(
|
||||
|
||||
// delete the site - site resources associations
|
||||
await trx
|
||||
.delete(siteSiteResources)
|
||||
.delete(siteNetworks)
|
||||
.where(
|
||||
eq(siteSiteResources.siteResourceId, siteResourceId)
|
||||
eq(siteNetworks.networkId, updatedSiteResource.networkId!)
|
||||
// TODO: HERE WE FORCE THE NETWORK TO BE DEFINED BUT THE NETWORK CAN GET DELETED and we need to handle that
|
||||
);
|
||||
|
||||
for (const siteId of siteIds) {
|
||||
await trx.insert(siteSiteResources).values({
|
||||
await trx.insert(siteNetworks).values({
|
||||
siteId: siteId,
|
||||
siteResourceId: siteResourceId
|
||||
networkId: updatedSiteResource.networkId!
|
||||
// TODO: HERE WE FORCE THE NETWORK TO BE DEFINED BUT THE NETWORK CAN GET DELETED and we need to handle that
|
||||
});
|
||||
}
|
||||
|
||||
@@ -664,10 +671,11 @@ export async function handleMessagingForUpdatedSiteResource(
|
||||
)
|
||||
)
|
||||
.innerJoin(
|
||||
siteSiteResources,
|
||||
siteNetworks,
|
||||
eq(
|
||||
siteSiteResources.siteResourceId,
|
||||
siteResources.siteResourceId
|
||||
siteNetworks.networkId,
|
||||
siteResources.networkId
|
||||
// TODO: HERE WE FORCE THE NETWORK TO BE DEFINED BUT THE NETWORK CAN GET DELETED and we need to handle that
|
||||
)
|
||||
)
|
||||
.where(
|
||||
@@ -676,7 +684,7 @@ export async function handleMessagingForUpdatedSiteResource(
|
||||
clientSiteResourcesAssociationsCache.clientId,
|
||||
client.clientId
|
||||
),
|
||||
eq(siteSiteResources.siteId, site.siteId),
|
||||
eq(siteNetworks.siteId, site.siteId),
|
||||
eq(
|
||||
siteResources.destination,
|
||||
existingSiteResource.destination
|
||||
|
||||
Reference in New Issue
Block a user