75 lines
3.4 KiB
C++
75 lines
3.4 KiB
C++
#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) > ?";
|
|
|
|
static const char* MAX_ORDER_ID_SQL =
|
|
"SELECT ISNULL(MAX(kPosAuftrag), 0) AS cnt FROM Pos.tAuftragMapping "
|
|
"WHERE kShopSubShop = ?";
|
|
|
|
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::Int,"",k_shop},
|
|
{ParamType::Int,"",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::Int,"",k_shop},
|
|
{ParamType::Int,"",k_shop},{ParamType::BigInt,"",cursor},
|
|
{ParamType::Int,"",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::Int,"",k_shop},{ParamType::Int,"",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}});
|
|
}
|
|
inline int64_t get_max_order_id_count(int k_shop_subshop) {
|
|
if (k_shop_subshop <= 0) return 0;
|
|
return get_pool().execute_scalar(MAX_ORDER_ID_SQL,
|
|
{{ParamType::Int,"",k_shop_subshop}});
|
|
}
|