@tpluscode/sparql-builder
Version:
Simple JS library to build SPARQL queries
40 lines (39 loc) • 1.03 kB
JavaScript
import { sparql } from '@tpluscode/rdf-string';
function addOrder(builder) {
return (variable, desc) => {
const thenBuilder = {
...builder,
orderConditions: [
...builder.orderConditions, {
variable,
desc,
}
],
};
return {
...thenBuilder,
THEN: {
BY: addOrder(thenBuilder),
},
};
};
}
export default () => ({
orderConditions: [],
ORDER() {
return {
BY: addOrder(this),
};
},
orderClause() {
if (this.orderConditions.some(Boolean)) {
return this.orderConditions.reduce((result, condition) => {
if (condition.desc) {
return sparql `${result} desc(${condition.variable})`;
}
return sparql `${result} ${condition.variable}`;
}, sparql `ORDER BY`);
}
return sparql ``;
},
});