This commit is contained in:
seb
2026-09-25 12:30:45 +02:00
parent b5255bdd17
commit 607e6cc0ac
10 changed files with 98 additions and 124 deletions

View File

@@ -28,27 +28,23 @@ LEFT JOIN article father ON father.id = a.fatherarticle_id
`;
export const RESOLVE_ARTICLE_ACCESS_BY_SKU = `
WITH RECURSIVE article_cat AS (
SELECT a.id AS articleId, ca.category_id AS categoryId
FROM article a INNER JOIN categoryarticle ca ON ca.article_id = a.id
WHERE a.sku = @sku LIMIT 1
), ancestors AS (
SELECT c.id, c.parent_id FROM category c
INNER JOIN article_cat ac ON c.id = ac.categoryId
UNION ALL
SELECT c.id, c.parent_id FROM category c
INNER JOIN ancestors a ON c.id = a.parent_id
), root AS (
SELECT id AS rootCategoryId FROM ancestors WHERE parent_id IS NULL LIMIT 1
)
SELECT ac.articleId, ac.categoryId, r.rootCategoryId,
co.id AS companyId, co.default_language_id AS languageId,
co.poscustomergroup_id AS posCustomerGroupId, cu.id AS companyuserId
FROM article_cat ac
LEFT JOIN root r ON 1 = 1
LEFT JOIN company co ON co.root_category_id = r.rootCategoryId
LEFT JOIN companyuser cu
ON cu.company_id = co.id AND cu.google_auth_id = @googleAuthId
SELECT
a.id AS articleId,
ca.category_id AS categoryId,
co.root_category_id AS rootCategoryId,
co.id AS companyId,
co.default_language_id AS languageId,
co.poscustomergroup_id AS posCustomerGroupId,
cu.id AS companyuserId
FROM article a
INNER JOIN company co ON co.id = a.company_id
INNER JOIN google_auth ga ON ga.id = @googleAuthId
INNER JOIN companyuser cu
ON cu.company_id = a.company_id AND cu.google_auth_id = @googleAuthId
LEFT JOIN categoryarticle ca ON ca.article_id = a.id
WHERE a.sku = @sku
AND (ga.selected_company IS NULL OR a.company_id = ga.selected_company)
LIMIT 1
`;
const JSON_EANS = `(SELECT COALESCE(json_group_array(json_object('ean', ean)), '[]')
@@ -103,27 +99,19 @@ ORDER BY a.id
`;
export const GET_ARTICLE_BY_SKU_FULL = `
WITH RECURSIVE article_cat AS (
SELECT a.id AS articleId, ca.category_id AS categoryId
FROM article a INNER JOIN categoryarticle ca ON ca.article_id = a.id
WHERE a.sku = @sku LIMIT 1
), ancestors AS (
SELECT c.id, c.parent_id FROM category c
INNER JOIN article_cat ac ON c.id = ac.categoryId
UNION ALL
SELECT c.id, c.parent_id FROM category c
INNER JOIN ancestors a ON c.id = a.parent_id
), root AS (
SELECT id AS rootCategoryId FROM ancestors WHERE parent_id IS NULL LIMIT 1
), auth AS (
SELECT ac.articleId, ac.categoryId, r.rootCategoryId,
WITH auth AS (
SELECT a.id AS articleId, ca.category_id AS categoryId, co.root_category_id AS rootCategoryId,
co.id AS companyId, co.default_language_id AS languageId,
co.poscustomergroup_id AS posCustomerGroupId, cu.id AS companyuserId
FROM article_cat ac
LEFT JOIN root r ON 1 = 1
LEFT JOIN company co ON co.root_category_id = r.rootCategoryId
LEFT JOIN companyuser cu
ON cu.company_id = co.id AND cu.google_auth_id = @googleAuthId
FROM article a
INNER JOIN company co ON co.id = a.company_id
INNER JOIN google_auth ga ON ga.id = @googleAuthId
INNER JOIN companyuser cu
ON cu.company_id = a.company_id AND cu.google_auth_id = @googleAuthId
LEFT JOIN categoryarticle ca ON ca.article_id = a.id
WHERE a.sku = @sku
AND (ga.selected_company IS NULL OR a.company_id = ga.selected_company)
LIMIT 1
)
SELECT auth.*,
json_object(