From b8ca52c69812129a16714b5ba7c209b4ec8e039a Mon Sep 17 00:00:00 2001 From: Sandor Date: Thu, 15 Jan 2015 18:24:36 +0100 Subject: [PATCH 1/4] tedious connection pool that works without --noImplicitAny --- .../tedious-connection-pool-tests.ts | 56 ++++++++++ .../tedious-connection-pool.d.ts | 104 ++++++++++++++++++ 2 files changed, 160 insertions(+) create mode 100644 tedious-connection-pool/tedious-connection-pool-tests.ts create mode 100644 tedious-connection-pool/tedious-connection-pool.d.ts diff --git a/tedious-connection-pool/tedious-connection-pool-tests.ts b/tedious-connection-pool/tedious-connection-pool-tests.ts new file mode 100644 index 0000000000..6c39fd2013 --- /dev/null +++ b/tedious-connection-pool/tedious-connection-pool-tests.ts @@ -0,0 +1,56 @@ +// Type definitions for tedious-connection-pool +// Project: https://github.com/pekim/tedious-connection-pool +// Definitions by: Cyprien Autexier https://github.com/sandorfr +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// + +"use strict"; + +import tediousConnectionPool = require("tedious-connection-pool"); +import tedious = require("tedious"); + +var config: tedious.ConnectionConfig = { + userName: "rogier", + password: "rogiers password", + server: "127.0.0.1", + options: { + database: "somedb", + instance: "someinstance" + } +}; + +var poolConfig : tediousConnectionPool.PoolConfig = { + min: 1, + max: 4 +}; + +var pool: tediousConnectionPool.ConnectionPool = new tediousConnectionPool(poolConfig, config); + +pool.on('error', (err: Error) => { + console.error(err); +}); + +pool.acquire((err: Error, connection: tediousConnectionPool.PooledConnection) =>{ + console.log("hurray"); + connection.beginTransaction((error: Error): void => {}, "some name"); + connection.rollbackTransaction((error: Error): void => {}); + connection.commitTransaction((error: Error): void => {}); + + + var request = new tedious.Request("SELECT * FROM foo", (error: Error, rowCount: number): void => { + }); + request.on("row", (row: tedious.ColumnValue[]): void => { + }); + connection.execSql(request); + + connection.release(); + + + pool.drain(); +}); + + + + + diff --git a/tedious-connection-pool/tedious-connection-pool.d.ts b/tedious-connection-pool/tedious-connection-pool.d.ts new file mode 100644 index 0000000000..b4ead6cfdd --- /dev/null +++ b/tedious-connection-pool/tedious-connection-pool.d.ts @@ -0,0 +1,104 @@ +// Type definitions for tedious-connection-pool +// Project: https://github.com/pekim/tedious-connection-pool +// Definitions by: Cyprien Autexier https://github.com/sandorfr +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// + +declare module "tedious-connection-pool" { + import tedious = require('tedious'); + + module tcp { + + /** + * Extends Tedious Connection with release function + */ + export class PooledConnection extends tedious.Connection { + /** + * If the connection is issued from a connection pool returns the connection to the pool. + */ + release():void; + } + + /** + * Acquire function callback signature + */ + export interface ConnectionCallback { + /** + * Provides a connection or an error + * @param err error if any + * @param connection issued from the pool + */ + (err:Error, connection:PooledConnection): void; + } + + /** + * Pool Configuration interface + */ + export interface PoolConfig { + + /** + * Minimum concurrent connections + */ + min?: number; + + /** + * Maximum concurrent connections + */ + max?: number; + + /** + * Defines if logging is activated + */ + log?: boolean; + + /** + * Idle timeout + */ + idleTimeout?: number; + + /** + * Retry delay + */ + retryDelay?: number; + + /** + * Acquire timeout + */ + acquireTimeout?: number; + } + + /** + * Tedious Connection Pool Interface + */ + export interface ConnectionPool { + + /** + * acquires a connection from the pool + * @param callback invoked when the connection is retrieved and ready + */ + acquire(callback:ConnectionCallback):void; + + /** + * listens for a specific connection pool event + * @param event the event name + * @param callback invoked when the event is raised + */ + on(event:string, callback:Function):void; + + /** + * closes opened connections + */ + drain():void; + } + } + + /** + * Connection Pool constructor + * @param poolConfig the pool configuration + * @param connectionConfig the connection configuration + */ + function tcp(poolConfig:tcp.PoolConfig, connectionConfig:any): void; + + export = tcp; +} From 291f5b653658fd88cff3f2de667b87b5973b094e Mon Sep 17 00:00:00 2001 From: Sandor Date: Fri, 16 Jan 2015 11:20:37 +0100 Subject: [PATCH 2/4] fix --noimplicitany compatibility issue --- .../tedious-connection-pool-tests.ts | 8 +-- .../tedious-connection-pool.d.ts | 57 ++++++++++--------- 2 files changed, 35 insertions(+), 30 deletions(-) diff --git a/tedious-connection-pool/tedious-connection-pool-tests.ts b/tedious-connection-pool/tedious-connection-pool-tests.ts index 6c39fd2013..4eda6b3a50 100644 --- a/tedious-connection-pool/tedious-connection-pool-tests.ts +++ b/tedious-connection-pool/tedious-connection-pool-tests.ts @@ -7,7 +7,7 @@ "use strict"; -import tediousConnectionPool = require("tedious-connection-pool"); +import ConnectionPool = require("tedious-connection-pool"); import tedious = require("tedious"); var config: tedious.ConnectionConfig = { @@ -20,18 +20,18 @@ var config: tedious.ConnectionConfig = { } }; -var poolConfig : tediousConnectionPool.PoolConfig = { +var poolConfig : ConnectionPool.PoolConfig = { min: 1, max: 4 }; -var pool: tediousConnectionPool.ConnectionPool = new tediousConnectionPool(poolConfig, config); +var pool: ConnectionPool = new ConnectionPool(poolConfig, config); pool.on('error', (err: Error) => { console.error(err); }); -pool.acquire((err: Error, connection: tediousConnectionPool.PooledConnection) =>{ +pool.acquire((err: Error, connection: ConnectionPool.PooledConnection) =>{ console.log("hurray"); connection.beginTransaction((error: Error): void => {}, "some name"); connection.rollbackTransaction((error: Error): void => {}); diff --git a/tedious-connection-pool/tedious-connection-pool.d.ts b/tedious-connection-pool/tedious-connection-pool.d.ts index b4ead6cfdd..5076a81164 100644 --- a/tedious-connection-pool/tedious-connection-pool.d.ts +++ b/tedious-connection-pool/tedious-connection-pool.d.ts @@ -68,37 +68,42 @@ declare module "tedious-connection-pool" { acquireTimeout?: number; } - /** - * Tedious Connection Pool Interface - */ - export interface ConnectionPool { - /** - * acquires a connection from the pool - * @param callback invoked when the connection is retrieved and ready - */ - acquire(callback:ConnectionCallback):void; - - /** - * listens for a specific connection pool event - * @param event the event name - * @param callback invoked when the event is raised - */ - on(event:string, callback:Function):void; - - /** - * closes opened connections - */ - drain():void; - } } /** - * Connection Pool constructor - * @param poolConfig the pool configuration - * @param connectionConfig the connection configuration + * Tedious Connection Pool Class */ - function tcp(poolConfig:tcp.PoolConfig, connectionConfig:any): void; + class tcp { + + /** + * Connection Pool constructor + * @param poolConfig the pool configuration + * @param connectionConfig the connection configuration + */ + constructor(poolConfig:tcp.PoolConfig, connectionConfig:tedious.ConnectionConfig); + + /** + * acquires a connection from the pool + * @param callback invoked when the connection is retrieved and ready + */ + acquire(callback:tcp.ConnectionCallback):void; + + /** + * listens for a specific connection pool event + * @param event the event name + * @param callback invoked when the event is raised + */ + on(event:string, callback:Function):void; + + /** + * closes opened connections + */ + drain():void; + } + + + export = tcp; } From b85a20e7546735367dd1a9712efdeda7f3a2bccd Mon Sep 17 00:00:00 2001 From: Sandor Date: Fri, 16 Jan 2015 11:25:10 +0100 Subject: [PATCH 3/4] fix header format --- tedious-connection-pool/tedious-connection-pool.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tedious-connection-pool/tedious-connection-pool.d.ts b/tedious-connection-pool/tedious-connection-pool.d.ts index 5076a81164..5d0a912c20 100644 --- a/tedious-connection-pool/tedious-connection-pool.d.ts +++ b/tedious-connection-pool/tedious-connection-pool.d.ts @@ -1,6 +1,6 @@ // Type definitions for tedious-connection-pool // Project: https://github.com/pekim/tedious-connection-pool -// Definitions by: Cyprien Autexier https://github.com/sandorfr +// Definitions by: Cyprien Autexier // Definitions: https://github.com/borisyankov/DefinitelyTyped /// From df93d055203c431e6b591bd734cec64c9c3677e6 Mon Sep 17 00:00:00 2001 From: Sandor Date: Fri, 16 Jan 2015 11:29:11 +0100 Subject: [PATCH 4/4] fix header format --- tedious-connection-pool/tedious-connection-pool-tests.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tedious-connection-pool/tedious-connection-pool-tests.ts b/tedious-connection-pool/tedious-connection-pool-tests.ts index 4eda6b3a50..aef2c9f605 100644 --- a/tedious-connection-pool/tedious-connection-pool-tests.ts +++ b/tedious-connection-pool/tedious-connection-pool-tests.ts @@ -1,6 +1,6 @@ // Type definitions for tedious-connection-pool // Project: https://github.com/pekim/tedious-connection-pool -// Definitions by: Cyprien Autexier https://github.com/sandorfr +// Definitions by: Cyprien Autexier // Definitions: https://github.com/borisyankov/DefinitelyTyped ///