component-dbs-core
Version:
DTO objects shared among device backend
198 lines • 6.07 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const graphql_tag_1 = __importDefault(require("graphql-tag"));
const appsyncClient_1 = require("./appsyncClient");
const URL = 'https://wi46fdjdd5dzblewd5illnfqqi.appsync-api.ap-southeast-2.amazonaws.com/graphql';
const subscribeTxn = graphql_tag_1.default `
subscription request($id: ID!) {
responseTransaction(id: $id) {
id
caid
catid
}
}
`;
const responseTxn = graphql_tag_1.default `
mutation responseTransaction($transaction: TransactionResponseInput!) {
responseTransaction(transaction: $transaction) {
id
caid
catid
}
}
`;
const requestTxn = graphql_tag_1.default `
mutation requestTransaction($transaction: TransactionRequestInput!) {
requestTransaction(transaction: $transaction) {
status
}
}
`;
const subscribeTransaction = (gq) => {
console.log('send subscription transaction response');
const observable = gq
.subscribe({
query: subscribeTxn,
fetchPolicy: 'network-only',
variables: { id: '123' },
})
.subscribe({
next: (data) => {
console.log('realtime data: ', data);
},
complete: () => {
console.log('complete');
},
error: (err) => console.error(err),
});
};
const responseTransaction = (gq) => {
console.log('response transaction');
gq.mutate({
mutation: responseTxn,
variables: {
transaction: { id: '123' },
},
})
.then((data) => {
console.log('response txn rep:', data);
})
.catch((err) => {
console.error(err);
});
};
const requestTransaction = (gq) => {
console.log('request transaction');
gq.mutate({
mutation: requestTxn,
variables: {
transaction: { id: '123' },
},
})
.then((data) => {
console.log('request txn rep:', data);
})
.catch((err) => {
console.error(err);
});
};
const onTransactionUpdate = (gq) => {
gq.subscribe({
query: graphql_tag_1.default `
subscription {
onTransactionUpdate(
deviceUuid: "413edb61-acb0-4475-921a-dfe1aaa59e2f"
) {
id
taxAmounts {
name
amount
}
}
}
`,
fetchPolicy: 'network-only',
}).subscribe({
next: (data) => {
console.log('get subscribed data:', data);
console.log('get subscribed data:', JSON.stringify(data.data.onTransactionUpdate.taxAmounts));
},
error: (err) => console.error('get error:', err),
});
};
const sendTransactionUpdate = (gq) => {
const transaction = {
surchargeAmount: '500',
scheme: 'AMEX',
siteName: '345bb58f-de7e-42a8-a8d5-8dbb49a02fc6',
deviceName: 'abca11a1-12bd-4280-bc22-731ca498e3fa',
reference: '24e69d65-069e-45c2-9b4a-8163bf391f8d',
depositDate: '2020-07-13T00:39:48.006Z',
id: 'e0dc8f0e-9739-4ff4-9a3b-1db236f8df8a',
siteUuid: '229962ec-691e-40fe-b4ac-0f2adfa3c633',
timestamp: '2020-07-13T00:39:48.006Z',
saleAmount: '0',
amount: '200',
maskedPan: 'masked',
entityUuid: '539ea526-1517-4e42-8e71-6fe8a281b577',
tipAmount: '100',
transactionType: 'PURCHASE',
feeAmount: '400',
taxAmounts: [{ amount: '100', name: 'name' }],
depositUuid: 'a984f940-43b1-48bf-a566-d7ffec86cae2',
status: 'APPROVED',
deviceUuid: '65c3140c-b6d0-4675-9e7e-fbc4750910cd',
};
let keys = Object.keys(transaction);
keys = [
'surchargeAmount',
'scheme',
'siteName',
'deviceName',
'reference',
'depositDate',
'id',
'siteUuid',
'timestamp',
'saleAmount',
'amount',
'maskedPan',
'entityUuid',
'tipAmount',
'transactionType',
'feeAmount',
'taxAmounts {amount,name}',
'depositUuid',
'status',
'deviceUuid',
];
console.log(keys);
gq.mutate({
mutation: graphql_tag_1.default `
mutation publishTransactionUpdateEvent($transaction: TransactionInput!) {
publishTransactionUpdateEvent(transaction: $transaction) {
${keys}
}
}
`,
variables: {
transaction,
},
})
.then((data) => {
console.log('mutation ', data);
})
.catch((err) => console.error(err));
};
const client = appsyncClient_1.createClient(URL, appsyncClient_1.oidcAuth);
const sleep = () => new Promise((resolve) => setTimeout(resolve(), 1000));
const testTransaction = () => {
client
.hydrated()
.then((gq) => __awaiter(void 0, void 0, void 0, function* () {
onTransactionUpdate(gq);
// await sleep();
// sendTransactionUpdate(gq);
// subscribeTransaction(gq);
// await sleep();
// responseTransaction(gq);
// requestTransaction(gq);
}))
.catch((err) => {
console.error(err);
});
};
testTransaction();
//# sourceMappingURL=transactionDemo.js.map