u
This commit is contained in:
52
check-image-rv.mjs
Normal file
52
check-image-rv.mjs
Normal file
@@ -0,0 +1,52 @@
|
||||
import sql from 'mssql';
|
||||
import 'dotenv/config';
|
||||
|
||||
const config = {
|
||||
server: process.env.MSSQL_SERVER || 'localhost',
|
||||
port: Number(process.env.MSSQL_PORT) || 1433,
|
||||
database: process.env.MSSQL_DATABASE || 'Mandant_3',
|
||||
user: process.env.MSSQL_USER,
|
||||
password: process.env.MSSQL_PASSWORD,
|
||||
options: {
|
||||
encrypt: process.env.MSSQL_ENCRYPT !== 'false',
|
||||
trustServerCertificate: process.env.MSSQL_TRUST_SERVER_CERTIFICATE !== 'false',
|
||||
},
|
||||
};
|
||||
|
||||
async function main() {
|
||||
try {
|
||||
const pool = await sql.connect(config);
|
||||
|
||||
const result = await pool.request().query(`
|
||||
SELECT
|
||||
a.kArtikel as id, a.cArtNr as sku,
|
||||
CONVERT(BIGINT, a.bRowversion) as articleRV,
|
||||
MAX(CONVERT(BIGINT, abp.bRowversion)) as maxImageRV,
|
||||
CASE
|
||||
WHEN MAX(CONVERT(BIGINT, abp.bRowversion)) IS NOT NULL
|
||||
AND MAX(CONVERT(BIGINT, abp.bRowversion)) > CONVERT(BIGINT, a.bRowversion)
|
||||
THEN MAX(CONVERT(BIGINT, abp.bRowversion))
|
||||
ELSE CONVERT(BIGINT, a.bRowversion)
|
||||
END as effectiveLastChanged
|
||||
FROM dbo.tArtikel a
|
||||
INNER JOIN dbo.tArtikelBeschreibung ab ON ab.kArtikel = a.kArtikel AND ab.kSprache = 1
|
||||
LEFT JOIN dbo.tArtikelbildPlattform abp ON abp.kArtikel = a.kArtikel AND abp.kShop = 1
|
||||
WHERE a.cAktiv = 'Y'
|
||||
GROUP BY a.kArtikel, a.cArtNr, a.bRowversion
|
||||
ORDER BY a.kArtikel
|
||||
`);
|
||||
|
||||
console.log('Product effective lastChanged (with image RV for shop 1):');
|
||||
for (const row of result.recordset) {
|
||||
const diff = row.maxImageRV && row.maxImageRV > row.articleRV ? ' (IMAGE RV HIGHER!)' : '';
|
||||
console.log(' ID: ' + row.id + ', SKU: ' + row.sku + ', articleRV: ' + row.articleRV + ', maxImageRV: ' + (row.maxImageRV || 'none') + ', effective: ' + row.effectiveLastChanged + diff);
|
||||
}
|
||||
|
||||
await pool.close();
|
||||
} catch (err) {
|
||||
console.error('Error:', err.message);
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
main();
|
||||
2
package-lock.json
generated
2
package-lock.json
generated
@@ -16,7 +16,7 @@
|
||||
"sharp": "^0.35.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
"node": ">=22"
|
||||
}
|
||||
},
|
||||
"node_modules/@azure-rest/core-client": {
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
"main": "server.js",
|
||||
"scripts": {
|
||||
"cert": "node generate-cert.js",
|
||||
"start": "node server.js",
|
||||
"start": "node --watch server.js",
|
||||
"test:client": "node test-client.js"
|
||||
},
|
||||
"engines": {
|
||||
|
||||
@@ -10,7 +10,15 @@ 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;
|
||||
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() } = {}) {
|
||||
|
||||
@@ -14,6 +14,12 @@ WITH TaxRates AS (
|
||||
SELECT kSteuerklasse, fSteuersatz
|
||||
FROM dbo.tSteuersatz
|
||||
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)
|
||||
a.kArtikel AS id,
|
||||
@@ -22,7 +28,11 @@ SELECT TOP (@limit)
|
||||
a.fVKNetto AS netPrice,
|
||||
tr.fSteuersatz AS taxRate,
|
||||
a.dErstelldatum AS createdAt,
|
||||
CONVERT(BIGINT, a.bRowversion) AS lastChanged,
|
||||
CASE
|
||||
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
|
||||
FROM dbo.tArtikelbildPlattform abp
|
||||
@@ -48,13 +58,17 @@ SELECT TOP (@limit)
|
||||
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
|
||||
LEFT JOIN ImageRV ir ON ir.kArtikel = a.kArtikel
|
||||
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
|
||||
AND (
|
||||
CONVERT(BIGINT, a.bRowversion) > @cursor
|
||||
OR (ir.maxImageRV IS NOT NULL AND ir.maxImageRV > @cursor)
|
||||
)
|
||||
ORDER BY lastChanged ASC;
|
||||
`;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user