UNPKG

machinomy

Version:

Micropayments powered by Ethereum

59 lines 2.97 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const AbstractPaymentsDatabase_1 = require("../AbstractPaymentsDatabase"); const payment_1 = require("../../payment"); async function createTable(client) { await client.run('CREATE TABLE IF NOT EXISTS payment ("channelId" TEXT, kind TEXT, token TEXT, sender TEXT, receiver TEXT,' + ' price INTEGER, value INTEGER, "channelValue" INTEGER, v INTEGER, r TEXT, s TEXT, meta TEXT, "contractAddress" TEXT, createdAt TEXT)'); } class SqlitePaymentsDatabase extends AbstractPaymentsDatabase_1.default { async save(token, payment) { return this.engine.exec(async (client) => { await createTable(client); const serialized = payment_1.PaymentSerde.instance.serialize(payment); serialized.kind = this.kind; serialized.token = token; await client.run('INSERT INTO payment("channelId", kind, token, sender, receiver, price, value, ' + '"channelValue", v, r, s, meta, "contractAddress", "createdAt") VALUES($channelId, $kind, $token, $sender, ' + '$receiver, $price, $value, $channelValue, $v, $r, $s, $meta, $contractAddress, $createdAt)', { $channelId: serialized.channelId, $kind: serialized.kind, $token: serialized.token, $sender: serialized.sender, $receiver: serialized.receiver, $price: serialized.price, $value: serialized.value, $channelValue: serialized.channelValue, $v: serialized.v, $r: serialized.r, $s: serialized.s, $meta: serialized.meta, $contractAddress: serialized.contractAddress, $createdAt: Date.now() }); }); } async firstMaximum(channelId) { return this.engine.exec(async (client) => { await createTable(client); let row = await client.get('SELECT "channelId", kind, token, sender, receiver, price, value, ' + '"channelValue", v, r, s, meta, "contractAddress", "createdAt" FROM payment WHERE "channelId" = $channelId ' + 'ORDER BY value DESC', { $channelId: channelId.toString() }); return row ? this.inflatePayment(row) : null; }); } async findByToken(token) { return this.engine.exec(async (client) => { await createTable(client); let row = await client.get('SELECT "channelId", kind, token, sender, receiver, price, value, ' + '"channelValue", v, r, s, meta, "contractAddress", "createdAt" FROM payment WHERE token = $token', { $token: token }); return row ? this.inflatePayment(row) : null; }); } } exports.default = SqlitePaymentsDatabase; //# sourceMappingURL=SqlitePaymentsDatabase.js.map