u
This commit is contained in:
@@ -7,6 +7,7 @@ ${CATEGORY_TREE_CTE}
|
||||
SELECT COUNT(*) AS CategoryCount
|
||||
FROM dbo.tKategorie k
|
||||
WHERE k.kKategorie IN (SELECT kKategorie FROM CategoryTree)
|
||||
AND (@kShop = 0 OR EXISTS (SELECT 1 FROM dbo.tKategorieShop ks WHERE ks.kKategorie = k.kKategorie AND ks.kShop = @kShop))
|
||||
AND CONVERT(BIGINT, k.bRowversion) > @cursor;
|
||||
`;
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@ LEFT JOIN dbo.tKategoriebildPlattform kbp
|
||||
LEFT JOIN dbo.tBild b ON b.kBild = kbp.kBild
|
||||
WHERE k.kKategorie IN (SELECT kKategorie FROM CategoryTree WHERE kKategorie <> @rootCategoryId)
|
||||
AND k.cAktiv = 'Y'
|
||||
AND (@kShop = 0 OR EXISTS (SELECT 1 FROM dbo.tKategorieShop ks2 WHERE ks2.kKategorie = k.kKategorie AND ks2.kShop = @kShop))
|
||||
AND CONVERT(BIGINT, k.bRowversion) > @cursor
|
||||
ORDER BY lastChanged ASC;
|
||||
`;
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import sql from 'mssql';
|
||||
import { getActiveShopId } from '../shop.js';
|
||||
|
||||
export const CATEGORY_TREE_CTE = `
|
||||
WITH CategoryTree AS (
|
||||
@@ -14,5 +15,8 @@ export function getRootCategoryId() {
|
||||
}
|
||||
|
||||
export function categoryTreeRequest(pool, rootCategoryId = getRootCategoryId()) {
|
||||
return pool.request().input('rootCategoryId', sql.Int, rootCategoryId);
|
||||
return pool
|
||||
.request()
|
||||
.input('rootCategoryId', sql.Int, rootCategoryId)
|
||||
.input('kShop', sql.Int, getActiveShopId());
|
||||
}
|
||||
|
||||
@@ -1,11 +1,17 @@
|
||||
import sql from 'mssql';
|
||||
import { getPool } from '../db.js';
|
||||
import { getActiveShopId } from '../shop.js';
|
||||
|
||||
const COMPOSITE_PRODUCT_COUNT_SQL = `
|
||||
SELECT COUNT(DISTINCT a.kArtikel) AS CompositeProductCount
|
||||
FROM dbo.tArtikel a
|
||||
INNER JOIN dbo.tStueckliste s ON s.kStueckliste = a.kStueckliste
|
||||
WHERE a.kStueckliste <> 0
|
||||
AND (@kShop = 0 OR EXISTS (
|
||||
SELECT 1 FROM dbo.tKategorieArtikel ka
|
||||
INNER JOIN dbo.tKategorieShop ks ON ks.kKategorie = ka.kKategorie AND ks.kShop = @kShop
|
||||
WHERE ka.kArtikel = a.kArtikel
|
||||
))
|
||||
AND CONVERT(BIGINT, a.bRowversion) > @cursor;
|
||||
`;
|
||||
|
||||
@@ -13,6 +19,7 @@ export async function getCompositeProductCount({ cursor = 0 } = {}) {
|
||||
const result = await getPool()
|
||||
.request()
|
||||
.input('cursor', sql.BigInt, cursor)
|
||||
.input('kShop', sql.Int, getActiveShopId())
|
||||
.query(COMPOSITE_PRODUCT_COUNT_SQL);
|
||||
return result.recordset[0]?.CompositeProductCount ?? 0;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import sql from 'mssql';
|
||||
import { getPool } from '../db.js';
|
||||
import { getActiveShopId } from '../shop.js';
|
||||
|
||||
const COMPOSITE_PRODUCT_LIST_SQL = `
|
||||
SELECT TOP (@limit)
|
||||
@@ -10,6 +11,11 @@ SELECT TOP (@limit)
|
||||
FROM dbo.tStueckliste s
|
||||
INNER JOIN dbo.tArtikel a ON a.kArtikel = s.kVaterArtikel
|
||||
WHERE a.kStueckliste <> 0
|
||||
AND (@kShop = 0 OR EXISTS (
|
||||
SELECT 1 FROM dbo.tKategorieArtikel ka
|
||||
INNER JOIN dbo.tKategorieShop ks ON ks.kKategorie = ka.kKategorie AND ks.kShop = @kShop
|
||||
WHERE ka.kArtikel = a.kArtikel
|
||||
))
|
||||
AND CONVERT(BIGINT, a.bRowversion) > @cursor
|
||||
ORDER BY lastChanged ASC;
|
||||
`;
|
||||
@@ -19,6 +25,7 @@ export async function getCompositeProductList({ cursor = 0, limit = 100 } = {})
|
||||
.request()
|
||||
.input('cursor', sql.BigInt, cursor)
|
||||
.input('limit', sql.Int, limit)
|
||||
.input('kShop', sql.Int, getActiveShopId())
|
||||
.query(COMPOSITE_PRODUCT_LIST_SQL);
|
||||
|
||||
return result.recordset.map((row) => ({
|
||||
|
||||
@@ -9,6 +9,7 @@ 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;
|
||||
`;
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ import sql from 'mssql';
|
||||
import { getPool } from '../db.js';
|
||||
import { getCustomerGroupIds } from './customer-groups.js';
|
||||
import { getProductAttributes } from './product-attributes.js';
|
||||
import { getActiveShopId } from '../shop.js';
|
||||
|
||||
const LANGUAGE_ID = Number(process.env.LANGUAGE_ID) || 1;
|
||||
const TAX_ZONE_NAME = process.env.TAX_ZONE_NAME || 'Zone-EU';
|
||||
@@ -48,6 +49,11 @@ FROM dbo.tArtikel a
|
||||
INNER JOIN dbo.tArtikelBeschreibung ab ON ab.kArtikel = a.kArtikel AND ab.kSprache = @languageId
|
||||
LEFT JOIN TaxRates tr ON tr.kSteuerklasse = a.kSteuerklasse
|
||||
WHERE a.cAktiv = 'Y'
|
||||
AND (@kShop = 0 OR EXISTS (
|
||||
SELECT 1 FROM dbo.tKategorieArtikel ka
|
||||
INNER JOIN dbo.tKategorieShop ks ON ks.kKategorie = ka.kKategorie AND ks.kShop = @kShop
|
||||
WHERE ka.kArtikel = a.kArtikel
|
||||
))
|
||||
AND CONVERT(BIGINT, a.bRowversion) > @cursor
|
||||
ORDER BY lastChanged ASC;
|
||||
`;
|
||||
@@ -87,6 +93,7 @@ export async function getProductList({ cursor = 0, limit = 20 } = {}) {
|
||||
.input('taxZoneName', sql.NVarChar, TAX_ZONE_NAME)
|
||||
.input('imagePlatformId', sql.Int, IMAGE_PLATFORM_ID)
|
||||
.input('imageShopId', sql.Int, IMAGE_SHOP_ID)
|
||||
.input('kShop', sql.Int, getActiveShopId())
|
||||
.query(PRODUCT_LIST_SQL),
|
||||
getCustomerGroupIds(),
|
||||
]);
|
||||
|
||||
20
src/shop.js
Normal file
20
src/shop.js
Normal file
@@ -0,0 +1,20 @@
|
||||
import sql from 'mssql';
|
||||
|
||||
let activeShopId = 0;
|
||||
|
||||
export function setActiveShop(id) {
|
||||
activeShopId = id;
|
||||
}
|
||||
|
||||
export function getActiveShopId() {
|
||||
return activeShopId;
|
||||
}
|
||||
|
||||
export async function fetchActiveShop(pool) {
|
||||
const result = await pool.request().query(`
|
||||
SELECT TOP 1 kShop FROM dbo.tShopSubshop WHERE nGesperrt = 0 ORDER BY kShop
|
||||
`);
|
||||
const id = result.recordset[0]?.kShop ?? 0;
|
||||
setActiveShop(id);
|
||||
return id;
|
||||
}
|
||||
Reference in New Issue
Block a user