36 lines
1.2 KiB
JavaScript
36 lines
1.2 KiB
JavaScript
import { RESOLVE_ARTICLE_ACCESS_BY_SKU as MSSQL_RESOLVE } from '../../providers/mssql/queries/article.js';
|
|
import { RESOLVE_ARTICLE_ACCESS_BY_SKU as SQLITE_RESOLVE } from '../../providers/sqlite3/queries/article.js';
|
|
import makeRunner from '../runner.js';
|
|
|
|
export default function resolveArticleBySku(provider) {
|
|
const sql =
|
|
provider?.dialect === 'sqlite3' ? SQLITE_RESOLVE : MSSQL_RESOLVE;
|
|
|
|
return async (googleAuthId, sku, tx) => {
|
|
const runner = makeRunner(provider, tx);
|
|
const result = await runner.query(sql, { sku, googleAuthId });
|
|
|
|
const row = result.rows[0];
|
|
if (!row?.articleId || !row?.categoryId) {
|
|
throw new Error('Article not found');
|
|
}
|
|
if (!row.companyId || !row.rootCategoryId || !row.languageId) {
|
|
throw new Error('Parent not found');
|
|
}
|
|
if (!row.companyuserId) {
|
|
throw new Error('Not authorized');
|
|
}
|
|
|
|
return {
|
|
articleId: row.articleId,
|
|
categoryId: row.categoryId,
|
|
languageId: row.languageId,
|
|
companyId: row.companyId,
|
|
rootCategoryId: row.rootCategoryId,
|
|
posCustomerGroupId: row.posCustomerGroupId ?? null,
|
|
companyuserId: row.companyuserId,
|
|
};
|
|
};
|
|
}
|
|
|