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"
|
"sharp": "^0.35.3"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=22"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@azure-rest/core-client": {
|
"node_modules/@azure-rest/core-client": {
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
"main": "server.js",
|
"main": "server.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"cert": "node generate-cert.js",
|
"cert": "node generate-cert.js",
|
||||||
"start": "node server.js",
|
"start": "node --watch server.js",
|
||||||
"test:client": "node test-client.js"
|
"test:client": "node test-client.js"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
|
|||||||
@@ -10,7 +10,15 @@ INNER JOIN dbo.tKategorieArtikel ka ON ka.kArtikel = a.kArtikel
|
|||||||
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 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() } = {}) {
|
export async function getProductCount({ cursor = 0, rootCategoryId = getRootCategoryId() } = {}) {
|
||||||
|
|||||||
@@ -14,6 +14,12 @@ 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,
|
||||||
@@ -22,7 +28,11 @@ 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,
|
||||||
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
|
SELECT TOP 1 img.cHash
|
||||||
FROM dbo.tArtikelbildPlattform abp
|
FROM dbo.tArtikelbildPlattform abp
|
||||||
@@ -48,13 +58,17 @@ SELECT TOP (@limit)
|
|||||||
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 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
|
||||||
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 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;
|
ORDER BY lastChanged ASC;
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user