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