diff --git a/backend/hasura-actions/src/PaymentStreamManager.bs.js b/backend/hasura-actions/src/PaymentStreamManager.bs.js index 53b85e3..bc12804 100644 --- a/backend/hasura-actions/src/PaymentStreamManager.bs.js +++ b/backend/hasura-actions/src/PaymentStreamManager.bs.js @@ -192,6 +192,156 @@ var createStream = Serbet.endpoint(undefined, { }) }); +function addPaymentEntry(streamID, timestamp, amount) { + Curry.app(gqlClient.reason_mutate, [ + { + query: Query.AddPaymentEntry.query, + Raw: Query.AddPaymentEntry.Raw, + parse: Query.AddPaymentEntry.parse, + serialize: Query.AddPaymentEntry.serialize, + serializeVariables: Query.AddPaymentEntry.serializeVariables + }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + Query.AddPaymentEntry.makeVariables(streamID, timestamp, "PENDING", amount, undefined) + ]).then(function (result) { + if (result.TAG === /* Ok */0) { + console.log("success payment added", result._0.data.insert_payments_one); + return ; + } + console.log("error payment added: ", result._0); + + }); + +} + +function updatePaymentEntry(paymentID, state) { + Curry.app(gqlClient.reason_mutate, [ + { + query: Query.UpdatePaymentEntry.query, + Raw: Query.UpdatePaymentEntry.Raw, + parse: Query.UpdatePaymentEntry.parse, + serialize: Query.UpdatePaymentEntry.serialize, + serializeVariables: Query.UpdatePaymentEntry.serializeVariables + }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + Query.UpdatePaymentEntry.makeVariables(paymentID, state, undefined) + ]).then(function (result) { + if (result.TAG === /* Ok */0) { + console.log("success update payment: ", state); + return ; + } + console.log("error update payment: ", state, result._0); + + }); + +} + +function updateStreamEntry(streamID, totalPaymentsMade, nextPayment, lastPayment) { + Curry.app(gqlClient.reason_mutate, [ + { + query: Query.UpdateStreamEntry.query, + Raw: Query.UpdateStreamEntry.Raw, + parse: Query.UpdateStreamEntry.parse, + serialize: Query.UpdateStreamEntry.serialize, + serializeVariables: Query.UpdateStreamEntry.serializeVariables + }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + Query.UpdateStreamEntry.makeVariables(streamID, totalPaymentsMade, nextPayment, lastPayment, undefined) + ]).then(function (result) { + if (result.TAG === /* Ok */0) { + console.log("success payment made: ", totalPaymentsMade, nextPayment); + return ; + } + console.log("error payment made: ", result._0); + + }); + +} + +function closeStreamEntry(streamID, totalPaymentsMade) { + Curry.app(gqlClient.reason_mutate, [ + { + query: Query.CloseStreamEntry.query, + Raw: Query.CloseStreamEntry.Raw, + parse: Query.CloseStreamEntry.parse, + serialize: Query.CloseStreamEntry.serialize, + serializeVariables: Query.CloseStreamEntry.serializeVariables + }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + Query.CloseStreamEntry.makeVariables(streamID, totalPaymentsMade, "CLOSED", undefined) + ]).then(function (result) { + if (result.TAG === /* Ok */0) { + console.log("success close entry: CLOSED"); + return ; + } + console.log("error close entry: ", result._0); + + }); + +} + +function addUser(username, ethAddress, description) { + Curry.app(gqlClient.reason_mutate, [ + { + query: Query.AddUser.query, + Raw: Query.AddUser.Raw, + parse: Query.AddUser.parse, + serialize: Query.AddUser.serialize, + serializeVariables: Query.AddUser.serializeVariables + }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + Query.AddUser.makeVariables(username, ethAddress, description, undefined) + ]).then(function (result) { + if (result.TAG === /* Ok */0) { + console.log("success user added"); + return ; + } + console.log("error user added: ", result._0); + + }); + +} + var ApolloQueryResult; exports.ApolloQueryResult = ApolloQueryResult; @@ -200,4 +350,9 @@ exports.body_in_decode = body_in_decode; exports.body_out_encode = body_out_encode; exports.gqlClient = gqlClient; exports.createStream = createStream; +exports.addPaymentEntry = addPaymentEntry; +exports.updatePaymentEntry = updatePaymentEntry; +exports.updateStreamEntry = updateStreamEntry; +exports.closeStreamEntry = closeStreamEntry; +exports.addUser = addUser; /* gqlClient Not a pure module */ diff --git a/backend/hasura-actions/src/PaymentStreamManager.res b/backend/hasura-actions/src/PaymentStreamManager.res index 46f6a57..dcb8ebb 100644 --- a/backend/hasura-actions/src/PaymentStreamManager.res +++ b/backend/hasura-actions/src/PaymentStreamManager.res @@ -64,3 +64,90 @@ let createStream = Serbet.endpoint({ ) }), }) + +let addPaymentEntry = (~streamID, ~timestamp, ~amount) => { + gqlClient.mutate( + ~mutation=module(Query.AddPaymentEntry), + Query.AddPaymentEntry.makeVariables( + ~streamID, + ~paymentTimestamp=timestamp, + ~paymentState="PENDING", + ~paymentAmount=amount, + (), + ), + ) + ->JsPromise.map(result => + switch result { + | Ok({data}) => Js.log2("success payment added", data.insert_payments_one) + | Error(error) => Js.log2("error payment added: ", error) + } + ) + ->ignore +} + +let updatePaymentEntry = (~paymentID, ~state) => { + gqlClient.mutate( + ~mutation=module(Query.UpdatePaymentEntry), + Query.UpdatePaymentEntry.makeVariables(~paymentID, ~paymentState=state, ()), + ) + ->JsPromise.map(result => + switch result { + | Ok(_result) => Js.log2("success update payment: ", state) + | Error(error) => Js.log3("error update payment: ", state, error) + } + ) + ->ignore +} + +let updateStreamEntry = (~streamID, ~totalPaymentsMade, ~nextPayment, ~lastPayment) => { + gqlClient.mutate( + ~mutation=module(Query.UpdateStreamEntry), + Query.UpdateStreamEntry.makeVariables( + ~id=streamID, + ~paymentsMade=totalPaymentsMade, + ~nextPayment, + ~lastPayment, + (), + ), + ) + ->JsPromise.map(result => + switch result { + | Ok(_result) => Js.log3("success payment made: ", totalPaymentsMade, nextPayment) + | Error(error) => Js.log2("error payment made: ", error) + } + ) + ->ignore +} + +let closeStreamEntry = (~streamID, ~totalPaymentsMade) => { + gqlClient.mutate( + ~mutation=module(Query.CloseStreamEntry), + Query.CloseStreamEntry.makeVariables( + ~id=streamID, + ~paymentsMade=totalPaymentsMade, + ~state="CLOSED", + (), + ), + ) + ->JsPromise.map(result => + switch result { + | Ok(_result) => Js.log("success close entry: CLOSED") + | Error(error) => Js.log2("error close entry: ", error) + } + ) + ->ignore +} + +let addUser = (~username, ~ethAddress, ~description) => { + gqlClient.mutate( + ~mutation=module(Query.AddUser), + Query.AddUser.makeVariables(~name=username, ~address=ethAddress, ~description, ()), + ) + ->JsPromise.map(result => + switch result { + | Ok(_result) => Js.log("success user added") + | Error(error) => Js.log2("error user added: ", error) + } + ) + ->ignore +} diff --git a/backend/hasura-actions/src/Query.bs.js b/backend/hasura-actions/src/Query.bs.js index c584f54..650f019 100644 --- a/backend/hasura-actions/src/Query.bs.js +++ b/backend/hasura-actions/src/Query.bs.js @@ -8,6 +8,380 @@ var ApolloClient__React_Hooks_UseMutation = require("reason-apollo-client/src/@a var Raw = {}; var query = (require("@apollo/client").gql` + mutation AddUser($name: String!, $address: String!, $description: String!) { + insert_user_one(object: {name: $name, ethAddress: $address, description: $description}) { + __typename + name + ethAddress + description + } + } +`); + +function parse(value) { + var value$1 = value.insert_user_one; + var tmp; + if (value$1 == null) { + tmp = undefined; + } else { + var value$2 = value$1.description; + tmp = { + __typename: value$1.__typename, + name: value$1.name, + ethAddress: value$1.ethAddress, + description: !(value$2 == null) ? value$2 : undefined + }; + } + return { + insert_user_one: tmp + }; +} + +function serialize(value) { + var value$1 = value.insert_user_one; + var insert_user_one; + if (value$1 !== undefined) { + var value$2 = value$1.description; + var description = value$2 !== undefined ? value$2 : null; + var value$3 = value$1.ethAddress; + var value$4 = value$1.name; + var value$5 = value$1.__typename; + insert_user_one = { + __typename: value$5, + name: value$4, + ethAddress: value$3, + description: description + }; + } else { + insert_user_one = null; + } + return { + insert_user_one: insert_user_one + }; +} + +function serializeVariables(inp) { + return { + name: inp.name, + address: inp.address, + description: inp.description + }; +} + +function makeVariables(name, address, description, param) { + return { + name: name, + address: address, + description: description + }; +} + +var AddUser_inner = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables +}; + +var include = ApolloClient__React_Hooks_UseMutation.Extend({ + query: query, + Raw: Raw, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables + }); + +var AddUser_use = include.use; + +var AddUser_useWithVariables = include.useWithVariables; + +var AddUser = { + AddUser_inner: AddUser_inner, + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + use: AddUser_use, + useWithVariables: AddUser_useWithVariables +}; + +var Raw$1 = {}; + +var query$1 = (require("@apollo/client").gql` + query ViewPaymentStreams($state: String!) { + streams(where: {state: {_eq: $state}}) { + __typename + id + amount + interval + numberOfPayments + numberOfPaymentsMade + recipient + state + tokenAddress + startPayment + nextPayment + lastPayment + } + } +`); + +function parse$1(value) { + var value$1 = value.streams; + return { + streams: value$1.map(function (value) { + return { + __typename: value.__typename, + id: value.id, + amount: GqlConverters.$$BigInt.parse(value.amount), + interval: GqlConverters.IntToBigInt.parse(value.interval), + numberOfPayments: GqlConverters.IntToBigInt.parse(value.numberOfPayments), + numberOfPaymentsMade: GqlConverters.IntToBigInt.parse(value.numberOfPaymentsMade), + recipient: value.recipient, + state: value.state, + tokenAddress: value.tokenAddress, + startPayment: GqlConverters.IntToBigInt.parse(value.startPayment), + nextPayment: GqlConverters.IntToBigInt.parse(value.nextPayment), + lastPayment: value.lastPayment + }; + }) + }; +} + +function serialize$1(value) { + var value$1 = value.streams; + var streams = value$1.map(function (value) { + var value$1 = value.lastPayment; + var value$2 = value.nextPayment; + var value$3 = GqlConverters.IntToBigInt.serialize(value$2); + var value$4 = value.startPayment; + var value$5 = GqlConverters.IntToBigInt.serialize(value$4); + var value$6 = value.tokenAddress; + var value$7 = value.state; + var value$8 = value.recipient; + var value$9 = value.numberOfPaymentsMade; + var value$10 = GqlConverters.IntToBigInt.serialize(value$9); + var value$11 = value.numberOfPayments; + var value$12 = GqlConverters.IntToBigInt.serialize(value$11); + var value$13 = value.interval; + var value$14 = GqlConverters.IntToBigInt.serialize(value$13); + var value$15 = value.amount; + var value$16 = GqlConverters.$$BigInt.serialize(value$15); + var value$17 = value.id; + var value$18 = value.__typename; + return { + __typename: value$18, + id: value$17, + amount: value$16, + interval: value$14, + numberOfPayments: value$12, + numberOfPaymentsMade: value$10, + recipient: value$8, + state: value$7, + tokenAddress: value$6, + startPayment: value$5, + nextPayment: value$3, + lastPayment: value$1 + }; + }); + return { + streams: streams + }; +} + +function serializeVariables$1(inp) { + return { + state: inp.state + }; +} + +function makeVariables$1(state, param) { + return { + state: state + }; +} + +var ViewPaymentStreams_inner = { + Raw: Raw$1, + query: query$1, + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + makeVariables: makeVariables$1 +}; + +var include$1 = ApolloClient__React_Hooks_UseQuery.Extend({ + query: query$1, + Raw: Raw$1, + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1 + }); + +var ViewPaymentStreams_refetchQueryDescription = include$1.refetchQueryDescription; + +var ViewPaymentStreams_use = include$1.use; + +var ViewPaymentStreams_useLazy = include$1.useLazy; + +var ViewPaymentStreams_useLazyWithVariables = include$1.useLazyWithVariables; + +var ViewPaymentStreams = { + ViewPaymentStreams_inner: ViewPaymentStreams_inner, + Raw: Raw$1, + query: query$1, + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + makeVariables: makeVariables$1, + refetchQueryDescription: ViewPaymentStreams_refetchQueryDescription, + use: ViewPaymentStreams_use, + useLazy: ViewPaymentStreams_useLazy, + useLazyWithVariables: ViewPaymentStreams_useLazyWithVariables +}; + +var Raw$2 = {}; + +var query$2 = (require("@apollo/client").gql` + query ViewPaymentsStreamsWithAddress($address: String!) { + streams(where: {recipient: {_eq: $address}}) { + __typename + id + amount + interval + numberOfPayments + numberOfPaymentsMade + recipient + state + tokenAddress + startPayment + nextPayment + lastPayment + } + } +`); + +function parse$2(value) { + var value$1 = value.streams; + return { + streams: value$1.map(function (value) { + return { + __typename: value.__typename, + id: value.id, + amount: GqlConverters.$$BigInt.parse(value.amount), + interval: GqlConverters.IntToBigInt.parse(value.interval), + numberOfPayments: GqlConverters.IntToBigInt.parse(value.numberOfPayments), + numberOfPaymentsMade: GqlConverters.IntToBigInt.parse(value.numberOfPaymentsMade), + recipient: value.recipient, + state: value.state, + tokenAddress: value.tokenAddress, + startPayment: GqlConverters.IntToBigInt.parse(value.startPayment), + nextPayment: GqlConverters.IntToBigInt.parse(value.nextPayment), + lastPayment: value.lastPayment + }; + }) + }; +} + +function serialize$2(value) { + var value$1 = value.streams; + var streams = value$1.map(function (value) { + var value$1 = value.lastPayment; + var value$2 = value.nextPayment; + var value$3 = GqlConverters.IntToBigInt.serialize(value$2); + var value$4 = value.startPayment; + var value$5 = GqlConverters.IntToBigInt.serialize(value$4); + var value$6 = value.tokenAddress; + var value$7 = value.state; + var value$8 = value.recipient; + var value$9 = value.numberOfPaymentsMade; + var value$10 = GqlConverters.IntToBigInt.serialize(value$9); + var value$11 = value.numberOfPayments; + var value$12 = GqlConverters.IntToBigInt.serialize(value$11); + var value$13 = value.interval; + var value$14 = GqlConverters.IntToBigInt.serialize(value$13); + var value$15 = value.amount; + var value$16 = GqlConverters.$$BigInt.serialize(value$15); + var value$17 = value.id; + var value$18 = value.__typename; + return { + __typename: value$18, + id: value$17, + amount: value$16, + interval: value$14, + numberOfPayments: value$12, + numberOfPaymentsMade: value$10, + recipient: value$8, + state: value$7, + tokenAddress: value$6, + startPayment: value$5, + nextPayment: value$3, + lastPayment: value$1 + }; + }); + return { + streams: streams + }; +} + +function serializeVariables$2(inp) { + return { + address: inp.address + }; +} + +function makeVariables$2(address, param) { + return { + address: address + }; +} + +var ViewPaymentsStreamsWithAddress_inner = { + Raw: Raw$2, + query: query$2, + parse: parse$2, + serialize: serialize$2, + serializeVariables: serializeVariables$2, + makeVariables: makeVariables$2 +}; + +var include$2 = ApolloClient__React_Hooks_UseQuery.Extend({ + query: query$2, + Raw: Raw$2, + parse: parse$2, + serialize: serialize$2, + serializeVariables: serializeVariables$2 + }); + +var ViewPaymentsStreamsWithAddress_refetchQueryDescription = include$2.refetchQueryDescription; + +var ViewPaymentsStreamsWithAddress_use = include$2.use; + +var ViewPaymentsStreamsWithAddress_useLazy = include$2.useLazy; + +var ViewPaymentsStreamsWithAddress_useLazyWithVariables = include$2.useLazyWithVariables; + +var ViewPaymentsStreamsWithAddress = { + ViewPaymentsStreamsWithAddress_inner: ViewPaymentsStreamsWithAddress_inner, + Raw: Raw$2, + query: query$2, + parse: parse$2, + serialize: serialize$2, + serializeVariables: serializeVariables$2, + makeVariables: makeVariables$2, + refetchQueryDescription: ViewPaymentsStreamsWithAddress_refetchQueryDescription, + use: ViewPaymentsStreamsWithAddress_use, + useLazy: ViewPaymentsStreamsWithAddress_useLazy, + useLazyWithVariables: ViewPaymentsStreamsWithAddress_useLazyWithVariables +}; + +var Raw$3 = {}; + +var query$3 = (require("@apollo/client").gql` mutation CreatePayment($amount: String!, $interval: Int!, $numberOfPayments: Int!, $recipient: String!, $start: Int!, $state: String, $tokenAddress: String!) { insert_streams_one(object: {amount: $amount, interval: $interval, numberOfPayments: $numberOfPayments, numberOfPaymentsMade: 0, recipient: $recipient, start: $start, state: $state, tokenAddress: $tokenAddress}) { __typename @@ -16,7 +390,7 @@ var query = (require("@apollo/client").gql` } `); -function parse(value) { +function parse$3(value) { var value$1 = value.insert_streams_one; return { insert_streams_one: !(value$1 == null) ? ({ @@ -26,7 +400,7 @@ function parse(value) { }; } -function serialize(value) { +function serialize$3(value) { var value$1 = value.insert_streams_one; var insert_streams_one; if (value$1 !== undefined) { @@ -44,7 +418,7 @@ function serialize(value) { }; } -function serializeVariables(inp) { +function serializeVariables$3(inp) { var a = inp.state; return { amount: inp.amount, @@ -57,7 +431,7 @@ function serializeVariables(inp) { }; } -function makeVariables(amount, interval, numberOfPayments, recipient, start, state, tokenAddress, param) { +function makeVariables$3(amount, interval, numberOfPayments, recipient, start, state, tokenAddress, param) { return { amount: amount, interval: interval, @@ -70,41 +444,41 @@ function makeVariables(amount, interval, numberOfPayments, recipient, start, sta } var CreatePaymentStream_inner = { - Raw: Raw, - query: query, - parse: parse, - serialize: serialize, - serializeVariables: serializeVariables, - makeVariables: makeVariables + Raw: Raw$3, + query: query$3, + parse: parse$3, + serialize: serialize$3, + serializeVariables: serializeVariables$3, + makeVariables: makeVariables$3 }; -var include = ApolloClient__React_Hooks_UseMutation.Extend({ - query: query, - Raw: Raw, - parse: parse, - serialize: serialize, - serializeVariables: serializeVariables +var include$3 = ApolloClient__React_Hooks_UseMutation.Extend({ + query: query$3, + Raw: Raw$3, + parse: parse$3, + serialize: serialize$3, + serializeVariables: serializeVariables$3 }); -var CreatePaymentStream_use = include.use; +var CreatePaymentStream_use = include$3.use; -var CreatePaymentStream_useWithVariables = include.useWithVariables; +var CreatePaymentStream_useWithVariables = include$3.useWithVariables; var CreatePaymentStream = { CreatePaymentStream_inner: CreatePaymentStream_inner, - Raw: Raw, - query: query, - parse: parse, - serialize: serialize, - serializeVariables: serializeVariables, - makeVariables: makeVariables, + Raw: Raw$3, + query: query$3, + parse: parse$3, + serialize: serialize$3, + serializeVariables: serializeVariables$3, + makeVariables: makeVariables$3, use: CreatePaymentStream_use, useWithVariables: CreatePaymentStream_useWithVariables }; -var Raw$1 = {}; +var Raw$4 = {}; -var query$1 = (require("@apollo/client").gql` +var query$4 = (require("@apollo/client").gql` query GetStreamData($currentTimestamp: Int!) { streams(where: {state: {_eq: "OPEN"}, nextPayment: {_lte: $currentTimestamp}}) { __typename @@ -123,7 +497,7 @@ var query$1 = (require("@apollo/client").gql` } `); -function parse$1(value) { +function parse$4(value) { var value$1 = value.streams; return { streams: value$1.map(function (value) { @@ -145,7 +519,7 @@ function parse$1(value) { }; } -function serialize$1(value) { +function serialize$4(value) { var value$1 = value.streams; var streams = value$1.map(function (value) { var value$1 = value.lastPayment; @@ -186,60 +560,60 @@ function serialize$1(value) { }; } -function serializeVariables$1(inp) { +function serializeVariables$4(inp) { return { currentTimestamp: inp.currentTimestamp }; } -function makeVariables$1(currentTimestamp, param) { +function makeVariables$4(currentTimestamp, param) { return { currentTimestamp: currentTimestamp }; } var GetStreamData_inner = { - Raw: Raw$1, - query: query$1, - parse: parse$1, - serialize: serialize$1, - serializeVariables: serializeVariables$1, - makeVariables: makeVariables$1 + Raw: Raw$4, + query: query$4, + parse: parse$4, + serialize: serialize$4, + serializeVariables: serializeVariables$4, + makeVariables: makeVariables$4 }; -var include$1 = ApolloClient__React_Hooks_UseQuery.Extend({ - query: query$1, - Raw: Raw$1, - parse: parse$1, - serialize: serialize$1, - serializeVariables: serializeVariables$1 +var include$4 = ApolloClient__React_Hooks_UseQuery.Extend({ + query: query$4, + Raw: Raw$4, + parse: parse$4, + serialize: serialize$4, + serializeVariables: serializeVariables$4 }); -var GetStreamData_refetchQueryDescription = include$1.refetchQueryDescription; +var GetStreamData_refetchQueryDescription = include$4.refetchQueryDescription; -var GetStreamData_use = include$1.use; +var GetStreamData_use = include$4.use; -var GetStreamData_useLazy = include$1.useLazy; +var GetStreamData_useLazy = include$4.useLazy; -var GetStreamData_useLazyWithVariables = include$1.useLazyWithVariables; +var GetStreamData_useLazyWithVariables = include$4.useLazyWithVariables; var GetStreamData = { GetStreamData_inner: GetStreamData_inner, - Raw: Raw$1, - query: query$1, - parse: parse$1, - serialize: serialize$1, - serializeVariables: serializeVariables$1, - makeVariables: makeVariables$1, + Raw: Raw$4, + query: query$4, + parse: parse$4, + serialize: serialize$4, + serializeVariables: serializeVariables$4, + makeVariables: makeVariables$4, refetchQueryDescription: GetStreamData_refetchQueryDescription, use: GetStreamData_use, useLazy: GetStreamData_useLazy, useLazyWithVariables: GetStreamData_useLazyWithVariables }; -var Raw$2 = {}; +var Raw$5 = {}; -var query$2 = (require("@apollo/client").gql` +var query$5 = (require("@apollo/client").gql` mutation CloseStreamEntry($id: Int!, $paymentsMade: Int!, $state: String!) { update_streams_by_pk(pk_columns: {id: $id}, _set: {numberOfPaymentsMade: $paymentsMade, state: $state}) { __typename @@ -249,7 +623,7 @@ var query$2 = (require("@apollo/client").gql` } `); -function parse$2(value) { +function parse$5(value) { var value$1 = value.update_streams_by_pk; return { update_streams_by_pk: !(value$1 == null) ? ({ @@ -260,7 +634,7 @@ function parse$2(value) { }; } -function serialize$2(value) { +function serialize$5(value) { var value$1 = value.update_streams_by_pk; var update_streams_by_pk; if (value$1 !== undefined) { @@ -280,7 +654,7 @@ function serialize$2(value) { }; } -function serializeVariables$2(inp) { +function serializeVariables$5(inp) { return { id: inp.id, paymentsMade: inp.paymentsMade, @@ -288,7 +662,7 @@ function serializeVariables$2(inp) { }; } -function makeVariables$2(id, paymentsMade, state, param) { +function makeVariables$5(id, paymentsMade, state, param) { return { id: id, paymentsMade: paymentsMade, @@ -297,41 +671,41 @@ function makeVariables$2(id, paymentsMade, state, param) { } var CloseStreamEntry_inner = { - Raw: Raw$2, - query: query$2, - parse: parse$2, - serialize: serialize$2, - serializeVariables: serializeVariables$2, - makeVariables: makeVariables$2 + Raw: Raw$5, + query: query$5, + parse: parse$5, + serialize: serialize$5, + serializeVariables: serializeVariables$5, + makeVariables: makeVariables$5 }; -var include$2 = ApolloClient__React_Hooks_UseMutation.Extend({ - query: query$2, - Raw: Raw$2, - parse: parse$2, - serialize: serialize$2, - serializeVariables: serializeVariables$2 +var include$5 = ApolloClient__React_Hooks_UseMutation.Extend({ + query: query$5, + Raw: Raw$5, + parse: parse$5, + serialize: serialize$5, + serializeVariables: serializeVariables$5 }); -var CloseStreamEntry_use = include$2.use; +var CloseStreamEntry_use = include$5.use; -var CloseStreamEntry_useWithVariables = include$2.useWithVariables; +var CloseStreamEntry_useWithVariables = include$5.useWithVariables; var CloseStreamEntry = { CloseStreamEntry_inner: CloseStreamEntry_inner, - Raw: Raw$2, - query: query$2, - parse: parse$2, - serialize: serialize$2, - serializeVariables: serializeVariables$2, - makeVariables: makeVariables$2, + Raw: Raw$5, + query: query$5, + parse: parse$5, + serialize: serialize$5, + serializeVariables: serializeVariables$5, + makeVariables: makeVariables$5, use: CloseStreamEntry_use, useWithVariables: CloseStreamEntry_useWithVariables }; -var Raw$3 = {}; +var Raw$6 = {}; -var query$3 = (require("@apollo/client").gql` +var query$6 = (require("@apollo/client").gql` mutation UpdateStreamEntry($id: Int!, $paymentsMade: Int!, $nextPayment: Int!, $lastPayment: Int!) { update_streams_by_pk(pk_columns: {id: $id}, _set: {numberOfPaymentsMade: $paymentsMade, nextPayment: $nextPayment, lastPayment: $lastPayment}) { __typename @@ -343,7 +717,7 @@ var query$3 = (require("@apollo/client").gql` } `); -function parse$3(value) { +function parse$6(value) { var value$1 = value.update_streams_by_pk; return { update_streams_by_pk: !(value$1 == null) ? ({ @@ -356,7 +730,7 @@ function parse$3(value) { }; } -function serialize$3(value) { +function serialize$6(value) { var value$1 = value.update_streams_by_pk; var update_streams_by_pk; if (value$1 !== undefined) { @@ -380,7 +754,7 @@ function serialize$3(value) { }; } -function serializeVariables$3(inp) { +function serializeVariables$6(inp) { return { id: inp.id, paymentsMade: inp.paymentsMade, @@ -389,7 +763,7 @@ function serializeVariables$3(inp) { }; } -function makeVariables$3(id, paymentsMade, nextPayment, lastPayment, param) { +function makeVariables$6(id, paymentsMade, nextPayment, lastPayment, param) { return { id: id, paymentsMade: paymentsMade, @@ -399,72 +773,68 @@ function makeVariables$3(id, paymentsMade, nextPayment, lastPayment, param) { } var UpdateStreamEntry_inner = { - Raw: Raw$3, - query: query$3, - parse: parse$3, - serialize: serialize$3, - serializeVariables: serializeVariables$3, - makeVariables: makeVariables$3 + Raw: Raw$6, + query: query$6, + parse: parse$6, + serialize: serialize$6, + serializeVariables: serializeVariables$6, + makeVariables: makeVariables$6 }; -var include$3 = ApolloClient__React_Hooks_UseMutation.Extend({ - query: query$3, - Raw: Raw$3, - parse: parse$3, - serialize: serialize$3, - serializeVariables: serializeVariables$3 +var include$6 = ApolloClient__React_Hooks_UseMutation.Extend({ + query: query$6, + Raw: Raw$6, + parse: parse$6, + serialize: serialize$6, + serializeVariables: serializeVariables$6 }); -var UpdateStreamEntry_use = include$3.use; +var UpdateStreamEntry_use = include$6.use; -var UpdateStreamEntry_useWithVariables = include$3.useWithVariables; +var UpdateStreamEntry_useWithVariables = include$6.useWithVariables; var UpdateStreamEntry = { UpdateStreamEntry_inner: UpdateStreamEntry_inner, - Raw: Raw$3, - query: query$3, - parse: parse$3, - serialize: serialize$3, - serializeVariables: serializeVariables$3, - makeVariables: makeVariables$3, + Raw: Raw$6, + query: query$6, + parse: parse$6, + serialize: serialize$6, + serializeVariables: serializeVariables$6, + makeVariables: makeVariables$6, use: UpdateStreamEntry_use, useWithVariables: UpdateStreamEntry_useWithVariables }; -var Raw$4 = {}; +var Raw$7 = {}; -var query$4 = (require("@apollo/client").gql` - mutation AddNewPayment($streamID: Int!, $paymentTimestamp: Int!, $paymentState: String!, $paymentAmount: String!) { +var query$7 = (require("@apollo/client").gql` + mutation AddPaymentEntry($streamID: Int!, $paymentTimestamp: Int!, $paymentState: String!, $paymentAmount: String!) { insert_payments_one(object: {streamID: $streamID, paymentTimestamp: $paymentTimestamp, paymentState: $paymentState, paymentAmount: $paymentAmount}) { __typename id - streamID } } `); -function parse$4(value) { +function parse$7(value) { var value$1 = value.insert_payments_one; return { insert_payments_one: !(value$1 == null) ? ({ __typename: value$1.__typename, - id: value$1.id, - streamID: value$1.streamID + id: value$1.id }) : undefined }; } -function serialize$4(value) { +function serialize$7(value) { var value$1 = value.insert_payments_one; var insert_payments_one; if (value$1 !== undefined) { - var value$2 = value$1.streamID; - var value$3 = value$1.id; - var value$4 = value$1.__typename; + var value$2 = value$1.id; + var value$3 = value$1.__typename; insert_payments_one = { - __typename: value$4, - id: value$3, - streamID: value$2 + __typename: value$3, + id: value$2 }; } else { insert_payments_one = null; @@ -474,7 +844,7 @@ function serialize$4(value) { }; } -function serializeVariables$4(inp) { +function serializeVariables$7(inp) { return { streamID: inp.streamID, paymentTimestamp: inp.paymentTimestamp, @@ -483,7 +853,7 @@ function serializeVariables$4(inp) { }; } -function makeVariables$4(streamID, paymentTimestamp, paymentState, paymentAmount, param) { +function makeVariables$7(streamID, paymentTimestamp, paymentState, paymentAmount, param) { return { streamID: streamID, paymentTimestamp: paymentTimestamp, @@ -492,42 +862,132 @@ function makeVariables$4(streamID, paymentTimestamp, paymentState, paymentAmount }; } -var AddNewPayment_inner = { - Raw: Raw$4, - query: query$4, - parse: parse$4, - serialize: serialize$4, - serializeVariables: serializeVariables$4, - makeVariables: makeVariables$4 +var AddPaymentEntry_inner = { + Raw: Raw$7, + query: query$7, + parse: parse$7, + serialize: serialize$7, + serializeVariables: serializeVariables$7, + makeVariables: makeVariables$7 }; -var include$4 = ApolloClient__React_Hooks_UseMutation.Extend({ - query: query$4, - Raw: Raw$4, - parse: parse$4, - serialize: serialize$4, - serializeVariables: serializeVariables$4 +var include$7 = ApolloClient__React_Hooks_UseMutation.Extend({ + query: query$7, + Raw: Raw$7, + parse: parse$7, + serialize: serialize$7, + serializeVariables: serializeVariables$7 }); -var AddNewPayment_use = include$4.use; +var AddPaymentEntry_use = include$7.use; -var AddNewPayment_useWithVariables = include$4.useWithVariables; +var AddPaymentEntry_useWithVariables = include$7.useWithVariables; -var AddNewPayment = { - AddNewPayment_inner: AddNewPayment_inner, - Raw: Raw$4, - query: query$4, - parse: parse$4, - serialize: serialize$4, - serializeVariables: serializeVariables$4, - makeVariables: makeVariables$4, - use: AddNewPayment_use, - useWithVariables: AddNewPayment_useWithVariables +var AddPaymentEntry = { + AddPaymentEntry_inner: AddPaymentEntry_inner, + Raw: Raw$7, + query: query$7, + parse: parse$7, + serialize: serialize$7, + serializeVariables: serializeVariables$7, + makeVariables: makeVariables$7, + use: AddPaymentEntry_use, + useWithVariables: AddPaymentEntry_useWithVariables }; -var Raw$5 = {}; +var Raw$8 = {}; -var query$5 = (require("@apollo/client").gql` +var query$8 = (require("@apollo/client").gql` + mutation UpdatePaymentEntry($paymentID: Int!, $paymentState: String!) { + update_payments_by_pk(pk_columns: {id: $paymentID}, _set: {paymentState: $paymentState}) { + __typename + id + paymentState + } + } +`); + +function parse$8(value) { + var value$1 = value.update_payments_by_pk; + return { + update_payments_by_pk: !(value$1 == null) ? ({ + __typename: value$1.__typename, + id: value$1.id, + paymentState: value$1.paymentState + }) : undefined + }; +} + +function serialize$8(value) { + var value$1 = value.update_payments_by_pk; + var update_payments_by_pk; + if (value$1 !== undefined) { + var value$2 = value$1.paymentState; + var value$3 = value$1.id; + var value$4 = value$1.__typename; + update_payments_by_pk = { + __typename: value$4, + id: value$3, + paymentState: value$2 + }; + } else { + update_payments_by_pk = null; + } + return { + update_payments_by_pk: update_payments_by_pk + }; +} + +function serializeVariables$8(inp) { + return { + paymentID: inp.paymentID, + paymentState: inp.paymentState + }; +} + +function makeVariables$8(paymentID, paymentState, param) { + return { + paymentID: paymentID, + paymentState: paymentState + }; +} + +var UpdatePaymentEntry_inner = { + Raw: Raw$8, + query: query$8, + parse: parse$8, + serialize: serialize$8, + serializeVariables: serializeVariables$8, + makeVariables: makeVariables$8 +}; + +var include$8 = ApolloClient__React_Hooks_UseMutation.Extend({ + query: query$8, + Raw: Raw$8, + parse: parse$8, + serialize: serialize$8, + serializeVariables: serializeVariables$8 + }); + +var UpdatePaymentEntry_use = include$8.use; + +var UpdatePaymentEntry_useWithVariables = include$8.useWithVariables; + +var UpdatePaymentEntry = { + UpdatePaymentEntry_inner: UpdatePaymentEntry_inner, + Raw: Raw$8, + query: query$8, + parse: parse$8, + serialize: serialize$8, + serializeVariables: serializeVariables$8, + makeVariables: makeVariables$8, + use: UpdatePaymentEntry_use, + useWithVariables: UpdatePaymentEntry_useWithVariables +}; + +var Raw$9 = {}; + +var query$9 = (require("@apollo/client").gql` query GetLatestPayment($streamID: Int!, $lastPayment: Int!) { payments(where: {streamID: {_eq: $streamID}, paymentTimestamp: {_eq: $lastPayment}}) { __typename @@ -540,7 +1000,7 @@ var query$5 = (require("@apollo/client").gql` } `); -function parse$5(value) { +function parse$9(value) { var value$1 = value.payments; return { payments: value$1.map(function (value) { @@ -556,7 +1016,7 @@ function parse$5(value) { }; } -function serialize$5(value) { +function serialize$9(value) { var value$1 = value.payments; var payments = value$1.map(function (value) { var value$1 = value.streamID; @@ -580,14 +1040,14 @@ function serialize$5(value) { }; } -function serializeVariables$5(inp) { +function serializeVariables$9(inp) { return { streamID: inp.streamID, lastPayment: inp.lastPayment }; } -function makeVariables$5(streamID, lastPayment, param) { +function makeVariables$9(streamID, lastPayment, param) { return { streamID: streamID, lastPayment: lastPayment @@ -595,48 +1055,52 @@ function makeVariables$5(streamID, lastPayment, param) { } var GetLatestPayment_inner = { - Raw: Raw$5, - query: query$5, - parse: parse$5, - serialize: serialize$5, - serializeVariables: serializeVariables$5, - makeVariables: makeVariables$5 + Raw: Raw$9, + query: query$9, + parse: parse$9, + serialize: serialize$9, + serializeVariables: serializeVariables$9, + makeVariables: makeVariables$9 }; -var include$5 = ApolloClient__React_Hooks_UseQuery.Extend({ - query: query$5, - Raw: Raw$5, - parse: parse$5, - serialize: serialize$5, - serializeVariables: serializeVariables$5 +var include$9 = ApolloClient__React_Hooks_UseQuery.Extend({ + query: query$9, + Raw: Raw$9, + parse: parse$9, + serialize: serialize$9, + serializeVariables: serializeVariables$9 }); -var GetLatestPayment_refetchQueryDescription = include$5.refetchQueryDescription; +var GetLatestPayment_refetchQueryDescription = include$9.refetchQueryDescription; -var GetLatestPayment_use = include$5.use; +var GetLatestPayment_use = include$9.use; -var GetLatestPayment_useLazy = include$5.useLazy; +var GetLatestPayment_useLazy = include$9.useLazy; -var GetLatestPayment_useLazyWithVariables = include$5.useLazyWithVariables; +var GetLatestPayment_useLazyWithVariables = include$9.useLazyWithVariables; var GetLatestPayment = { GetLatestPayment_inner: GetLatestPayment_inner, - Raw: Raw$5, - query: query$5, - parse: parse$5, - serialize: serialize$5, - serializeVariables: serializeVariables$5, - makeVariables: makeVariables$5, + Raw: Raw$9, + query: query$9, + parse: parse$9, + serialize: serialize$9, + serializeVariables: serializeVariables$9, + makeVariables: makeVariables$9, refetchQueryDescription: GetLatestPayment_refetchQueryDescription, use: GetLatestPayment_use, useLazy: GetLatestPayment_useLazy, useLazyWithVariables: GetLatestPayment_useLazyWithVariables }; +exports.AddUser = AddUser; +exports.ViewPaymentStreams = ViewPaymentStreams; +exports.ViewPaymentsStreamsWithAddress = ViewPaymentsStreamsWithAddress; exports.CreatePaymentStream = CreatePaymentStream; exports.GetStreamData = GetStreamData; exports.CloseStreamEntry = CloseStreamEntry; exports.UpdateStreamEntry = UpdateStreamEntry; -exports.AddNewPayment = AddNewPayment; +exports.AddPaymentEntry = AddPaymentEntry; +exports.UpdatePaymentEntry = UpdatePaymentEntry; exports.GetLatestPayment = GetLatestPayment; /* query Not a pure module */ diff --git a/backend/hasura-actions/src/Query.res b/backend/hasura-actions/src/Query.res index edc7ef0..2c5ce22 100644 --- a/backend/hasura-actions/src/Query.res +++ b/backend/hasura-actions/src/Query.res @@ -1,6 +1,52 @@ // File to put all GQL Queries. // open GqlConverters; +module AddUser = %graphql(` + mutation AddUser ($name: String!, $address: String!, $description: String!){ + insert_user_one(object: {name: $name, ethAddress: $address, description: $description}) { + name + ethAddress + description + } + } +`) + +module ViewPaymentStreams = %graphql(` + query ViewPaymentStreams ($state: String!){ + streams(where: {state: {_eq: $state}}){ + id + amount @ppxCustom(module: "GqlConverters.BigInt") + interval @ppxCustom(module: "GqlConverters.IntToBigInt") + numberOfPayments @ppxCustom(module: "GqlConverters.IntToBigInt") + numberOfPaymentsMade @ppxCustom(module: "GqlConverters.IntToBigInt") + recipient + state + tokenAddress + startPayment @ppxCustom(module: "GqlConverters.IntToBigInt") + nextPayment @ppxCustom(module: "GqlConverters.IntToBigInt") + lastPayment + } + } +`) + +module ViewPaymentsStreamsWithAddress = %graphql(` + query ViewPaymentsStreamsWithAddress ($address: String!){ + streams(where: {recipient: {_eq: $address}}){ + id + amount @ppxCustom(module: "GqlConverters.BigInt") + interval @ppxCustom(module: "GqlConverters.IntToBigInt") + numberOfPayments @ppxCustom(module: "GqlConverters.IntToBigInt") + numberOfPaymentsMade @ppxCustom(module: "GqlConverters.IntToBigInt") + recipient + state + tokenAddress + startPayment @ppxCustom(module: "GqlConverters.IntToBigInt") + nextPayment @ppxCustom(module: "GqlConverters.IntToBigInt") + lastPayment + } + } +`) + module CreatePaymentStream = %graphql(` mutation CreatePayment ($amount: String!, $interval: Int!, $numberOfPayments: Int!, $recipient: String!, $start: Int!, $state: String, $tokenAddress: String!) { insert_streams_one(object: {amount: $amount, interval: $interval, numberOfPayments: $numberOfPayments, numberOfPaymentsMade: 0, recipient: $recipient, start: $start, state: $state, tokenAddress: $tokenAddress}) { @@ -47,11 +93,19 @@ module UpdateStreamEntry = %graphql(` } `) -module AddNewPayment = %graphql(` - mutation AddNewPayment ($streamID: Int!, $paymentTimestamp: Int!, $paymentState: String!, $paymentAmount: String!){ +module AddPaymentEntry = %graphql(` + mutation AddPaymentEntry ($streamID: Int!, $paymentTimestamp: Int!, $paymentState: String!, $paymentAmount: String!){ insert_payments_one(object: {streamID: $streamID, paymentTimestamp: $paymentTimestamp, paymentState: $paymentState, paymentAmount: $paymentAmount}) { id - streamID + } + } +`) + +module UpdatePaymentEntry = %graphql(` + mutation UpdatePaymentEntry ($paymentID: Int!, $paymentState: String!){ + update_payments_by_pk(pk_columns: {id: $paymentID}, _set: {paymentState: $paymentState}) { + id + paymentState } } `) diff --git a/backend/hasura-actions/src/Scheduler.bs.js b/backend/hasura-actions/src/Scheduler.bs.js index e0dbf62..6a48f1d 100644 --- a/backend/hasura-actions/src/Scheduler.bs.js +++ b/backend/hasura-actions/src/Scheduler.bs.js @@ -34,91 +34,17 @@ function makePayment(recipientAddress, paymentData) { var extraPaymentsMade = extraPayments.add(CONSTANTS.big1); var finalPayment = BnJs.min(extraPaymentsMade, remainingPayments); var finalAmount = paymentData.amount.mul(finalPayment); - Curry.app(PaymentStreamManager.gqlClient.reason_mutate, [ - { - query: Query.AddNewPayment.query, - Raw: Query.AddNewPayment.Raw, - parse: Query.AddNewPayment.parse, - serialize: Query.AddNewPayment.serialize, - serializeVariables: Query.AddNewPayment.serializeVariables - }, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - Query.AddNewPayment.makeVariables(paymentData.streamID, paymentData.currentPayment.toNumber(), "PENDING", finalAmount.toString(), undefined) - ]).then(function (result) { - if (result.TAG === /* Ok */0) { - console.log("success payment added"); - return ; - } - console.log("error payment added: ", result._0); - - }); - if (paymentData.numberOfPayments.eq(paymentData.numberOfPaymentsMade.add(finalPayment))) { - Curry.app(PaymentStreamManager.gqlClient.reason_mutate, [ - { - query: Query.CloseStreamEntry.query, - Raw: Query.CloseStreamEntry.Raw, - parse: Query.CloseStreamEntry.parse, - serialize: Query.CloseStreamEntry.serialize, - serializeVariables: Query.CloseStreamEntry.serializeVariables - }, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - Query.CloseStreamEntry.makeVariables(paymentData.streamID, paymentData.numberOfPayments.toNumber(), "CLOSED", undefined) - ]).then(function (result) { - if (result.TAG === /* Ok */0) { - console.log("success close entry: CLOSED"); - return ; - } - console.log("error close entry: ", result._0); - - }); + PaymentStreamManager.addPaymentEntry(paymentData.streamID, paymentData.nextPayment.toNumber(), finalAmount.toString()); + var totalPayments = paymentData.numberOfPaymentsMade.add(finalPayment); + if (paymentData.numberOfPayments.eq(totalPayments)) { + PaymentStreamManager.closeStreamEntry(paymentData.streamID, paymentData.numberOfPayments.toNumber()); } else { var newPaymentsMade = paymentData.numberOfPaymentsMade.add(finalPayment); var intervalInSeconds$1 = paymentData.interval.mul(CONSTANTS.big60); var newNextPayment = paymentData.nextPayment.add(finalPayment.mul(intervalInSeconds$1)); - Curry.app(PaymentStreamManager.gqlClient.reason_mutate, [ - { - query: Query.UpdateStreamEntry.query, - Raw: Query.UpdateStreamEntry.Raw, - parse: Query.UpdateStreamEntry.parse, - serialize: Query.UpdateStreamEntry.serialize, - serializeVariables: Query.UpdateStreamEntry.serializeVariables - }, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - Query.UpdateStreamEntry.makeVariables(paymentData.streamID, newPaymentsMade.toNumber(), newNextPayment.toNumber(), paymentData.nextPayment.toNumber(), undefined) - ]).then(function (result) { - if (result.TAG === /* Ok */0) { - console.log("success payment made: ", newPaymentsMade, newNextPayment); - return ; - } - console.log("error payment made: ", result._0); - - }); + PaymentStreamManager.updateStreamEntry(paymentData.streamID, newPaymentsMade.toNumber(), newNextPayment.toNumber(), paymentData.nextPayment.toNumber()); } - var requestString = "http://localhost:5001/api/v1/payments/0xC563388e2e2fdD422166eD5E76971D11eD37A466/" + recipientAddress; + var requestString = "http://raiden1:5001/api/v1/payments/0xC563388e2e2fdD422166eD5E76971D11eD37A466/" + recipientAddress; console.log(requestString, finalAmount.toString()); return fetch(requestString, Fetch.RequestInit.make(/* Post */2, { "Content-Type": "application/json" @@ -129,6 +55,11 @@ function makePayment(recipientAddress, paymentData) { return prim.json(); }).then(function (json) { console.log("THE RESULT:", json); + if (JSON.stringify(json).includes("errors") === false) { + console.log("SUCCESS"); + } else { + console.log("ERROR"); + } }); } diff --git a/backend/hasura-actions/src/Scheduler.res b/backend/hasura-actions/src/Scheduler.res index 252eba6..bbba380 100644 --- a/backend/hasura-actions/src/Scheduler.res +++ b/backend/hasura-actions/src/Scheduler.res @@ -27,67 +27,30 @@ let makePayment = (~recipientAddress, ~paymentData: streamData) => { let extraPaymentsMade = BN.add(extraPayments, CONSTANTS.big1) let finalPayment = BN.min(extraPaymentsMade, remainingPayments) let finalAmount = BN.mul(paymentData.amount, finalPayment) - PaymentStreamManager.gqlClient.mutate( - ~mutation=module(Query.AddNewPayment), - Query.AddNewPayment.makeVariables( - ~streamID=paymentData.streamID, - ~paymentTimestamp=paymentData.currentPayment->BN.toNumber, - ~paymentState="PENDING", - ~paymentAmount=finalAmount->BN.toString, - (), - ), + PaymentStreamManager.addPaymentEntry( + ~streamID=paymentData.streamID, + ~timestamp=paymentData.nextPayment->BN.toNumber, + ~amount=finalAmount->BN.toString, ) - ->JsPromise.map(result => - switch result { - | Ok({data: insert_payments_one}) => - () - - Js.log("success payment added") - | Error(error) => Js.log2("error payment added: ", error) - } - ) - ->ignore - if BN.eq(paymentData.numberOfPayments, BN.add(paymentData.numberOfPaymentsMade, finalPayment)) { - PaymentStreamManager.gqlClient.mutate( - ~mutation=module(Query.CloseStreamEntry), - Query.CloseStreamEntry.makeVariables( - ~id=paymentData.streamID, - ~paymentsMade=paymentData.numberOfPayments->BN.toNumber, - ~state="CLOSED", - (), - ), - ) - ->JsPromise.map(result => - switch result { - | Ok(_result) => Js.log("success close entry: CLOSED") - | Error(error) => Js.log2("error close entry: ", error) - } + let totalPayments = BN.add(paymentData.numberOfPaymentsMade, finalPayment) + if BN.eq(paymentData.numberOfPayments, totalPayments) { + PaymentStreamManager.closeStreamEntry( + ~streamID=paymentData.streamID, + ~totalPaymentsMade=paymentData.numberOfPayments->BN.toNumber, ) - ->ignore } else { let newPaymentsMade = BN.add(paymentData.numberOfPaymentsMade, finalPayment) let intervalInSeconds = BN.mul(paymentData.interval, CONSTANTS.big60) let newNextPayment = BN.add(paymentData.nextPayment, BN.mul(finalPayment, intervalInSeconds)) - PaymentStreamManager.gqlClient.mutate( - ~mutation=module(Query.UpdateStreamEntry), - Query.UpdateStreamEntry.makeVariables( - ~id=paymentData.streamID, - ~paymentsMade=newPaymentsMade->BN.toNumber, - ~nextPayment=newNextPayment->BN.toNumber, - ~lastPayment=paymentData.nextPayment->BN.toNumber, - (), - ), - ) - ->JsPromise.map(result => - switch result { - | Ok(_result) => Js.log3("success payment made: ", newPaymentsMade, newNextPayment) - | Error(error) => Js.log2("error payment made: ", error) - } + PaymentStreamManager.updateStreamEntry( + ~streamID=paymentData.streamID, + ~totalPaymentsMade=newPaymentsMade->BN.toNumber, + ~nextPayment=newNextPayment->BN.toNumber, + ~lastPayment=paymentData.nextPayment->BN.toNumber, ) - ->ignore } - /* let requestString = - "http://localhost:5001/api/v1/payments/0xC563388e2e2fdD422166eD5E76971D11eD37A466/" ++ + let requestString = + "http://raiden1:5001/api/v1/payments/0xC563388e2e2fdD422166eD5E76971D11eD37A466/" ++ recipientAddress Js.log2(requestString, finalAmount->BN.toString) Fetch.fetchWithInit( @@ -106,7 +69,18 @@ let makePayment = (~recipientAddress, ~paymentData: streamData) => { ->JsPromise.then(Fetch.Response.json) ->JsPromise.map(json => { Js.log2("THE RESULT:", json) - })*/ + if Js.String.includes("errors", Js.Json.stringify(json)) == false { + Js.log("SUCCESS") + //TODO not sure how to get the payment ID back from the AddNewPayment mutation + /* let paymentID = 1 + PaymentStreamManager.updatePaymentEntry(~paymentID, ~state="COMPLETE") */ + } else { + Js.log("ERROR") + //TODO not sure how to get the payment ID back from the AddNewPayment mutation + /* let paymentID = 1 + PaymentStreamManager.updatePaymentEntry(~paymentID, ~state="ERROR") */ + } + }) } let getTimestamp = date => { diff --git a/docker-compose.yml b/docker-compose.yml index a18caa2..58e3d6b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,7 +4,7 @@ services: image: ${RAIDEN_NODE_VERSION:-raidennetwork/raiden:v1.2.0} container_name: raiden1 restart: unless-stopped - command: --address "${NODE1_ETH_ADDRESS}" --keystore-path /raiden/keystore --password-file /raiden/password.txt --eth-rpc-endpoint "${ETH_RPC_ENDPIONT}" --network-id goerli --environment-type development --api-address "0.0.0.0:5001" --pathfinding-service-address "https://pfs-goerli.services-dev.raiden.network" --accept-disclaimer + command: --address "${NODE1_ETH_ADDRESS}" --keystore-path /raiden/keystore --password-file /raiden/password.txt --eth-rpc-endpoint "${ETH_RPC_ENDPIONT}" --network-id goerli --environment-type development --api-address "0.0.0.0:5001" --pathfinding-service-address "https://pfs.demo001.env.raiden.network" --matrix-server "https://transport.transport01.raiden.network" --accept-disclaimer ports: - "5001:5001" volumes: @@ -17,7 +17,7 @@ services: image: ${RAIDEN_NODE_VERSION:-raidennetwork/raiden:v1.2.0} container_name: raiden2 restart: unless-stopped - command: --address "${NODE2_ETH_ADDRESS}" --keystore-path /raiden/keystore --password-file /raiden/password.txt --eth-rpc-endpoint "${ETH_RPC_ENDPIONT}" --network-id goerli --environment-type development --api-address "0.0.0.0:5001" --pathfinding-service-address "https://pfs-goerli.services-dev.raiden.network" --accept-disclaimer + command: --address "${NODE2_ETH_ADDRESS}" --keystore-path /raiden/keystore --password-file /raiden/password.txt --eth-rpc-endpoint "${ETH_RPC_ENDPIONT}" --network-id goerli --environment-type development --api-address "0.0.0.0:5001" --pathfinding-service-address "https://pfs.demo001.env.raiden.network" --matrix-server "https://transport.transport01.raiden.network" --accept-disclaimer ports: - "5002:5001" volumes: @@ -30,7 +30,7 @@ services: image: ${RAIDEN_NODE_VERSION:-raidennetwork/raiden:v1.2.0} container_name: raiden3 restart: unless-stopped - command: --address "${NODE3_ETH_ADDRESS}" --keystore-path /raiden/keystore --password-file /raiden/password.txt --eth-rpc-endpoint "${ETH_RPC_ENDPIONT}" --network-id goerli --environment-type development --api-address "0.0.0.0:5001" --pathfinding-service-address "https://pfs-goerli.services-dev.raiden.network" --accept-disclaimer + command: --address "${NODE3_ETH_ADDRESS}" --keystore-path /raiden/keystore --password-file /raiden/password.txt --eth-rpc-endpoint "${ETH_RPC_ENDPIONT}" --network-id goerli --environment-type development --api-address "0.0.0.0:5001" --pathfinding-service-address "https://pfs.demo001.env.raiden.network" --matrix-server "https://transport.transport01.raiden.network" --accept-disclaimer ports: - "5003:5001" volumes: