u
This commit is contained in:
@@ -11,7 +11,7 @@ export default function getCategoryArticles(provider) {
|
||||
* @param {number} googleAuthId - The id of the Google auth user.
|
||||
* @param {number} categoryId - The id of the category.
|
||||
* @param {object} [tx] - Optional transaction to run within.
|
||||
* @returns {Promise<Array<{id: number, sku: string, name: string, slug: string, net: number|null, taxRate: number|null, optionsCount: number, articleListCount: number, childCount: number, parentArticleId: number|null, parentSku: string|null, fullHash: string|null, thumbW: number|null, thumbH: number|null, thumbHash: string|null, brand: {id: number|null, name: string, fullHash: string|null, thumbW: number|null, thumbH: number|null, thumbHash: string|null}|null}>>} The articles in the category.
|
||||
* @returns {Promise<Array<{id: number, sku: string, name: string, slug: string, net: number|null, taxRate: number|null, optionsCount: number, articleListCount: number, childCount: number, parentArticleId: number|null, parentSku: string|null, fullHash: string|null, thumbW: number|null, thumbH: number|null, thumbHash: string|null, brand: {id: number|null, name: string, fullHash: string|null, thumbW: number|null, thumbH: number|null, thumbHash: string|null}|null, articlewarehousesummary: Array<{id: number, articleId: number, warehouseId: number, warehouseName: string, stock: number}>, warehouses: Array<{id: number, name: string, stock: number}>}>>} The articles in the category.
|
||||
*
|
||||
* @example
|
||||
* const articles = await store.category.getCategoryArticles(42, 5);
|
||||
|
||||
@@ -1,17 +1,48 @@
|
||||
import { GET_CATEGORY_ARTICLES as MSSQL_GET } from '../../providers/mssql/queries/category.js';
|
||||
import { GET_CATEGORY_ARTICLES as SQLITE_GET } from '../../providers/sqlite3/queries/category.js';
|
||||
import {
|
||||
GET_CATEGORY_ARTICLES as MSSQL_GET,
|
||||
GET_CATEGORY_ARTICLE_WAREHOUSE_SUMMARIES as MSSQL_SUMMARIES,
|
||||
} from '../../providers/mssql/queries/category.js';
|
||||
import {
|
||||
GET_CATEGORY_ARTICLES as SQLITE_GET,
|
||||
GET_CATEGORY_ARTICLE_WAREHOUSE_SUMMARIES as SQLITE_SUMMARIES,
|
||||
} 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;
|
||||
|
||||
return async ({ categoryId, languageId, posCustomerGroupId }, tx) => {
|
||||
const result = await makeRunner(provider, tx).query(sql, {
|
||||
const runner = makeRunner(provider, tx);
|
||||
const result = await runner.query(sql, {
|
||||
categoryId,
|
||||
languageId,
|
||||
posCustomerGroupId,
|
||||
});
|
||||
|
||||
if (result.rows.length === 0) {
|
||||
return [];
|
||||
}
|
||||
|
||||
const summaryResult = await runner.query(sqlSummaries, { categoryId });
|
||||
const summaryMap = new Map();
|
||||
for (const s of summaryResult.rows) {
|
||||
let list = summaryMap.get(s.articleId);
|
||||
if (!list) {
|
||||
list = [];
|
||||
summaryMap.set(s.articleId, list);
|
||||
}
|
||||
list.push({
|
||||
id: s.id,
|
||||
articleId: s.articleId,
|
||||
article_id: s.articleId,
|
||||
warehouseId: s.warehouseId,
|
||||
warehouse_id: s.warehouseId,
|
||||
warehouseName: s.warehouseName,
|
||||
stock: Number(s.stock ?? 0),
|
||||
});
|
||||
}
|
||||
|
||||
return result.rows.map((row) => {
|
||||
const {
|
||||
brandId,
|
||||
@@ -22,6 +53,7 @@ export default function queryCategoryArticles(provider) {
|
||||
brandThumbHash,
|
||||
...rest
|
||||
} = row;
|
||||
const summaries = summaryMap.get(row.id) ?? [];
|
||||
return {
|
||||
...rest,
|
||||
track_stock: Boolean(rest.track_stock ?? 0),
|
||||
@@ -38,7 +70,14 @@ export default function queryCategoryArticles(provider) {
|
||||
thumbHash: brandThumbHash ?? null,
|
||||
}
|
||||
: null,
|
||||
articlewarehousesummary: summaries,
|
||||
warehouses: summaries.map((s) => ({
|
||||
id: s.warehouseId,
|
||||
name: s.warehouseName,
|
||||
stock: s.stock,
|
||||
})),
|
||||
};
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user