UNPKG

@payburner/keyburner-sidewinder-core

Version:
224 lines 8.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AWSDynamoTokenService = void 0; const npm_1 = require("@payburner/keyburner-sidewinder-model/dist/npm"); class AWSDynamoTokenService { constructor(docClient) { this.docClient = null; this.docClient = docClient; } tokenId(environment, token_symbol) { return environment + '/' + token_symbol; } createToken(token) { const svc = this; return new Promise((resolve, reject) => { svc.getToken(token.environment, token.token_symbol) .then((token) => { reject('Token already exists.'); }) .catch((error) => { const dataBody = token; const params = { TableName: 'sidewinder_token', Item: dataBody }; svc.docClient.put(params, function (err, data) { if (err) { reject('Db error: ' + err); } else { resolve(token); } }); }); }); } getToken(environment, token_symbol) { const self = this; return new Promise((resolve, reject) => { const params = { TableName: "sidewinder_token", KeyConditionExpression: "token_symbol = :token_symbol and environment = :environment", ExpressionAttributeValues: { ":token_symbol": token_symbol, ":environment": environment } }; console.log('Querying getToken:' + JSON.stringify(params, null, 2)); self.docClient.query(params, function (err, data) { if (err) { console.error("GetToken :: Unable to query. Error:", JSON.stringify(err, null, 2)); reject(err); } else { if (data.Items.length === 0) { reject('getToken Not found.'); } else { resolve(data.Items[0]); } } }); }); } getTokenAccount(environment, token_symbol, address) { const self = this; const token_account_id = npm_1.AccountUtils.calculateTokenAccountId(environment, token_symbol, address); return new Promise((resolve, reject) => { const params = { TableName: "sidewinder_token_account", KeyConditionExpression: "token_account_id = :token_account_id", ExpressionAttributeValues: { ":token_account_id": token_account_id } }; console.log('Querying getTokenAccount:' + JSON.stringify(params, null, 2)); self.docClient.query(params, function (err, data) { if (err) { console.error("getTokenAccount :: Unable to query. Error:", JSON.stringify(err, null, 2)); reject(err); } else { if (data.Items.length === 0) { reject('getTokenAccount Not found.'); } else { resolve(data.Items[0]); } } }); }); } isAddressPermissionedOnToken(environment, token_symbol, address) { return new Promise((resolve) => { resolve(false); }); } createTokenAccount(token_account) { const self = this; const environment = token_account.environment; const address = token_account.account_owner_address; const token_symbol = token_account.token_symbol; const token_account_id = npm_1.AccountUtils.calculateTokenAccountId(environment, token_symbol, address); return new Promise((resolve, reject) => { self.getTokenAccount(environment, token_symbol, address).then((tokenAccount) => { reject('Account already exists.'); }).catch((error) => { token_account['token_account_id'] = token_account_id; const dataBody = token_account; const params = { TableName: 'sidewinder_token_account', Item: dataBody }; const t0 = new Date().getTime(); self.docClient.put(params, function (err, data) { console.log('Update Time Create Token Account: ' + (new Date().getTime() - t0)); if (err) { reject('Db error: ' + err); } else { resolve(token_account); } }); }); }); } setAmounts(environment, address, token_symbol, total_balance, available_balance) { console.log('SET AMOUNTS:' + npm_1.AccountUtils.calculateTokenAccountId(environment, token_symbol, address) + ' ' + total_balance + ' ' + available_balance); const self = this; return new Promise((resolve, reject) => { self.getTokenAccount(environment, token_symbol, address).then((tokenAccount) => { tokenAccount.available_balance = available_balance; tokenAccount.total_balance = total_balance; const params = { TableName: 'sidewinder_token_account', Item: tokenAccount }; const t0 = new Date().getTime(); self.docClient.put(params, function (err, data) { console.log('Update Time Set Amounts: ' + (new Date().getTime() - t0)); if (err) { reject('Db error: ' + err); } else { resolve(true); } }); }).catch((error) => { reject('Token Account Not Found'); }); }); } updateToken(token) { const self = this; return new Promise((resolve, reject) => { self.getToken(token.environment, token.token_symbol).then((resolvedToken) => { const dataBody = token; const params = { TableName: 'sidewinder_token', Item: dataBody }; self.docClient.put(params, function (err, data) { if (err) { console.log("Dynamo DB Error", err); reject('Db error: ' + err); } else { console.log("Dynamo DB Success", data); resolve(token); } }); }).catch((error) => { reject('Token does not exist.'); }); }); } freezeTokenAccount(environment, token_symbol, address) { const self = this; return new Promise((resolve, reject) => { self.getTokenAccount(environment, token_symbol, address).then((tokenAccount) => { tokenAccount.frozen = true; const params = { TableName: 'sidewinder_token_account', Item: tokenAccount }; self.docClient.put(params, function (err, data) { if (err) { reject('Db error: ' + err); } else { resolve(tokenAccount); } }); }).catch((error) => { reject('Token Account Not Found'); }); }); } unFreezeTokenAccount(environment, token_symbol, address) { const self = this; return new Promise((resolve, reject) => { self.getTokenAccount(environment, token_symbol, address).then((tokenAccount) => { tokenAccount.frozen = false; const params = { TableName: 'sidewinder_token_account', Item: tokenAccount }; self.docClient.put(params, function (err, data) { if (err) { reject('Db error: ' + err); } else { console.log("Dynamo DB Success", data); resolve(tokenAccount); } }); }).catch((error) => { reject('Token Account Not Found'); }); }); } } exports.AWSDynamoTokenService = AWSDynamoTokenService; //# sourceMappingURL=AWSDynamoTokenService.js.map