u
This commit is contained in:
@@ -29,6 +29,8 @@ export const ARTICLE_LIST_COLUMNS = `
|
||||
a.sku,
|
||||
at.name,
|
||||
at.slug,
|
||||
ISNULL(LEN(at.[desc]), 0) AS descLength,
|
||||
at.seo AS seo,
|
||||
pr.net,
|
||||
t.rate AS taxRate,
|
||||
a.track_stock,
|
||||
|
||||
@@ -82,6 +82,16 @@ WHERE ca.category_id = @categoryId
|
||||
ORDER BY w.sort ASC, w.name ASC, aws.id ASC
|
||||
`;
|
||||
|
||||
export const GET_CATEGORY_ARTICLE_EANS = `
|
||||
SELECT
|
||||
ae.article_id AS articleId,
|
||||
ae.ean
|
||||
FROM articleean ae
|
||||
INNER JOIN categoryarticle ca ON ca.article_id = ae.article_id
|
||||
WHERE ca.category_id = @categoryId
|
||||
ORDER BY ae.ean ASC
|
||||
`;
|
||||
|
||||
export const CREATE = `
|
||||
INSERT INTO category (parent_id, sort)
|
||||
OUTPUT INSERTED.id, INSERTED.parent_id AS parentId, INSERTED.sort
|
||||
|
||||
@@ -5,6 +5,7 @@ import { ARTICLE_LIST_COLUMNS, ARTICLE_LIST_JOINS } from './article.js';
|
||||
const queries = translateQueries(source, 'category');
|
||||
export const {
|
||||
CREATE, DELETE, GET_BY_PARENT_AND_NAME,
|
||||
GET_CATEGORY_ARTICLE_EANS,
|
||||
GET_CATEGORY_ARTICLE_WAREHOUSE_SUMMARIES,
|
||||
GET_NEXT_SIBLING_SORT, LIST_CHILD_IDS,
|
||||
LIST_CHILD_CATEGORIES,
|
||||
|
||||
@@ -33,6 +33,7 @@ export function sqliteQuery(sql) {
|
||||
let result = quoteIdentifiers(sql)
|
||||
.replace(/\bWITH\s*\(\s*(?:NOLOCK|UPDLOCK|ROWLOCK|HOLDLOCK|READPAST)(?:\s*,\s*(?:NOLOCK|UPDLOCK|ROWLOCK|HOLDLOCK|READPAST))*\s*\)/gi, '')
|
||||
.replace(/\bISNULL\s*\(/gi, 'IFNULL(')
|
||||
.replace(/\bLEN\s*\(/gi, 'LENGTH(')
|
||||
.replace(/\bSYSUTCDATETIME\s*\(\s*\)/gi, "strftime('%Y-%m-%dT%H:%M:%fZ', 'now')")
|
||||
.replace(/\bDATEDIFF_BIG\s*\(\s*second\s*,\s*'1970-01-01'\s*,\s*([^)]+?)\s*\)/gi, "CAST(strftime('%s', $1) AS INTEGER)")
|
||||
.replace(/\bCAST\s*\(([^()]+?)\s+AS\s+INT\s*\)/gi, 'CAST($1 AS INTEGER)')
|
||||
|
||||
@@ -1,16 +1,19 @@
|
||||
import {
|
||||
GET_CATEGORY_ARTICLES as MSSQL_GET,
|
||||
GET_CATEGORY_ARTICLE_WAREHOUSE_SUMMARIES as MSSQL_SUMMARIES,
|
||||
GET_CATEGORY_ARTICLE_EANS as MSSQL_EANS,
|
||||
} from '../../providers/mssql/queries/category.js';
|
||||
import {
|
||||
GET_CATEGORY_ARTICLES as SQLITE_GET,
|
||||
GET_CATEGORY_ARTICLE_WAREHOUSE_SUMMARIES as SQLITE_SUMMARIES,
|
||||
GET_CATEGORY_ARTICLE_EANS as SQLITE_EANS,
|
||||
} from '../../providers/sqlite3/queries/category.js';
|
||||
import makeRunner from '../runner.js';
|
||||
|
||||
export default function queryCategoryArticles(provider) {
|
||||
const sql = provider?.dialect === 'sqlite3' ? SQLITE_GET : MSSQL_GET;
|
||||
const sqlSummaries = provider?.dialect === 'sqlite3' ? SQLITE_SUMMARIES : MSSQL_SUMMARIES;
|
||||
const sqlEans = provider?.dialect === 'sqlite3' ? SQLITE_EANS : MSSQL_EANS;
|
||||
|
||||
return async ({ categoryId, languageId, posCustomerGroupId }, tx) => {
|
||||
const runner = makeRunner(provider, tx);
|
||||
@@ -43,6 +46,19 @@ export default function queryCategoryArticles(provider) {
|
||||
});
|
||||
}
|
||||
|
||||
const eanResult = await runner.query(sqlEans, { categoryId });
|
||||
const eanMap = new Map();
|
||||
for (const e of eanResult.rows) {
|
||||
let list = eanMap.get(e.articleId);
|
||||
if (!list) {
|
||||
list = [];
|
||||
eanMap.set(e.articleId, list);
|
||||
}
|
||||
if (e.ean) {
|
||||
list.push(e.ean);
|
||||
}
|
||||
}
|
||||
|
||||
return result.rows.map((row) => {
|
||||
const {
|
||||
brandId,
|
||||
@@ -54,8 +70,10 @@ export default function queryCategoryArticles(provider) {
|
||||
...rest
|
||||
} = row;
|
||||
const summaries = summaryMap.get(row.id) ?? [];
|
||||
const eans = eanMap.get(row.id) ?? [];
|
||||
return {
|
||||
...rest,
|
||||
eans,
|
||||
smallThumbW: rest.smallThumbW != null ? Number(rest.smallThumbW) : null,
|
||||
smallThumbH: rest.smallThumbH != null ? Number(rest.smallThumbH) : null,
|
||||
smallThumbBinary: rest.smallThumbBinary
|
||||
|
||||
Reference in New Issue
Block a user