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 +}