Remove siteSiteResources

This commit is contained in:
Owen
2026-03-19 21:44:59 -07:00
parent 6f2e37948c
commit 2093bb5357
6 changed files with 87 additions and 48 deletions

View File

@@ -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

View File

@@ -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);
}

View File

@@ -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