UNPKG

@tpluscode/sparql-builder

Version:

Simple JS library to build SPARQL queries

40 lines (39 loc) 1.03 kB
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 ``; }, });