@c10k/tx-manager
Version:
NodeJS MySQL TxManager and MapperFactory
82 lines (73 loc) • 2.18 kB
JavaScript
import {txManager, mapperFactory} from "../config/database.js";
export default class TestService {
constructor() {
this.__mapper = mapperFactory.create({namespace: `TestMapper`, verbose: true});
}
async createTableIfNotExist() {
return await txManager.runTransaction(async () => {
const [result] = await this.__mapper.createTableIfNotExist();
return result;
});
}
async dropTable() {
return await txManager.runTransaction(async () => {
const [result] = await this.__mapper.dropTable();
return result;
});
}
/**
*
* @param key {string}
* @return {Promise<number>}
*/
async getByKey(key) {
return await txManager.runQuery(async () => {
const [rows] = await this.__mapper.getByKey({key});
return txManager.getSelectOneRecord(rows);
});
}
/**
*
* @param key {string}
* @return {Promise<number>}
*/
async save(key) {
return await txManager.runTransaction(async () => {
const [{insertId}] = await this.__mapper.save({key});
return insertId;
});
}
/**
*
* @param keyList {[string]}
* @return {Promise<[number]>}
*/
async batchSave(keyList) {
return await txManager.runTransaction(async () => {
const [result] = await this.__mapper.batchSave({list: keyList});
return txManager.getBatchInsertIdList(result);
});
}
/**
*
* @param id {number}
* @return {Promise<number>}
*/
async deleteById(id) {
return await txManager.runTransaction(async () => {
const [{affectedRows}] = await this.__mapper.deleteById({id});
return affectedRows > 0;
});
}
/**
*
* @param time {number} second
* @return {Promise<*>}
*/
async sleepByMySQL(time) {
return await txManager.runQuery(async () => {
const [rows] = await this.__mapper.sleepByMySQL({time});
return txManager.getSelectOneRecord(rows);
});
}
}