prouct pic delete sync fix
This commit is contained in:
@@ -4,13 +4,28 @@ import { getDemoCategoryCount } from '../demo/store.js';
|
|||||||
import { getPool } from '../db.js';
|
import { getPool } from '../db.js';
|
||||||
import { CATEGORY_TREE_CTE, categoryTreeRequest, getRootCategoryId } from './category-tree.js';
|
import { CATEGORY_TREE_CTE, categoryTreeRequest, getRootCategoryId } from './category-tree.js';
|
||||||
|
|
||||||
|
const LANGUAGE_ID = Number(process.env.LANGUAGE_ID) || 1;
|
||||||
|
|
||||||
const CATEGORY_COUNT_SQL = `
|
const CATEGORY_COUNT_SQL = `
|
||||||
${CATEGORY_TREE_CTE}
|
${CATEGORY_TREE_CTE}
|
||||||
SELECT COUNT(*) AS CategoryCount
|
SELECT COUNT(*) AS CategoryCount
|
||||||
FROM dbo.tKategorie k
|
FROM dbo.tKategorie k
|
||||||
WHERE k.kKategorie IN (SELECT kKategorie FROM CategoryTree)
|
LEFT JOIN dbo.tKategorieSprache ks ON ks.kKategorie = k.kKategorie AND ks.kSprache = @languageId
|
||||||
AND (@kShop = 0 OR EXISTS (SELECT 1 FROM dbo.tKategorieShop ks WHERE ks.kKategorie = k.kKategorie AND ks.kShop = @kShop))
|
LEFT JOIN dbo.tKategoriebildPlattform kbp ON kbp.kKategorie = k.kKategorie
|
||||||
AND CONVERT(BIGINT, k.bRowversion) > @cursor;
|
CROSS APPLY (
|
||||||
|
SELECT MAX(v) AS lastChanged
|
||||||
|
FROM (VALUES
|
||||||
|
(CONVERT(BIGINT, k.bRowversion)),
|
||||||
|
(CONVERT(BIGINT, ks.bRowversion)),
|
||||||
|
(CONVERT(BIGINT, kbp.bRowversion)),
|
||||||
|
((SELECT MAX(CONVERT(BIGINT, ka.bRowversion)) FROM dbo.tKategorieArtikel ka WHERE ka.kKategorie = k.kKategorie)),
|
||||||
|
((SELECT MAX(CONVERT(BIGINT, ksh.bRowversion)) FROM dbo.tKategorieShop ksh WHERE ksh.kKategorie = k.kKategorie AND (@kShop = 0 OR ksh.kShop = @kShop)))
|
||||||
|
) AS t(v)
|
||||||
|
) rv
|
||||||
|
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 rv.lastChanged > @cursor;
|
||||||
`;
|
`;
|
||||||
|
|
||||||
export async function getCategoryCount({ cursor = 0, rootCategoryId = getRootCategoryId() } = {}) {
|
export async function getCategoryCount({ cursor = 0, rootCategoryId = getRootCategoryId() } = {}) {
|
||||||
@@ -20,6 +35,7 @@ export async function getCategoryCount({ cursor = 0, rootCategoryId = getRootCat
|
|||||||
|
|
||||||
const result = await categoryTreeRequest(getPool(), rootCategoryId)
|
const result = await categoryTreeRequest(getPool(), rootCategoryId)
|
||||||
.input('cursor', sql.BigInt, cursor)
|
.input('cursor', sql.BigInt, cursor)
|
||||||
|
.input('languageId', sql.Int, LANGUAGE_ID)
|
||||||
.query(CATEGORY_COUNT_SQL);
|
.query(CATEGORY_COUNT_SQL);
|
||||||
return result.recordset[0]?.CategoryCount ?? 0;
|
return result.recordset[0]?.CategoryCount ?? 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,17 +14,27 @@ SELECT TOP (@limit)
|
|||||||
k.nSort AS sort,
|
k.nSort AS sort,
|
||||||
ks.cName AS name,
|
ks.cName AS name,
|
||||||
b.cHash AS imgHash,
|
b.cHash AS imgHash,
|
||||||
CONVERT(BIGINT, k.bRowversion) AS lastChanged
|
rv.lastChanged
|
||||||
FROM dbo.tKategorie k
|
FROM dbo.tKategorie k
|
||||||
INNER JOIN dbo.tKategorieSprache ks ON ks.kKategorie = k.kKategorie AND ks.kSprache = @languageId
|
INNER JOIN dbo.tKategorieSprache ks ON ks.kKategorie = k.kKategorie AND ks.kSprache = @languageId
|
||||||
LEFT JOIN dbo.tKategoriebildPlattform kbp
|
LEFT JOIN dbo.tKategoriebildPlattform kbp
|
||||||
ON kbp.kKategorie = k.kKategorie
|
ON kbp.kKategorie = k.kKategorie
|
||||||
LEFT JOIN dbo.tBild b ON b.kBild = kbp.kBild
|
LEFT JOIN dbo.tBild b ON b.kBild = kbp.kBild
|
||||||
|
CROSS APPLY (
|
||||||
|
SELECT MAX(v) AS lastChanged
|
||||||
|
FROM (VALUES
|
||||||
|
(CONVERT(BIGINT, k.bRowversion)),
|
||||||
|
(CONVERT(BIGINT, ks.bRowversion)),
|
||||||
|
(CONVERT(BIGINT, kbp.bRowversion)),
|
||||||
|
((SELECT MAX(CONVERT(BIGINT, ka.bRowversion)) FROM dbo.tKategorieArtikel ka WHERE ka.kKategorie = k.kKategorie)),
|
||||||
|
((SELECT MAX(CONVERT(BIGINT, ksh.bRowversion)) FROM dbo.tKategorieShop ksh WHERE ksh.kKategorie = k.kKategorie AND (@kShop = 0 OR ksh.kShop = @kShop)))
|
||||||
|
) AS t(v)
|
||||||
|
) rv
|
||||||
WHERE k.kKategorie IN (SELECT kKategorie FROM CategoryTree WHERE kKategorie <> @rootCategoryId)
|
WHERE k.kKategorie IN (SELECT kKategorie FROM CategoryTree WHERE kKategorie <> @rootCategoryId)
|
||||||
AND k.cAktiv = 'Y'
|
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 (@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
|
AND rv.lastChanged > @cursor
|
||||||
ORDER BY lastChanged ASC;
|
ORDER BY rv.lastChanged ASC;
|
||||||
`;
|
`;
|
||||||
|
|
||||||
export async function getCategoryList({ cursor = 0, limit = 20, rootCategoryId = getRootCategoryId() } = {}) {
|
export async function getCategoryList({ cursor = 0, limit = 20, rootCategoryId = getRootCategoryId() } = {}) {
|
||||||
|
|||||||
@@ -4,23 +4,30 @@ import { getDemoProductCount } from '../demo/store.js';
|
|||||||
import { getPool } from '../db.js';
|
import { getPool } from '../db.js';
|
||||||
import { CATEGORY_TREE_CTE, categoryTreeRequest, getRootCategoryId } from './category-tree.js';
|
import { CATEGORY_TREE_CTE, categoryTreeRequest, getRootCategoryId } from './category-tree.js';
|
||||||
|
|
||||||
|
const LANGUAGE_ID = Number(process.env.LANGUAGE_ID) || 1;
|
||||||
|
|
||||||
const PRODUCT_COUNT_SQL = `
|
const PRODUCT_COUNT_SQL = `
|
||||||
${CATEGORY_TREE_CTE}
|
${CATEGORY_TREE_CTE}
|
||||||
SELECT COUNT(DISTINCT a.kArtikel) AS ProductCount
|
SELECT COUNT(DISTINCT a.kArtikel) AS ProductCount
|
||||||
FROM dbo.tArtikel a
|
FROM dbo.tArtikel a
|
||||||
INNER JOIN dbo.tKategorieArtikel ka ON ka.kArtikel = a.kArtikel
|
INNER JOIN dbo.tKategorieArtikel ka ON ka.kArtikel = a.kArtikel
|
||||||
|
LEFT JOIN dbo.tlagerbestand lb ON lb.kArtikel = a.kArtikel
|
||||||
|
LEFT JOIN dbo.tArtikelBeschreibung ab ON ab.kArtikel = a.kArtikel AND ab.kSprache = @languageId
|
||||||
|
CROSS APPLY (
|
||||||
|
SELECT MAX(v) AS lastChanged
|
||||||
|
FROM (VALUES
|
||||||
|
(CONVERT(BIGINT, a.bRowversion)),
|
||||||
|
(CONVERT(BIGINT, lb.bRowversion)),
|
||||||
|
(CONVERT(BIGINT, ab.bRowversion)),
|
||||||
|
((SELECT MAX(CONVERT(BIGINT, abp.bRowversion)) FROM dbo.tArtikelbildPlattform abp WHERE abp.kArtikel = a.kArtikel AND (@kShop = 0 OR abp.kShop = @kShop))),
|
||||||
|
((SELECT MAX(CONVERT(BIGINT, p.bRowversion)) FROM dbo.tPreis p WHERE p.kArtikel = a.kArtikel AND (@kShop = 0 OR p.kShop = @kShop))),
|
||||||
|
((SELECT MAX(CONVERT(BIGINT, sp.bRowversion)) FROM dbo.tArtikelSonderpreis sp WHERE sp.kArtikel = a.kArtikel))
|
||||||
|
) AS t(v)
|
||||||
|
) rv
|
||||||
WHERE a.cAktiv = 'Y'
|
WHERE a.cAktiv = 'Y'
|
||||||
AND ka.kKategorie IN (SELECT kKategorie FROM CategoryTree)
|
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 (@kShop = 0 OR EXISTS (SELECT 1 FROM dbo.tKategorieShop ks WHERE ks.kKategorie = ka.kKategorie AND ks.kShop = @kShop))
|
||||||
AND (
|
AND rv.lastChanged > @cursor;
|
||||||
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() } = {}) {
|
export async function getProductCount({ cursor = 0, rootCategoryId = getRootCategoryId() } = {}) {
|
||||||
@@ -30,6 +37,7 @@ export async function getProductCount({ cursor = 0, rootCategoryId = getRootCate
|
|||||||
|
|
||||||
const result = await categoryTreeRequest(getPool(), rootCategoryId)
|
const result = await categoryTreeRequest(getPool(), rootCategoryId)
|
||||||
.input('cursor', sql.BigInt, cursor)
|
.input('cursor', sql.BigInt, cursor)
|
||||||
|
.input('languageId', sql.Int, LANGUAGE_ID)
|
||||||
.query(PRODUCT_COUNT_SQL);
|
.query(PRODUCT_COUNT_SQL);
|
||||||
return result.recordset[0]?.ProductCount ?? 0;
|
return result.recordset[0]?.ProductCount ?? 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,12 +15,6 @@ WITH TaxRates AS (
|
|||||||
SELECT kSteuerklasse, fSteuersatz
|
SELECT kSteuerklasse, fSteuersatz
|
||||||
FROM dbo.tSteuersatz
|
FROM dbo.tSteuersatz
|
||||||
WHERE kSteuerzone IN (SELECT kSteuerzone FROM dbo.tSteuerzone WHERE cName = @taxZoneName)
|
WHERE kSteuerzone IN (SELECT kSteuerzone FROM dbo.tSteuerzone WHERE cName = @taxZoneName)
|
||||||
),
|
|
||||||
ImageRV AS (
|
|
||||||
SELECT kArtikel, MAX(CONVERT(BIGINT, bRowversion)) AS maxImageRV
|
|
||||||
FROM dbo.tArtikelbildPlattform
|
|
||||||
WHERE kShop = @kShop
|
|
||||||
GROUP BY kArtikel
|
|
||||||
)
|
)
|
||||||
SELECT TOP (@limit)
|
SELECT TOP (@limit)
|
||||||
a.kArtikel AS id,
|
a.kArtikel AS id,
|
||||||
@@ -29,11 +23,7 @@ SELECT TOP (@limit)
|
|||||||
a.fVKNetto AS netPrice,
|
a.fVKNetto AS netPrice,
|
||||||
tr.fSteuersatz AS taxRate,
|
tr.fSteuersatz AS taxRate,
|
||||||
a.dErstelldatum AS createdAt,
|
a.dErstelldatum AS createdAt,
|
||||||
CASE
|
rv.lastChanged,
|
||||||
WHEN ir.maxImageRV IS NOT NULL AND ir.maxImageRV > CONVERT(BIGINT, a.bRowversion)
|
|
||||||
THEN ir.maxImageRV
|
|
||||||
ELSE CONVERT(BIGINT, a.bRowversion)
|
|
||||||
END AS lastChanged,
|
|
||||||
(
|
(
|
||||||
SELECT TOP 1 img.cHash
|
SELECT TOP 1 img.cHash
|
||||||
FROM dbo.tArtikelbildPlattform abp
|
FROM dbo.tArtikelbildPlattform abp
|
||||||
@@ -59,20 +49,28 @@ SELECT TOP (@limit)
|
|||||||
ISNULL(v.fBestand, 0) AS fBestand
|
ISNULL(v.fBestand, 0) AS fBestand
|
||||||
FROM dbo.tArtikel a
|
FROM dbo.tArtikel a
|
||||||
INNER JOIN dbo.tArtikelBeschreibung ab ON ab.kArtikel = a.kArtikel AND ab.kSprache = @languageId
|
INNER JOIN dbo.tArtikelBeschreibung ab ON ab.kArtikel = a.kArtikel AND ab.kSprache = @languageId
|
||||||
|
LEFT JOIN dbo.tlagerbestand lb ON lb.kArtikel = a.kArtikel
|
||||||
LEFT JOIN TaxRates tr ON tr.kSteuerklasse = a.kSteuerklasse
|
LEFT JOIN TaxRates tr ON tr.kSteuerklasse = a.kSteuerklasse
|
||||||
LEFT JOIN ImageRV ir ON ir.kArtikel = a.kArtikel
|
|
||||||
LEFT JOIN dbo.vLagerbestandProLager v ON v.kArtikel = a.kArtikel AND v.kWarenlager = @warenlagerId
|
LEFT JOIN dbo.vLagerbestandProLager v ON v.kArtikel = a.kArtikel AND v.kWarenlager = @warenlagerId
|
||||||
|
CROSS APPLY (
|
||||||
|
SELECT MAX(val) AS lastChanged
|
||||||
|
FROM (VALUES
|
||||||
|
(CONVERT(BIGINT, a.bRowversion)),
|
||||||
|
(CONVERT(BIGINT, lb.bRowversion)),
|
||||||
|
(CONVERT(BIGINT, ab.bRowversion)),
|
||||||
|
((SELECT MAX(CONVERT(BIGINT, abp.bRowversion)) FROM dbo.tArtikelbildPlattform abp WHERE abp.kArtikel = a.kArtikel AND (@kShop = 0 OR abp.kShop = @kShop))),
|
||||||
|
((SELECT MAX(CONVERT(BIGINT, p.bRowversion)) FROM dbo.tPreis p WHERE p.kArtikel = a.kArtikel AND (@kShop = 0 OR p.kShop = @kShop))),
|
||||||
|
((SELECT MAX(CONVERT(BIGINT, sp.bRowversion)) FROM dbo.tArtikelSonderpreis sp WHERE sp.kArtikel = a.kArtikel))
|
||||||
|
) AS t(val)
|
||||||
|
) rv
|
||||||
WHERE a.cAktiv = 'Y'
|
WHERE a.cAktiv = 'Y'
|
||||||
AND (@kShop = 0 OR EXISTS (
|
AND (@kShop = 0 OR EXISTS (
|
||||||
SELECT 1 FROM dbo.tKategorieArtikel ka
|
SELECT 1 FROM dbo.tKategorieArtikel ka
|
||||||
INNER JOIN dbo.tKategorieShop ks ON ks.kKategorie = ka.kKategorie AND ks.kShop = @kShop
|
INNER JOIN dbo.tKategorieShop ks ON ks.kKategorie = ka.kKategorie AND ks.kShop = @kShop
|
||||||
WHERE ka.kArtikel = a.kArtikel
|
WHERE ka.kArtikel = a.kArtikel
|
||||||
))
|
))
|
||||||
AND (
|
AND rv.lastChanged > @cursor
|
||||||
CONVERT(BIGINT, a.bRowversion) > @cursor
|
ORDER BY rv.lastChanged ASC;
|
||||||
OR (ir.maxImageRV IS NOT NULL AND ir.maxImageRV > @cursor)
|
|
||||||
)
|
|
||||||
ORDER BY lastChanged ASC;
|
|
||||||
`;
|
`;
|
||||||
|
|
||||||
function priceOverridesSql(articleIds) {
|
function priceOverridesSql(articleIds) {
|
||||||
|
|||||||
Reference in New Issue
Block a user