From 14be2c24339259539cfc4f98ab13ec20f7d55e68 Mon Sep 17 00:00:00 2001 From: Michael Merrill Date: Mon, 3 Apr 2017 20:16:27 -0600 Subject: [PATCH 1/2] Add rethinkdb --- api/config.js | 5 +++++ api/package.json | 1 + api/resolvers.js | 25 +++++++++++++++++++------ api/rethinkdb.js | 10 ++++++++++ 4 files changed, 35 insertions(+), 6 deletions(-) create mode 100644 api/rethinkdb.js diff --git a/api/config.js b/api/config.js index 8d45014..f1398b9 100644 --- a/api/config.js +++ b/api/config.js @@ -2,3 +2,8 @@ import path from 'path' export const distPath = path.resolve(__dirname, 'dist') export const apiEndpoint = '/graphql' +export const rethinkdb = { + host: 'localhost', + port: 28015, + db: 'test' +} diff --git a/api/package.json b/api/package.json index 211041e..86ddda9 100644 --- a/api/package.json +++ b/api/package.json @@ -16,6 +16,7 @@ "koa-bodyparser": "^4.2.0", "koa-compress": "^2.0.0", "koa-router": "^7.1.1", + "rethinkdbdash": "^2.3.28", "source-map-support": "^0.4.14", "webpack": "^2.3.2", "zoo": "^0.1.9" diff --git a/api/resolvers.js b/api/resolvers.js index 9d64b08..b25f3c1 100644 --- a/api/resolvers.js +++ b/api/resolvers.js @@ -1,3 +1,12 @@ +import getRethinkDB from './rethinkdb' + +const getNewVal = (result) => { + if (result.changes.length === 1) { + return result.changes[0].new_val + } + return result.changes.map((file) => file.new_val) +} + export default { Query: { ignore () { @@ -5,13 +14,17 @@ export default { } }, Mutation: { - singleUpload (root, {file}) { - console.log('Uploaded file:', file) - return file + async singleUpload (_, {file}) { + const db = getRethinkDB() + const result = await db.table('uploads') + .insert(file, {returnChanges: true}) + return getNewVal(result) }, - multiUpload (root, {files}) { - console.log('Uploaded files:', files) - return files + async multiUpload (_, {files}) { + const db = getRethinkDB() + const result = await db.table('uploads') + .insert(files, {returnChanges: true}) + return getNewVal(result) } } } diff --git a/api/rethinkdb.js b/api/rethinkdb.js new file mode 100644 index 0000000..43a9c86 --- /dev/null +++ b/api/rethinkdb.js @@ -0,0 +1,10 @@ +import rethinkdbdash from 'rethinkdbdash' +import {rethinkdb} from './config' + +let driver +export default () => { + if (!driver) { + driver = rethinkdbdash(rethinkdb) + } + return driver +} From 0dd7f4a9b4d3f99141a85b9a8244e543de8dad54 Mon Sep 17 00:00:00 2001 From: Michael Merrill Date: Mon, 3 Apr 2017 20:36:08 -0600 Subject: [PATCH 2/2] Add query for all uploads --- api/resolvers.js | 5 +++-- api/schema.graphql | 3 +-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/api/resolvers.js b/api/resolvers.js index b25f3c1..ef087e8 100644 --- a/api/resolvers.js +++ b/api/resolvers.js @@ -9,8 +9,9 @@ const getNewVal = (result) => { export default { Query: { - ignore () { - return null + async allUploads () { + const db = getRethinkDB() + return await db.table('uploads') } }, Mutation: { diff --git a/api/schema.graphql b/api/schema.graphql index 6abdeeb..b58727d 100644 --- a/api/schema.graphql +++ b/api/schema.graphql @@ -13,8 +13,7 @@ input Upload { } type Query { - # GraphQL will not work without defining a query. - ignore: Boolean + allUploads: [File] } type Mutation {