UNPKG

rapid-db

Version:

Rapid Database Interface

67 lines (60 loc) 1.59 kB
/** * Copyright (c) 2017 Lucky Byte, Inc. */ const debug = require('debug')('db'); const uuid = require('uuid'); const pgp = require('../init'); const utils = require('./utils'); /** * 构造插入交易流水 SQL 语句 * * 参数: * record: 见交易流水说明 * uuid: 交易uuid * * 返回: * SQL 语句 */ const build_insert = (record, trade_uuid) => { if (!record || !trade_uuid) { throw new Error('插入交易流水参数无效'); } // 检查是否缺少必须的字段 for (let i = 0; i < utils.required_keys.length; i++) { const key = utils.required_keys[i]; if (record[key] == null) { throw new Error(`插入交易流水缺少必须的字段[${key}]`); } } let fields = { uuid: trade_uuid } for (key in record) { if (utils.all_keys.indexOf(key) >= 0) { fields[key] = record[key]; } } return pgp.helpers.insert(fields, null, 'rapid_trades'); } /** * 插入一条新交易流水 * * 参数 * data: 流水记录 * db: 数据库对象,如果为空,则使用全局 _unique_db * 返回 * 新插入流水 UUID */ const insert = async (record, db) => { db = db || _unique_db; if (!db) { throw new Error('数据库对象无效,检查是否已初始化数据库'); } let trade_uuid; if (record.uuid) { trade_uuid = record.uuid; } else { trade_uuid = uuid.v4(); } await db.none(build_insert(record, trade_uuid)); return trade_uuid; } module.exports = insert;