import { LIST_MANIFESTS as MSSQL_LIST, ORDER_TYPE as MSSQL_ORDER_TYPE, } from '../../providers/mssql/queries/manifestDoc.js'; import { LIST_MANIFESTS as SQLITE_LIST, ORDER_TYPE as SQLITE_ORDER_TYPE, } from '../../providers/sqlite3/queries/manifestDoc.js'; import resolveSelectedCompanyAccess from '../companyuser/resolveSelectedCompanyAccess.js'; import { shapeSummary } from '../manifestDoc/helpers.js'; import makeRunner from '../runner.js'; export default function list(provider) { const access = resolveSelectedCompanyAccess(provider); const isSqlite = provider?.dialect === 'sqlite3'; const sql = isSqlite ? SQLITE_LIST : MSSQL_LIST; const orderType = isSqlite ? SQLITE_ORDER_TYPE : MSSQL_ORDER_TYPE; /** * Lists the orders of the user's selected company. * * @param {number} googleAuthId - The id of the Google auth user. * @param {object} [tx] - Optional transaction. * @returns {Promise>} The orders. * * @example * const orders = await store.order.list(42); * // => [{ id, number, type, entityId, externalNumber, date }] */ return async (googleAuthId, tx) => { const runner = makeRunner(provider, tx); const { companyId } = await access(googleAuthId, runner); const result = await runner.query(sql, { companyId, type: orderType, }); return result.rows.map((row) => shapeSummary(orderType, row)); }; }