Files
klz-cables.com/.pnpm-store/v10/files/88/ce72d16f547d30bdce2e204654b29d9705f74d78aeaeb1770a2e7b663494dd12ee7cf55f0f119209835c0a2ab082eb17e892ed840fda49bbcdc58347e77a8a
Marc Mintel 5397309103
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
fix(products): fix breadcrumbs and product filtering (backport from main)
2026-02-24 16:04:21 +01:00

28 lines
962 B
Plaintext

import { sql } from 'drizzle-orm';
export function jsonAgg(adapter, expression) {
if (adapter.name === 'sqlite') {
return sql`coalesce(json_group_array(${expression}), '[]')`;
}
return sql`coalesce(json_agg(${expression}), '[]'::json)`;
}
/**
* @param shape Potential for SQL injections, so you shouldn't allow user-specified key names
*/ export function jsonBuildObject(adapter, shape) {
const chunks = [];
Object.entries(shape).forEach(([key, value])=>{
if (chunks.length > 0) {
chunks.push(sql.raw(','));
}
chunks.push(sql.raw(`'${key}',`));
chunks.push(sql`${value}`);
});
if (adapter.name === 'sqlite') {
return sql`json_object(${sql.join(chunks)})`;
}
return sql`json_build_object(${sql.join(chunks)})`;
}
export const jsonAggBuildObject = (adapter, shape)=>{
return jsonAgg(adapter, jsonBuildObject(adapter, shape));
};
//# sourceMappingURL=json.js.map