Files
EpicNext-Cms/src/actions/catalog-preview-assets.ts
T
Simo 047cd9f3dd
CI / check (push) Successful in 52s
CI / deploy (push) Successful in 1m23s
CI / publish-container (push) Failing after 27s
feat(catalog): add saved packages, preview and bulk price editing
2026-09-09 20:04:10 +02:00

32 lines
900 B
TypeScript

"use server";
import { inArray } from "drizzle-orm";
import { requirePermission } from "@/lib/admin/guard";
import { db, ItemsBase } from "@/lib/db";
import { PERMS } from "@/lib/permissions";
export async function getCatalogPreviewAssets(itemIds: number[]) {
await requirePermission(PERMS.CATALOG_VIEW);
if (
!Array.isArray(itemIds) ||
itemIds.length > 200 ||
itemIds.some(
(id) => !Number.isSafeInteger(id) || id <= 0 || id > 2147483647,
)
)
return { ok: false as const, assets: [] };
const ids = [...new Set(itemIds)];
if (!ids.length) return { ok: true as const, assets: [] };
try {
const assets = await db
.select({
id: ItemsBase.id,
classname: ItemsBase.itemName,
name: ItemsBase.publicName,
})
.from(ItemsBase)
.where(inArray(ItemsBase.id, ids));
return { ok: true as const, assets };
} catch {
return { ok: false as const, assets: [] };
}
}