Skip to content

Commit c7ac41e

Browse files
committed
Initial commit
0 parents  commit c7ac41e

13 files changed

+1831
-0
lines changed

.eslintrc.json

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"env": {
3+
"commonjs": true,
4+
"es6": true,
5+
"node": true
6+
},
7+
"extends": [
8+
"standard"
9+
],
10+
"globals": {
11+
"Atomics": "readonly",
12+
"SharedArrayBuffer": "readonly"
13+
},
14+
"parserOptions": {
15+
"ecmaVersion": 2018
16+
},
17+
"rules": {
18+
}
19+
}

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
node_modules/

format-order-by.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
module.exports = function formatOrderBy (inputOrders) {
2+
if (!inputOrders) return inputOrders
3+
4+
if (!Array.isArray(inputOrders)) inputOrders = [inputOrders]
5+
6+
return inputOrders.map(o => {
7+
const [column, order] = o.split('_')
8+
return { column, order }
9+
})
10+
}

format-query.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
const cloneDeep = require('lodash.clonedeep')
2+
3+
const formatOr = require('./parts/format-or')
4+
const formatAnd = require('./parts/format-and')
5+
const validateRelations = require('./parts/validate-relations')
6+
const formatRelations = require('./parts/format-relations')
7+
const parseKeys = require('./parts/parse-keys')
8+
9+
module.exports = function (relations) {
10+
return function formatQuery (inputQuery, relatedName) {
11+
if (!inputQuery) return inputQuery
12+
13+
let queries = formatOr(cloneDeep(inputQuery))
14+
queries = formatAnd(queries)
15+
validateRelations(queries, { relations })
16+
queries = formatRelations(queries, { relations, formatQuery })
17+
queries = parseKeys(queries, relatedName)
18+
19+
return queries
20+
}
21+
}

index.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
const formatQuery = require('./format-query')
2+
const formatOrderBy = require('./format-order-by')
3+
4+
module.exports = function openCrudParser (relations) {
5+
return {
6+
formatQuery: formatQuery(relations),
7+
formatOrderBy
8+
}
9+
}

0 commit comments

Comments
 (0)