-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
73 lines (67 loc) · 1.99 KB
/
index.js
File metadata and controls
73 lines (67 loc) · 1.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
module.exports = class {
constructor(type) {
this.type = type
this.queries = []
}
addQuery(obj) {
let nodes = '', args = ''
if (obj.nodes) {
Object.keys(obj.nodes).map((key) => {
let node = obj.nodes[key]
if (typeof node === 'object') {
nodes += this.addQuery({
nodes: node,
name: key,
returnNode: true,
})
} else {
nodes += ` ${key} `
}
})
}
if (obj.args) {
Object.keys(obj.args).map((key) => {
let arg = obj.args[key]
if (typeof arg === 'object') {
args += `${this.addQuery({
args: arg,
returnArgs: true,
name: key
})}`
} else {
let qoutes = ''
if (typeof arg == 'string')
qoutes = '"'
args += ` ${key}: ${qoutes}${arg}${qoutes} `
}
})
}
if (obj.args && Object.keys(obj.args).length > 0 && !obj.returnArgs) {
args = `(${args})`
}
if (obj.returnNode) {
if (nodes == '') {
return `${obj.name}`
} else {
return `${obj.name}{
${nodes}
}`
}
} else if (obj.returnArgs) {
return `${obj.name}: {${args}}`
} else {
if (nodes == '') {
this.queries.push(`${obj.name} ${args}`)
} else {
this.queries.push(`${obj.name} ${args} {
${nodes}
}`)
}
}
}
getGraphQLString() {
return `${this.type ? this.type : ''}{
${this.queries.join(' ')}
}`
}
}