mirror of
https://github.com/fosrl/pangolin.git
synced 2026-05-22 08:45:24 +00:00
✨ attach/detach private resources
This commit is contained in:
@@ -149,7 +149,7 @@ export async function attachLabelToItem(
|
|||||||
|
|
||||||
if (siteResourceId) {
|
if (siteResourceId) {
|
||||||
const resourceCount = await db.$count(
|
const resourceCount = await db.$count(
|
||||||
resources,
|
siteResources,
|
||||||
and(
|
and(
|
||||||
eq(siteResources.siteResourceId, siteResourceId),
|
eq(siteResources.siteResourceId, siteResourceId),
|
||||||
eq(siteResources.orgId, orgId)
|
eq(siteResources.orgId, orgId)
|
||||||
|
|||||||
@@ -17,6 +17,8 @@ import {
|
|||||||
resourceLabels,
|
resourceLabels,
|
||||||
resources,
|
resources,
|
||||||
siteLabels,
|
siteLabels,
|
||||||
|
siteResourceLabels,
|
||||||
|
siteResources,
|
||||||
sites
|
sites
|
||||||
} from "@server/db";
|
} from "@server/db";
|
||||||
import response from "@server/lib/response";
|
import response from "@server/lib/response";
|
||||||
@@ -35,7 +37,8 @@ const paramsSchema = z.strictObject({
|
|||||||
|
|
||||||
const detachLabelBodySchema = z.strictObject({
|
const detachLabelBodySchema = z.strictObject({
|
||||||
siteId: z.number().int().optional(),
|
siteId: z.number().int().optional(),
|
||||||
resourceId: z.number().int().optional()
|
resourceId: z.number().int().optional(),
|
||||||
|
siteResourceId: z.number().int().optional()
|
||||||
});
|
});
|
||||||
|
|
||||||
export async function detachLabelFromItem(
|
export async function detachLabelFromItem(
|
||||||
@@ -66,13 +69,13 @@ export async function detachLabelFromItem(
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
const { siteId, resourceId } = parsedBody.data;
|
const { siteId, resourceId, siteResourceId } = parsedBody.data;
|
||||||
|
|
||||||
if (!siteId && !resourceId) {
|
if (!siteId && !resourceId && !siteResourceId) {
|
||||||
return next(
|
return next(
|
||||||
createHttpError(
|
createHttpError(
|
||||||
HttpCode.BAD_REQUEST,
|
HttpCode.BAD_REQUEST,
|
||||||
"At least one of `siteId` or `resourceId` should be provided."
|
"At least one of `siteId`, `siteResourceId` or `resourceId` should be provided."
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -144,6 +147,34 @@ export async function detachLabelFromItem(
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (siteResourceId) {
|
||||||
|
const resourceCount = await db.$count(
|
||||||
|
siteResources,
|
||||||
|
and(
|
||||||
|
eq(siteResources.siteResourceId, siteResourceId),
|
||||||
|
eq(siteResources.orgId, orgId)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
if (resourceCount === 0) {
|
||||||
|
return next(
|
||||||
|
createHttpError(
|
||||||
|
HttpCode.NOT_FOUND,
|
||||||
|
`SiteResource with Id ${siteResourceId} doesn't exist.`
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
await db
|
||||||
|
.delete(siteResourceLabels)
|
||||||
|
.where(
|
||||||
|
and(
|
||||||
|
eq(siteResourceLabels.labelId, labelId),
|
||||||
|
eq(siteResourceLabels.siteResourceId, siteResourceId)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
return response(res, {
|
return response(res, {
|
||||||
data: {},
|
data: {},
|
||||||
success: true,
|
success: true,
|
||||||
|
|||||||
Reference in New Issue
Block a user