u
This commit is contained in:
@@ -21,25 +21,121 @@ export default function setOff(provider) {
|
||||
? SQLITE_LIST_CATEGORY_IDS
|
||||
: MSSQL_LIST_CATEGORY_IDS;
|
||||
|
||||
const addCategoryObituarySql = `
|
||||
INSERT INTO posterminalobituary (posterminal_id, entity_type, entity_id)
|
||||
VALUES (@posterminalId, 'category', @categoryId)
|
||||
`;
|
||||
|
||||
const addArticleObituariesSql = `
|
||||
INSERT INTO posterminalobituary (posterminal_id, entity_type, entity_id)
|
||||
SELECT DISTINCT @posterminalId, 'article', ca.article_id
|
||||
FROM categoryarticle ca
|
||||
WHERE ca.category_id = @categoryId
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM categoryarticle ca2
|
||||
INNER JOIN posterminalcategory pc ON pc.category_id = ca2.category_id
|
||||
WHERE ca2.article_id = ca.article_id
|
||||
AND pc.posterminal_id = @posterminalId
|
||||
AND pc.category_id <> @categoryId
|
||||
const touchSql = isSqlite
|
||||
? `WITH RECURSIVE cats AS (
|
||||
SELECT id FROM category WHERE id = @categoryId
|
||||
UNION ALL
|
||||
SELECT c.id FROM category c INNER JOIN cats ON c.parent_id = cats.id
|
||||
)
|
||||
`;
|
||||
UPDATE category SET updated_at = strftime('%Y-%m-%dT%H:%M:%fZ', 'now')
|
||||
WHERE id IN (SELECT id FROM cats)`
|
||||
: `;WITH cats AS (
|
||||
SELECT id FROM category WHERE id = @categoryId
|
||||
UNION ALL
|
||||
SELECT c.id FROM category c INNER JOIN cats ON c.parent_id = cats.id
|
||||
)
|
||||
UPDATE category SET updated_at = SYSUTCDATETIME()
|
||||
WHERE id IN (SELECT id FROM cats)`;
|
||||
|
||||
const touchArticlesSql = isSqlite
|
||||
? `WITH RECURSIVE cats AS (
|
||||
SELECT id FROM category WHERE id = @categoryId
|
||||
UNION ALL
|
||||
SELECT c.id FROM category c INNER JOIN cats ON c.parent_id = cats.id
|
||||
)
|
||||
UPDATE article
|
||||
SET updated_at = strftime('%Y-%m-%dT%H:%M:%fZ', 'now')
|
||||
WHERE id IN (
|
||||
SELECT ca.article_id FROM categoryarticle ca WHERE ca.category_id IN (SELECT id FROM cats)
|
||||
UNION
|
||||
SELECT child.id FROM article child
|
||||
WHERE child.parentarticle_id IN (
|
||||
SELECT ca.article_id FROM categoryarticle ca WHERE ca.category_id IN (SELECT id FROM cats)
|
||||
)
|
||||
UNION
|
||||
SELECT parent.parentarticle_id FROM article parent
|
||||
WHERE parent.id IN (
|
||||
SELECT ca.article_id FROM categoryarticle ca WHERE ca.category_id IN (SELECT id FROM cats)
|
||||
) AND parent.parentarticle_id IS NOT NULL
|
||||
)`
|
||||
: `;WITH cats AS (
|
||||
SELECT id FROM category WHERE id = @categoryId
|
||||
UNION ALL
|
||||
SELECT c.id FROM category c INNER JOIN cats ON c.parent_id = cats.id
|
||||
)
|
||||
UPDATE article
|
||||
SET updated_at = SYSUTCDATETIME()
|
||||
WHERE id IN (
|
||||
SELECT ca.article_id FROM categoryarticle ca WHERE ca.category_id IN (SELECT id FROM cats)
|
||||
UNION
|
||||
SELECT child.id FROM article child
|
||||
WHERE child.parentarticle_id IN (
|
||||
SELECT ca.article_id FROM categoryarticle ca WHERE ca.category_id IN (SELECT id FROM cats)
|
||||
)
|
||||
UNION
|
||||
SELECT parent.parentarticle_id FROM article parent
|
||||
WHERE parent.id IN (
|
||||
SELECT ca.article_id FROM categoryarticle ca WHERE ca.category_id IN (SELECT id FROM cats)
|
||||
) AND parent.parentarticle_id IS NOT NULL
|
||||
)`;
|
||||
|
||||
const addCategoryObituarySql = isSqlite
|
||||
? `WITH RECURSIVE cats AS (
|
||||
SELECT id FROM category WHERE id = @categoryId
|
||||
UNION ALL
|
||||
SELECT c.id FROM category c INNER JOIN cats ON c.parent_id = cats.id
|
||||
)
|
||||
INSERT INTO posterminalobituary (posterminal_id, entity_type, entity_id)
|
||||
SELECT pc.posterminal_id, 'category', pc.category_id
|
||||
FROM posterminalcategory pc
|
||||
WHERE pc.posterminal_id = @posterminalId
|
||||
AND pc.category_id IN (SELECT id FROM cats)`
|
||||
: `;WITH cats AS (
|
||||
SELECT id FROM category WHERE id = @categoryId
|
||||
UNION ALL
|
||||
SELECT c.id FROM category c INNER JOIN cats ON c.parent_id = cats.id
|
||||
)
|
||||
INSERT INTO posterminalobituary (posterminal_id, entity_type, entity_id)
|
||||
SELECT pc.posterminal_id, 'category', pc.category_id
|
||||
FROM posterminalcategory pc
|
||||
WHERE pc.posterminal_id = @posterminalId
|
||||
AND pc.category_id IN (SELECT id FROM cats)`;
|
||||
|
||||
const addArticleObituariesSql = isSqlite
|
||||
? `WITH RECURSIVE cats AS (
|
||||
SELECT id FROM category WHERE id = @categoryId
|
||||
UNION ALL
|
||||
SELECT c.id FROM category c INNER JOIN cats ON c.parent_id = cats.id
|
||||
)
|
||||
INSERT INTO posterminalobituary (posterminal_id, entity_type, entity_id)
|
||||
SELECT DISTINCT @posterminalId, 'article', ca.article_id
|
||||
FROM categoryarticle ca
|
||||
WHERE ca.category_id IN (SELECT id FROM cats)
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM categoryarticle ca2
|
||||
INNER JOIN posterminalcategory pc ON pc.category_id = ca2.category_id
|
||||
WHERE ca2.article_id = ca.article_id
|
||||
AND pc.posterminal_id = @posterminalId
|
||||
AND pc.category_id NOT IN (SELECT id FROM cats)
|
||||
)`
|
||||
: `;WITH cats AS (
|
||||
SELECT id FROM category WHERE id = @categoryId
|
||||
UNION ALL
|
||||
SELECT c.id FROM category c INNER JOIN cats ON c.parent_id = cats.id
|
||||
)
|
||||
INSERT INTO posterminalobituary (posterminal_id, entity_type, entity_id)
|
||||
SELECT DISTINCT @posterminalId, 'article', ca.article_id
|
||||
FROM categoryarticle ca
|
||||
WHERE ca.category_id IN (SELECT id FROM cats)
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM categoryarticle ca2
|
||||
INNER JOIN posterminalcategory pc ON pc.category_id = ca2.category_id
|
||||
WHERE ca2.article_id = ca.article_id
|
||||
AND pc.posterminal_id = @posterminalId
|
||||
AND pc.category_id NOT IN (SELECT id FROM cats)
|
||||
)`;
|
||||
|
||||
/**
|
||||
* Removes a category assignment from a posterminal (turns it off).
|
||||
@@ -84,6 +180,9 @@ export default function setOff(provider) {
|
||||
categoryId,
|
||||
});
|
||||
|
||||
await runner.query(touchSql, { categoryId });
|
||||
await runner.query(touchArticlesSql, { categoryId });
|
||||
|
||||
const result = await runner.query(listCatIdsSql, { posterminalId });
|
||||
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user