From cbf91f53e6c97cdb76c293c46813fbc9a74f47e5 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Mon, 12 Feb 2018 17:53:49 -0800 Subject: create user mutation --- .babelrc | 3 +- db.js | 1 + ecosystem.config.js | 2 +- index.js | 28 +++++++++++------ mutations.js | 38 +++++++++++++++++++++++ package.json | 5 ++- yarn.lock | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 7 files changed, 150 insertions(+), 15 deletions(-) create mode 100644 mutations.js diff --git a/.babelrc b/.babelrc index c13c5f62..babbfa2d 100644 --- a/.babelrc +++ b/.babelrc @@ -1,3 +1,4 @@ { - "presets": ["es2015"] + "presets": ["env"], + "plugins": ["transform-object-rest-spread"], } diff --git a/db.js b/db.js index 62ec3972..04822a94 100644 --- a/db.js +++ b/db.js @@ -89,6 +89,7 @@ const p = new Promise((resolve, reject) => { name: 'RootQueryType', fields: gqlfields }), + mutation: require('./mutations')(db, gqltypes) }) resolve(db) diff --git a/ecosystem.config.js b/ecosystem.config.js index 1093c494..a44c0de5 100644 --- a/ecosystem.config.js +++ b/ecosystem.config.js @@ -5,7 +5,7 @@ module.exports = { script: 'index.js', exec_interpreter: './node_modules/.bin/babel-node', exec_mode: 'fork', - watch: ['index.js'], + watch: ['*.js'], env: { COMMON_VARIABLE: 'true' }, diff --git a/index.js b/index.js index ea93f627..cad9a57f 100644 --- a/index.js +++ b/index.js @@ -12,6 +12,7 @@ import grpc from 'grpc' import passport from './passport' import jwt from 'jsonwebtoken' import bcrypt from 'bcrypt' +import deepstream from 'deepstream.io-client-js' import { graphqlExpress, graphiqlExpress } from 'apollo-server-express' dotenv.config() @@ -30,24 +31,31 @@ const l = console.log const restClient = ba.restfulClient(process.env.BITCOINAVERAGE_PUBLIC, process.env.BITCOINAVERAGE_SECRET) const lnrpc = await require('lnrpc')({ server: 'localhost:10001' }) - const adminMacaroon = fs.readFileSync('/home/adam/.lnd.testa/admin.macaroon'); - const meta = new grpc.Metadata(); - meta.add('macaroon', adminMacaroon.toString('hex')); + const adminMacaroon = fs.readFileSync('/home/adam/.lnd.testa/admin.macaroon') + + + const meta = new grpc.Metadata() + meta.add('macaroon', adminMacaroon.toString('hex')) + + const invoices = lnrpc.subscribeInvoices({}, meta) + invoices.on('data', msg => { + const ds = deepstream('0.0.0.0:6020') + ds.login() + ds.event.emit('invoices', msg) + }) app.get('/balance', async (req, res) => { res.json(await lnrpc.walletBalance({witness_only: true}, meta)) }) app.post('/sendPayment', async (req, res) => { - let payments = lnrpc.sendPayment(meta, {}) - payments.on('data', msg => l(msg)) - payments.write({ - payment_request: req.body.payreq - }) + const payments = lnrpc.sendPayment(meta, {}) + payments.write({ payment_request: req.body.payreq }) + res.end() }) - app.get('/addinvoice', async (req, res) => { - res.json(await lnrpc.walletBalance({witness_only: true}, meta)) + app.post('/addInvoice', async (req, res) => { + res.json(await lnrpc.addInvoice({ value: req.body.amount }, meta)) }) let fetchRates diff --git a/mutations.js b/mutations.js new file mode 100644 index 00000000..795c885a --- /dev/null +++ b/mutations.js @@ -0,0 +1,38 @@ +import { resolver, defaultArgs, defaultListArgs, attributeFields } from 'graphql-sequelize' +import { + graphql, + GraphQLSchema, + GraphQLObjectType, + GraphQLInputObjectType, + GraphQLString, + GraphQLInt, + GraphQLNonNull, + GraphQLList +} from 'graphql' + +module.exports = (db, gqltypes) => { + const UserInputType = new GraphQLInputObjectType({ + name: 'UserInput', + desc: 'UserInput', + fields: { + ...attributeFields(db['User'], { exclude: ['id'] }), + } + }) + + return new GraphQLObjectType({ + name: 'mutation', + fields: { + createUser: { + type: gqltypes['users'], + args: { + user: { + type: UserInputType + } + }, + resolve: async (root, { user }) => { + return db['User'].create(user) + } + }, + } + }) +} diff --git a/package.json b/package.json index a5bead48..c4a0d2b6 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "apollo-server-express": "^1.3.2", "async": "2.1.1", "babel-cli": "^6.26.0", + "babel-plugin-transform-object-rest-spread": "^6.26.0", "babel-preset-env": "^1.6.1", "bcrypt": "^1.0.3", "bip39": "^2.2.0", @@ -26,6 +27,7 @@ "consolidate": "0.14.1", "cookie-parser": "^1.3.2", "cors": "^2.8.4", + "deepstream.io-client-js": "^2.3.0", "dotenv": "^4.0.0", "express": "4.14.0", "express-session": "^1.6.5", @@ -38,7 +40,7 @@ "http-proxy-middleware": "^0.17.2", "jsonwebtoken": "^8.1.1", "less": "2.7.1", - "lnrpc": "^0.0.3", + "lnrpc": "https://github.com/asoltys/lnrpc#d3f6196", "lodash": "^4.17.4", "moment": "^2.10.6", "mysql": "^2.15.0", @@ -54,6 +56,7 @@ "sequelize-auto": "^0.4.29", "sequelize-cli": "^3.2.0", "socket.io-client": "^2.0.3", + "sql-template-strings": "^2.2.2", "twilio": "^2.11.1", "zeromq": "^4.6.0" }, diff --git a/yarn.lock b/yarn.lock index 78486c31..49ac8b49 100644 --- a/yarn.lock +++ b/yarn.lock @@ -276,6 +276,10 @@ async-each@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" +async-limiter@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" + async.ensureasync@^0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/async.ensureasync/-/async.ensureasync-0.5.2.tgz#c3c7e4a4e9b31d96875d56b8504598446e1e305d" @@ -573,6 +577,10 @@ babel-plugin-syntax-exponentiation-operator@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" +babel-plugin-syntax-object-rest-spread@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" + babel-plugin-syntax-trailing-function-commas@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" @@ -780,6 +788,13 @@ babel-plugin-transform-exponentiation-operator@^6.22.0: babel-plugin-syntax-exponentiation-operator "^6.8.0" babel-runtime "^6.22.0" +babel-plugin-transform-object-rest-spread@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" + dependencies: + babel-plugin-syntax-object-rest-spread "^6.8.0" + babel-runtime "^6.26.0" + babel-plugin-transform-regenerator@^6.22.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" @@ -1052,6 +1067,10 @@ binary-extensions@^1.0.0: version "1.8.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774" +bindings@~1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.3.0.tgz#b346f6ecf6a95f5a815c5839fc7cdb22502f1ed7" + bip39@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/bip39/-/bip39-2.3.0.tgz#e4ee6c6d1bd90ca00ffd57ad446bdf8c017ff484" @@ -1344,6 +1363,14 @@ bufferhelper@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/bufferhelper/-/bufferhelper-0.2.0.tgz#ec2f38d92538769cea2901487935e9e21d8173b3" +bufferutil@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-3.0.3.tgz#ce67caefde2282591e399528467fe623f68f4bd5" + dependencies: + bindings "~1.3.0" + nan "~2.7.0" + prebuild-install "~2.3.0" + builtin-modules@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" @@ -1612,6 +1639,10 @@ component-bind@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" +component-emitter2@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/component-emitter2/-/component-emitter2-1.3.5.tgz#c1928a8439460ed370266ef5a98236450d7a83d2" + component-emitter@1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3" @@ -1968,6 +1999,16 @@ deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" +deepstream.io-client-js@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/deepstream.io-client-js/-/deepstream.io-client-js-2.3.0.tgz#9be8b89a9c868624191aa45f444870192cc3feb7" + dependencies: + component-emitter2 "^1.3.5" + ws "^3.1.0" + optionalDependencies: + bufferutil "^3.0.2" + utf-8-validate "^3.0.3" + del@^2.0.2: version "2.2.2" resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" @@ -3750,9 +3791,9 @@ limiter@^1.0.5: version "1.1.0" resolved "https://registry.yarnpkg.com/limiter/-/limiter-1.1.0.tgz#6e2bd12ca3fcdaa11f224e2e53c896df3f08d913" -lnrpc@^0.0.3: +"lnrpc@https://github.com/asoltys/lnrpc#d3f6196": version "0.0.3" - resolved "https://registry.yarnpkg.com/lnrpc/-/lnrpc-0.0.3.tgz#793b75611450c94ee96b485d7bf7e55a3d4d158c" + resolved "https://github.com/asoltys/lnrpc#d3f6196af87d4cc86d59d4b39627d9368ee0e988" dependencies: grpc "^1.6.0" napa "^3.0.0" @@ -4221,6 +4262,10 @@ nan@^2.3.3, nan@^2.6.2, nan@^2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.8.0.tgz#ed715f3fe9de02b57a5e6252d90a96675e1f085a" +nan@~2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.7.0.tgz#d95bf721ec877e08db276ed3fc6eb78f9083ad46" + napa@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/napa/-/napa-3.0.0.tgz#ec3a8fde07190b69f2fe434c395a3e6946841b56" @@ -4750,6 +4795,25 @@ prebuild-install@^2.2.2: tunnel-agent "^0.6.0" xtend "4.0.1" +prebuild-install@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-2.3.0.tgz#19481247df728b854ab57b187ce234211311b485" + dependencies: + expand-template "^1.0.2" + github-from-package "0.0.0" + minimist "^1.2.0" + mkdirp "^0.5.1" + node-abi "^2.1.1" + noop-logger "^0.1.1" + npmlog "^4.0.1" + os-homedir "^1.0.1" + pump "^1.0.1" + rc "^1.1.6" + simple-get "^1.4.2" + tar-fs "^1.13.0" + tunnel-agent "^0.6.0" + xtend "4.0.1" + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -5739,6 +5803,10 @@ sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" +sql-template-strings@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/sql-template-strings/-/sql-template-strings-2.2.2.tgz#3f11508a25addfce217a3042a9d300c3193b96ff" + sqlstring@2.3.0, sqlstring@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/sqlstring/-/sqlstring-2.3.0.tgz#525b8a4fd26d6f71aa61e822a6caf976d31ad2a8" @@ -6144,6 +6212,14 @@ user-home@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" +utf-8-validate@^3.0.3: + version "3.0.4" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-3.0.4.tgz#a79962cfa4142dda7050234e7e9b37b33907d2af" + dependencies: + bindings "~1.3.0" + nan "~2.7.0" + prebuild-install "~2.3.0" + util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -6325,6 +6401,14 @@ ws@^3.0.0: safe-buffer "~5.1.0" ultron "~1.1.0" +ws@^3.1.0: + version "3.3.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" + dependencies: + async-limiter "~1.0.0" + safe-buffer "~5.1.0" + ultron "~1.1.0" + ws@~2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/ws/-/ws-2.3.1.tgz#6b94b3e447cb6a363f785eaf94af6359e8e81c80" -- cgit v1.2.3