import sql from 'mssql'; import { isDemoMode } from '../demo/mode.js'; import { getDemoProductCount } from '../demo/store.js'; import { getPool } from '../db.js'; import { CATEGORY_TREE_CTE, categoryTreeRequest, getRootCategoryId } from './category-tree.js'; const PRODUCT_COUNT_SQL = ` ${CATEGORY_TREE_CTE} SELECT COUNT(DISTINCT a.kArtikel) AS ProductCount FROM dbo.tArtikel a INNER JOIN dbo.tKategorieArtikel ka ON ka.kArtikel = a.kArtikel WHERE a.cAktiv = 'Y' AND ka.kKategorie IN (SELECT kKategorie FROM CategoryTree) AND (@kShop = 0 OR EXISTS (SELECT 1 FROM dbo.tKategorieShop ks WHERE ks.kKategorie = ka.kKategorie AND ks.kShop = @kShop)) AND ( CONVERT(BIGINT, a.bRowversion) > @cursor OR EXISTS ( SELECT 1 FROM dbo.tArtikelbildPlattform abp WHERE abp.kArtikel = a.kArtikel AND abp.kShop = @kShop AND CONVERT(BIGINT, abp.bRowversion) > @cursor ) ); `; export async function getProductCount({ cursor = 0, rootCategoryId = getRootCategoryId() } = {}) { if (isDemoMode()) { return getDemoProductCount({ cursor }); } const result = await categoryTreeRequest(getPool(), rootCategoryId) .input('cursor', sql.BigInt, cursor) .query(PRODUCT_COUNT_SQL); return result.recordset[0]?.ProductCount ?? 0; }