UNPKG

es-entity

Version:

ORM framework for Node js based on Ecmascript 6 and Typescript.

66 lines (53 loc) 1.96 kB
// @ts-ignore import mssql from 'mssql'; import * as bean from '../bean/index.js'; import * as sql from '../sql/index.js'; import Handler from './Handler.js'; const mssqlDriver = await import('mssql'); export default class MsSqlServer extends Handler { connectionPool: mssql.ConnectionPool; constructor(config: bean.IConnectionConfig) { super(config); this.connectionPool = new mssqlDriver.ConnectionPool({ server: this.config.host, port: this.config.port, user: this.config.username, password: this.config.password, database: this.config.database }); } async init() { await this.connectionPool.connect(); } async getConnection(): Promise<mssql.Request> { await mssqlDriver.connect({ server: this.config.host, port: this.config.port, user: this.config.username, password: this.config.password, database: this.config.database }); return new mssqlDriver.Request(); } async initTransaction(conn: mssql.Request): Promise<void> {} async commit(conn: mssql.Request): Promise<void> {} async rollback(conn: mssql.Request): Promise<void> {} async close(conn: mssql.Request): Promise<void> {} async end(): Promise<void> {} async run(queryStmt: string | sql.Statement | sql.Statement[], connection?: mssql.Request) { let { query, dataArgs } = this.prepareQuery(queryStmt); let conn = connection ?? this.connectionPool.request(); let data = await conn.query(query); let result: bean.ResultSet = new bean.ResultSet(); result.rowCount = data.rowsAffected[0] ?? 0; result.rows = data.recordset; return result; } async stream(queryStmt: string | sql.Statement | sql.Statement[], connection?: mssql.Request) { let { query, dataArgs } = this.prepareQuery(queryStmt); let conn = connection ?? this.connectionPool.request(); conn.stream = true; conn.query(query); return conn.toReadableStream(); } }