This commit is contained in:
seb
2026-07-13 07:34:17 +02:00
parent d471f2411d
commit b7b76c9d39
46 changed files with 39025 additions and 7 deletions

View File

@@ -0,0 +1,65 @@
#pragma once
#include "../db/pool.hpp"
static const char* CATEGORY_COUNT_SQL =
"WITH CategoryTree AS ("
" SELECT kKategorie FROM dbo.tKategorie WHERE kKategorie = ?"
" UNION ALL"
" SELECT t.kKategorie FROM dbo.tKategorie t"
" INNER JOIN CategoryTree ct ON t.kOberKategorie = ct.kKategorie"
") SELECT COUNT(*) AS cnt FROM dbo.tKategorie k "
"WHERE k.kKategorie IN (SELECT kKategorie FROM CategoryTree) "
"AND (? = 0 OR EXISTS (SELECT 1 FROM dbo.tKategorieShop ks "
"WHERE ks.kKategorie = k.kKategorie AND ks.kShop = ?)) "
"AND CONVERT(BIGINT, k.bRowversion) > ?";
static const char* PRODUCT_COUNT_SQL =
"WITH CategoryTree AS ("
" SELECT kKategorie FROM dbo.tKategorie WHERE kKategorie = ?"
" UNION ALL"
" SELECT t.kKategorie FROM dbo.tKategorie t"
" INNER JOIN CategoryTree ct ON t.kOberKategorie = ct.kKategorie"
") SELECT COUNT(DISTINCT a.kArtikel) AS cnt 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 (? = 0 OR EXISTS (SELECT 1 FROM dbo.tKategorieShop ks "
"WHERE ks.kKategorie = ka.kKategorie AND ks.kShop = ?)) "
"AND (CONVERT(BIGINT, a.bRowversion) > ? "
"OR EXISTS (SELECT 1 FROM dbo.tArtikelbildPlattform abp "
"WHERE abp.kArtikel = a.kArtikel AND abp.kShop = ? "
"AND CONVERT(BIGINT, abp.bRowversion) > ?))";
static const char* COMPOSITE_PRODUCT_COUNT_SQL =
"SELECT COUNT(DISTINCT a.kArtikel) AS cnt FROM dbo.tArtikel a "
"INNER JOIN dbo.tStueckliste s ON s.kStueckliste = a.kStueckliste "
"WHERE a.kStueckliste <> 0 "
"AND (? = 0 OR EXISTS (SELECT 1 FROM dbo.tKategorieArtikel ka "
"INNER JOIN dbo.tKategorieShop ks ON ks.kKategorie = ka.kKategorie "
"AND ks.kShop = ? WHERE ka.kArtikel = a.kArtikel)) "
"AND CONVERT(BIGINT, a.bRowversion) > ?";
static const char* DELETED_ENTITY_COUNT_SQL =
"SELECT COUNT(*) AS cnt FROM Pos.vDeletedEntity "
"WHERE CONVERT(BIGINT, vDeletedEntity.bLastChanged) > ?";
inline int64_t get_category_count(int64_t root_cat, int k_shop, int64_t cursor) {
return get_pool().execute_scalar(CATEGORY_COUNT_SQL,
{{ParamType::BigInt,"",root_cat},{ParamType::BigInt,"",k_shop},
{ParamType::BigInt,"",k_shop},{ParamType::BigInt,"",cursor}});
}
inline int64_t get_product_count(int64_t root_cat, int k_shop, int64_t cursor) {
return get_pool().execute_scalar(PRODUCT_COUNT_SQL,
{{ParamType::BigInt,"",root_cat},{ParamType::BigInt,"",k_shop},
{ParamType::BigInt,"",k_shop},{ParamType::BigInt,"",cursor},
{ParamType::BigInt,"",k_shop},{ParamType::BigInt,"",cursor}});
}
inline int64_t get_composite_count(int k_shop, int64_t cursor) {
return get_pool().execute_scalar(COMPOSITE_PRODUCT_COUNT_SQL,
{{ParamType::BigInt,"",k_shop},{ParamType::BigInt,"",k_shop},
{ParamType::BigInt,"",cursor}});
}
inline int64_t get_deleted_count(int64_t cursor) {
return get_pool().execute_scalar(DELETED_ENTITY_COUNT_SQL,
{{ParamType::BigInt,"",cursor}});
}