Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
**v0.1.4, to be released on ???**
* New feature: Generation of the driver now takes the choosen configuration into account; see: https://github.com/LiUGraphQL/woo.sh/issues/64

**v0.1.3, released on August 28, 2020**
* New feature: Support for multiple *dependent* mutation operations within a single mutation request; https://github.com/LiUGraphQL/woo.sh/issues/52
Expand Down
1 change: 0 additions & 1 deletion graphql-resolver-generator/generator.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import argparse
import yaml

import yaml
from graphql import build_schema, is_object_type, get_named_type, is_interface_type, assert_valid_schema, is_input_type
from mako.template import Template

Expand Down
10 changes: 9 additions & 1 deletion graphql-server/drivers/arangodb/driver.js
Original file line number Diff line number Diff line change
Expand Up @@ -347,7 +347,9 @@ function createEdge(isRoot, ctxt, varOrSourceID, sourceType, sourceField, varOrT

// define doc
const doc = annotations;
// #IF field_for_creation_date
doc['_creationDate'] = new Date().valueOf();
// #ENDIF
const docVar = addParameterVar(ctxt, createParamVar(ctxt), doc);

// validate edge
Expand Down Expand Up @@ -387,7 +389,9 @@ function create(isRoot, ctxt, data, returnType, info, resVar = null) {

// get non-object fields, add creation date and add as parameter
const doc = getScalarsAndEnums(data, returnType);
// #IF field_for_creation_date
doc['_creationDate'] = new Date().valueOf();
// #ENDIF
const docVar = addParameterVar(ctxt, createParamVar(ctxt), doc);

// create a new resVar if not defined by the calling function, resVar is the source vertex for all edges
Expand Down Expand Up @@ -474,8 +478,10 @@ function updateEdge(isRoot, ctxt, id, data, edgeName, inputToUpdateType, info, r
ctxt.trans.code.push(`\n\t/* update edge ${edgeName} */`);

// define doc
const doc = getScalarsAndEnums(data, info.schema.getType(inputToUpdateType));;
const doc = getScalarsAndEnums(data, info.schema.getType(inputToUpdateType));
// #IF field_for_last_update_date
doc['_lastUpdateDate'] = new Date().valueOf();
// #ENDIF
const docVar = addParameterVar(ctxt, createParamVar(ctxt), doc);
const idVar = addParameterVar(ctxt, createParamVar(ctxt), id);

Expand Down Expand Up @@ -642,7 +648,9 @@ function update(isRoot, ctxt, varOrID, data, returnType, info, resVar = null) {

// get non-object fields, add creation date and add as parameter
let doc = getScalarsAndEnums(data, returnType);
// #IF field_for_last_update_date
doc['_lastUpdateDate'] = new Date().valueOf();
// #ENDIF
let docVar = addParameterVar(ctxt, createParamVar(ctxt), doc);

// create a new resVar if not defined by the calling function, resVar is the source vertex for all edges
Expand Down
45 changes: 45 additions & 0 deletions graphql-server/drivers/driver_parser.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
import argparse
import yaml


def parse(input_file, output_dir, config: dict):
# Simple function to parse a file to remove specific parts depending on the choosen config

input_f = open(input_file, 'r')

output_f = open(output_dir+'\\driver.js',"w")

if_stack = [True]

for line in input_f.readlines():
if line.strip().startswith('// #'):
if line.strip().startswith('// #ENDIF'):
if_stack.pop()
if line.strip().startswith('// #IF'):
sub_line = line.strip()[7:]
if_stack.append(config.get('generation').get(sub_line))
elif if_stack[-1]:
output_f.write(line)

output_f.close()
input_f.close()

def cmd(args):
# load config
config = {}
if args.config:
with open(args.config) as f:
config = yaml.safe_load(f)

parse(args.input, args.output, config)


if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('--input', type=str, required=True,
help='Driver file')
parser.add_argument('--output', type=str,
help='Output directory for new driver file')
parser.add_argument('--config', type=str,
help='Path to configuration file')
cmd(parser.parse_args())
8 changes: 8 additions & 0 deletions woo.sh
Original file line number Diff line number Diff line change
Expand Up @@ -473,3 +473,11 @@ python3 generator.py \
--output ${output_dir} \
--config ${config_file}
cd ..

# parse driver
cd ./graphql-server/drivers
python3 driver_parser.py \
--input ${driver_dir}/driver.js \
--output ${output_dir} \
--config ${config_file}
cd ..