From 280b0abd481387e1ed5f410813b36a407018e67c Mon Sep 17 00:00:00 2001 From: Ben Farr Date: Sun, 13 Sep 2015 17:16:15 +0100 Subject: [PATCH 01/12] Fix table.row.add method table.row.add takes a variable amount of arguments --- mssql/mssql-tests.ts | 14 ++++++++++++++ mssql/mssql.d.ts | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/mssql/mssql-tests.ts b/mssql/mssql-tests.ts index 453b2b4e3..29dcd3421 100644 --- a/mssql/mssql-tests.ts +++ b/mssql/mssql-tests.ts @@ -76,3 +76,17 @@ var connection: sql.Connection = new sql.Connection(config, function (err: any) }); } }); + +function test_table() { + var table = new sql.Table('#temp_table'); + + table.create = true; + + table.columns.add('name', sql.VarChar(sql.MAX), { nullable: false }); + table.columns.add('type', sql.Int, { nullable: false }); + table.columns.add('amount', sql.Decimal(7, 2), { nullable: false }); + + table.rows.add('name', 42, 3.50); + table.rows.add('name2', 7, 3.14); +} + diff --git a/mssql/mssql.d.ts b/mssql/mssql.d.ts index 880eb716c..519a6edeb 100644 --- a/mssql/mssql.d.ts +++ b/mssql/mssql.d.ts @@ -78,7 +78,7 @@ declare module "mssql" { } class rows { - public add(row: any): void; + public add(...row: any[]): void; } export class Table { From ffe1b8a10b0e3445f37684187fdf103c3e143fef Mon Sep 17 00:00:00 2001 From: Ben Farr Date: Sun, 13 Sep 2015 17:42:11 +0100 Subject: [PATCH 02/12] Add missing module variables --- mssql/mssql.d.ts | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/mssql/mssql.d.ts b/mssql/mssql.d.ts index 519a6edeb..7a7d79f6d 100644 --- a/mssql/mssql.d.ts +++ b/mssql/mssql.d.ts @@ -39,15 +39,35 @@ declare module "mssql" { export var Geometry: any; export interface options { + + export var MAX: number; + export var fix: boolean; + export var Promise: any; + + export var map: { js: any, sql: any }[]; + export var DRIVERS: string[]; + + export var ISOLATION_LEVEL: { + READ_UNCOMMITTED: number + READ_COMMITTED: number + REPEATABLE_READ: number + SERIALIZABLE: number + SNAPSHOT: number + } + + export interface IOptions { encrypt: boolean; } - export interface pool { + + export interface IPool { min: number; max: number; idleTimeoutMillis: number; } + export var pool: IPool; + export interface config { driver?: string; user?: string; @@ -59,9 +79,8 @@ declare module "mssql" { connectionTimeout?: number; requestTimeout?: number; stream?: boolean; - options?: options; - pool?: pool; - + options?: IOptions; + pool?: IPool; } export class Connection { From 5ac3ef67bac39d4f69abed92450357fd5de1302b Mon Sep 17 00:00:00 2001 From: Ben Farr Date: Sun, 13 Sep 2015 21:36:04 +0100 Subject: [PATCH 03/12] Return Promises Methods return a promises if the callback is omitted. --- mssql/mssql-tests.ts | 23 ++++++++++++++++ mssql/mssql.d.ts | 64 +++++++++++++++++++++++++++----------------- 2 files changed, 63 insertions(+), 24 deletions(-) diff --git a/mssql/mssql-tests.ts b/mssql/mssql-tests.ts index 29dcd3421..d4cf834b0 100644 --- a/mssql/mssql-tests.ts +++ b/mssql/mssql-tests.ts @@ -90,3 +90,26 @@ function test_table() { table.rows.add('name2', 7, 3.14); } + +function test_promise_returns() { + // Methods return a promises if the callback is omitted. + var connection: sql.Connection = new sql.Connection(config); + connection.connect().then(() => { }); + connection.close().then(() => { }); + + var preparedStatment = new sql.PreparedStatement(connection); + preparedStatment.prepare("SELECT @myValue").then(() => { }); + preparedStatment.execute({ myValue: 1 }).then((recordSet) => { }); + preparedStatment.unprepare().then(() => { }); + + var transaction = new sql.Transaction(connection); + transaction.begin().then(() => { }); + transaction.commit().then(() => { }); + transaction.rollback().then(() => { }); + + var request = new sql.Request(); + request.batch('create procedure #temporary as select * from table').then((recordset) => { }); + request.bulk(new sql.Table("table_name")).then(() => { }); + request.query('SELECT 1').then((recordset) => { }); + request.execute('procedure_name').then((recordset) => { }); +} diff --git a/mssql/mssql.d.ts b/mssql/mssql.d.ts index 7a7d79f6d..f5bdd72c5 100644 --- a/mssql/mssql.d.ts +++ b/mssql/mssql.d.ts @@ -3,6 +3,8 @@ // Definitions by: COLSA Corporation // Definitions: https://github.com/borisyankov/DefinitelyTyped +/// + declare module "mssql" { export var Date: any; @@ -47,12 +49,15 @@ declare module "mssql" { export var map: { js: any, sql: any }[]; export var DRIVERS: string[]; + type recordSet = any; + type IIsolationLevel = number; + export var ISOLATION_LEVEL: { - READ_UNCOMMITTED: number - READ_COMMITTED: number - REPEATABLE_READ: number - SERIALIZABLE: number - SNAPSHOT: number + READ_UNCOMMITTED: IIsolationLevel + READ_COMMITTED: IIsolationLevel + REPEATABLE_READ: IIsolationLevel + SERIALIZABLE: IIsolationLevel + SNAPSHOT: IIsolationLevel } export interface IOptions { @@ -87,9 +92,11 @@ declare module "mssql" { public constructor(config: config, callback?: (err?: any) => void); - public connect(callback?: (err?: any) => void): void; + public connect(): Promise; + public connect(callback: (err: any) => void): void; - public close(): void; + public close(): Promise; + public close(callback: (err: any) => void): void; } class columns { @@ -110,32 +117,41 @@ declare module "mssql" { export class Request { public constructor(connection?: Connection); - public execute(procedure: string, callback?: (err?: any, recordsets?: any, returnValue?: any) => void): void; - public input(name: string, value: any): void; - public input(name: string, type: any, value: any): void; - public output(name: string, type: any, value?: any): void; public pipe(stream: any): void; - public query(command: string, callback?: (err?: any, recordset?: any) => void): void; - public batch(batch: string, callback?: (err?: any, recordset?: any) => void): void; - public bulk(table: Table, callback?: (err?: any, rowCount?: any) => void): void; - public cancel(): void; - public parameters: any; + execute(procedure: string): Promise; + execute(procedure: string, callback: (err?: any, recordsets?: any, returnValue?: any) => void): void; + input(name: string, value: any): void; + input(name: string, type: any, value: any): void; + output(name: string, type: any, value?: any): void; + query(command: string): Promise; + query(command: string, callback: (err?: any, recordset?: any) => void): void; + batch(batch: string): Promise; + batch(batch: string, callback: (err?: any, recordset?: any) => void): void; + bulk(table: Table): Promise; + bulk(table: Table, callback: (err: any, rowCount: any) => void): void; + cancel(): void; + parameters: any; } export class Transaction { - public constructor(connection?: Connection); - public begin(isolationLevel?: any, callback?: (err?: any) => void): void; - public begin(callback?: (err?: any) => void): void; - public commit(callback?: (err?: any) => void): void; - public rollback(callback?: (err?: any) => void): void; + public constructor(connection: Connection); + public begin(isolationLevel?: IIsolationLevel): Promise; + public begin(isolationLevel?: IIsolationLevel, callback?: (err?: any) => void): void; + public commit(): Promise; + public commit(callback: (err?: any) => void): void; + public rollback(): Promise; + public rollback(callback: (err?: any) => void): void; } export class PreparedStatement { public constructor(connection?: Connection); public input(name: string, type: any): void; public output(name: string, type: any): void; - public prepare(statement: string, callback?: (err?: any) => void): void; - public execute(values: any, callback?: (err?: any) => void): void; - public unprepare(callback?: (err?: any) => void): void; + public prepare(statement?: string): Promise; + public prepare(statement?: string, callback?: (err?: any) => void): void; + public execute(values: Object): Promise; + public execute(values: Object, callback: (err: any, recordSet: recordSet) => void): void; + public unprepare(): Promise; + public unprepare(callback: (err?: any) => void): void; } } From 1ae80ee1efa039bdb58687377da2ccd1792d0846 Mon Sep 17 00:00:00 2001 From: Ben Farr Date: Sun, 13 Sep 2015 21:49:01 +0100 Subject: [PATCH 04/12] Different arguments for new Request Request can be constructed with a connection, preparedStatment, transaction or no arguments --- mssql/mssql-tests.ts | 13 +++++++++++++ mssql/mssql.d.ts | 30 ++++++++++++++++-------------- 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/mssql/mssql-tests.ts b/mssql/mssql-tests.ts index d4cf834b0..3f4adcd41 100644 --- a/mssql/mssql-tests.ts +++ b/mssql/mssql-tests.ts @@ -113,3 +113,16 @@ function test_promise_returns() { request.query('SELECT 1').then((recordset) => { }); request.execute('procedure_name').then((recordset) => { }); } + + +function test_request_constructor() { + // Request can be constructed with a connection, preparedStatment, transaction or no arguments + var connection: sql.Connection = new sql.Connection(config); + var preparedStatment = new sql.PreparedStatement(connection); + var transaction = new sql.Transaction(connection); + + var request1 = new sql.Request(connection); + var request2 = new sql.Request(preparedStatment); + var request3 = new sql.Request(transaction); + var request4 = new sql.Request(); +} diff --git a/mssql/mssql.d.ts b/mssql/mssql.d.ts index f5bdd72c5..e0e58237c 100644 --- a/mssql/mssql.d.ts +++ b/mssql/mssql.d.ts @@ -117,20 +117,22 @@ declare module "mssql" { export class Request { public constructor(connection?: Connection); - public pipe(stream: any): void; - execute(procedure: string): Promise; - execute(procedure: string, callback: (err?: any, recordsets?: any, returnValue?: any) => void): void; - input(name: string, value: any): void; - input(name: string, type: any, value: any): void; - output(name: string, type: any, value?: any): void; - query(command: string): Promise; - query(command: string, callback: (err?: any, recordset?: any) => void): void; - batch(batch: string): Promise; - batch(batch: string, callback: (err?: any, recordset?: any) => void): void; - bulk(table: Table): Promise; - bulk(table: Table, callback: (err: any, rowCount: any) => void): void; - cancel(): void; - parameters: any; + public constructor(transaction: Transaction); + public constructor(preparedStatement: PreparedStatement); + public execute(procedure: string): Promise; + public execute(procedure: string, callback: (err?: any, recordsets?: any, returnValue?: any) => void): void; + public input(name: string, value: any): void; + public input(name: string, type: any, value: any): void; + public output(name: string, type: any, value?: any): void; + public pipe(stream: NodeJS.WritableStream): void; + public query(command: string): Promise; + public query(command: string, callback: (err?: any, recordset?: any) => void): void; + public batch(batch: string): Promise; + public batch(batch: string, callback: (err?: any, recordset?: any) => void): void; + public bulk(table: Table): Promise; + public bulk(table: Table, callback: (err: any, rowCount: any) => void): void; + public cancel(): void; + public parameters: any; } export class Transaction { From 1368ed3f942f45df7866ad128441716982d2cc34 Mon Sep 17 00:00:00 2001 From: Ben Farr Date: Sun, 13 Sep 2015 22:56:17 +0100 Subject: [PATCH 05/12] Classes extend EventEmitter Classes Connection, Request, Transaction and PreparedStatement all extend Node's EventEmitter --- mssql/mssql-tests.ts | 16 ++++++++++++++++ mssql/mssql.d.ts | 11 +++++++---- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/mssql/mssql-tests.ts b/mssql/mssql-tests.ts index 3f4adcd41..6fa546e66 100644 --- a/mssql/mssql-tests.ts +++ b/mssql/mssql-tests.ts @@ -126,3 +126,19 @@ function test_request_constructor() { var request3 = new sql.Request(transaction); var request4 = new sql.Request(); } + +function test_classes_extend_eventemitter() { + var connection: sql.Connection = new sql.Connection(config); + var transaction = new sql.Transaction(); + var request = new sql.Request(); + var preparedStatment = new sql.PreparedStatement(); + + connection.on('connect', () => { }); + transaction.on('begin', () => { }); + transaction.on('commit', () => { }); + transaction.on('rollback', () => { }); + request.on('done', () => { }); + request.on('error', () => { }); + + preparedStatment.on('error', () => { }) +} \ No newline at end of file diff --git a/mssql/mssql.d.ts b/mssql/mssql.d.ts index e0e58237c..4f2ee1ff7 100644 --- a/mssql/mssql.d.ts +++ b/mssql/mssql.d.ts @@ -3,6 +3,7 @@ // Definitions by: COLSA Corporation // Definitions: https://github.com/borisyankov/DefinitelyTyped +/// /// declare module "mssql" { @@ -41,6 +42,8 @@ declare module "mssql" { export var Geometry: any; export interface options { + import events = require('events'); + export var MAX: number; export var fix: boolean; @@ -88,7 +91,7 @@ declare module "mssql" { pool?: IPool; } - export class Connection { + export class Connection extends events.EventEmitter { public constructor(config: config, callback?: (err?: any) => void); @@ -115,7 +118,7 @@ declare module "mssql" { } - export class Request { + export class Request extends events.EventEmitter { public constructor(connection?: Connection); public constructor(transaction: Transaction); public constructor(preparedStatement: PreparedStatement); @@ -135,7 +138,7 @@ declare module "mssql" { public parameters: any; } - export class Transaction { + export class Transaction extends events.EventEmitter { public constructor(connection: Connection); public begin(isolationLevel?: IIsolationLevel): Promise; public begin(isolationLevel?: IIsolationLevel, callback?: (err?: any) => void): void; @@ -145,7 +148,7 @@ declare module "mssql" { public rollback(callback: (err?: any) => void): void; } - export class PreparedStatement { + export class PreparedStatement extends events.EventEmitter { public constructor(connection?: Connection); public input(name: string, type: any): void; public output(name: string, type: any): void; From 8502c06745034846db5a45f46cc4af18268f98fd Mon Sep 17 00:00:00 2001 From: Ben Farr Date: Sun, 13 Sep 2015 23:08:41 +0100 Subject: [PATCH 06/12] Minor fixes --- mssql/mssql.d.ts | 35 ++++++++++++++--------------------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/mssql/mssql.d.ts b/mssql/mssql.d.ts index 4f2ee1ff7..6ad299c77 100644 --- a/mssql/mssql.d.ts +++ b/mssql/mssql.d.ts @@ -7,6 +7,7 @@ /// declare module "mssql" { + import events = require('events'); export var Date: any; export var DateTime: any; @@ -15,22 +16,22 @@ declare module "mssql" { export var SmallDateTime: any; export var Time: any; export var Char: any; - export var VarChar:any; + export var VarChar: any; export var NChar: any; export var NVarChar: any; - export var Text:any; - export var NText:any; + export var Text: any; + export var NText: any; export var Xml: any; - export var TinyInt:any; - export var SmallInt:any; + export var TinyInt: any; + export var SmallInt: any; export var Int: any; - export var BigInt:any; - export var Decimal:any; - export var Float:any; - export var Real:any; - export var SmallMoney:any; - export var Money:any; - export var Numeric:any; + export var BigInt: any; + export var Decimal: any; + export var Float: any; + export var Real: any; + export var SmallMoney: any; + export var Money: any; + export var Numeric: any; export var Bit: any; export var Binary: any; export var VarBinary: any; @@ -41,10 +42,6 @@ declare module "mssql" { export var Geography: any; export var Geometry: any; - export interface options { - import events = require('events'); - - export var MAX: number; export var fix: boolean; export var Promise: any; @@ -92,12 +89,9 @@ declare module "mssql" { } export class Connection extends events.EventEmitter { - public constructor(config: config, callback?: (err?: any) => void); - public connect(): Promise; public connect(callback: (err: any) => void): void; - public close(): Promise; public close(callback: (err: any) => void): void; } @@ -115,7 +109,6 @@ declare module "mssql" { public columns: columns; public rows: rows; public constructor(tableName: string); - } export class Request extends events.EventEmitter { @@ -139,7 +132,7 @@ declare module "mssql" { } export class Transaction extends events.EventEmitter { - public constructor(connection: Connection); + public constructor(connection?: Connection); public begin(isolationLevel?: IIsolationLevel): Promise; public begin(isolationLevel?: IIsolationLevel, callback?: (err?: any) => void): void; public commit(): Promise; From 93820e0d624e929869070834d5708e2d069825c7 Mon Sep 17 00:00:00 2001 From: Ben Farr Date: Sun, 13 Sep 2015 23:09:49 +0100 Subject: [PATCH 07/12] Add version and credit --- mssql/mssql.d.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mssql/mssql.d.ts b/mssql/mssql.d.ts index 6ad299c77..f19c1fa84 100644 --- a/mssql/mssql.d.ts +++ b/mssql/mssql.d.ts @@ -1,6 +1,6 @@ -// Type definitions for mssql +// Type definitions for mssql v2.2.0 // Project: https://www.npmjs.com/package/mssql -// Definitions by: COLSA Corporation +// Definitions by: COLSA Corporation , Ben Farr // Definitions: https://github.com/borisyankov/DefinitelyTyped /// From ae22764e146cf48ac342a66216ab0a1fb0cc3536 Mon Sep 17 00:00:00 2001 From: Ben Farr Date: Sun, 13 Sep 2015 23:20:15 +0100 Subject: [PATCH 08/12] Define SQL types Also Duplicated in to .TYPES --- mssql/mssql.d.ts | 111 +++++++++++++++++++++++++++++++++-------------- 1 file changed, 79 insertions(+), 32 deletions(-) diff --git a/mssql/mssql.d.ts b/mssql/mssql.d.ts index f19c1fa84..e67bd3028 100644 --- a/mssql/mssql.d.ts +++ b/mssql/mssql.d.ts @@ -9,38 +9,85 @@ declare module "mssql" { import events = require('events'); - export var Date: any; - export var DateTime: any; - export var DateTime2: any; - export var DateTimeOffset: any; - export var SmallDateTime: any; - export var Time: any; - export var Char: any; - export var VarChar: any; - export var NChar: any; - export var NVarChar: any; - export var Text: any; - export var NText: any; - export var Xml: any; - export var TinyInt: any; - export var SmallInt: any; - export var Int: any; - export var BigInt: any; - export var Decimal: any; - export var Float: any; - export var Real: any; - export var SmallMoney: any; - export var Money: any; - export var Numeric: any; - export var Bit: any; - export var Binary: any; - export var VarBinary: any; - export var TVP: any; - export var UniqueIdentifier: any; - export var Image: any; - export var UDT: any; - export var Geography: any; - export var Geometry: any; + type sqlTypeWithNoParams = { type: sqlTypeFactoryWithNoParams } + type sqlTypeWithLength = { type: sqlTypeFactoryWithLength, length: number } + type sqlTypeWithScale = { type: sqlTypeFactoryWithScale, scale: number } + type sqlTypeWithPrecisionScale = { type: sqlTypeFactoryWithPrecisionScale, precision: number, scale: number } + type sqlTypeWithTvpType = { type: sqlTypeFactoryWithTvpType, tvpType: any } + + type sqlTypeFactoryWithNoParams = () => sqlTypeWithNoParams; + type sqlTypeFactoryWithLength = (length?: number) => sqlTypeWithLength; + type sqlTypeFactoryWithScale = (scale?: number) => sqlTypeWithScale; + type sqlTypeFactoryWithPrecisionScale = (precision?: number, scale?: number) => sqlTypeWithPrecisionScale; + type sqlTypeFactoryWithTvpType = (tvpType: any) => sqlTypeWithTvpType; + + export var VarChar: sqlTypeFactoryWithLength; + export var NVarChar: sqlTypeFactoryWithLength; + export var Text: sqlTypeFactoryWithNoParams; + export var Int: sqlTypeFactoryWithNoParams; + export var BigInt: sqlTypeFactoryWithNoParams; + export var TinyInt: sqlTypeFactoryWithNoParams; + export var SmallInt: sqlTypeFactoryWithNoParams; + export var Bit: sqlTypeFactoryWithNoParams; + export var Float: sqlTypeFactoryWithNoParams; + export var Numeric: sqlTypeFactoryWithPrecisionScale; + export var Decimal: sqlTypeFactoryWithPrecisionScale; + export var Real: sqlTypeFactoryWithNoParams; + export var Date: sqlTypeFactoryWithNoParams; + export var DateTime: sqlTypeFactoryWithNoParams; + export var DateTime2: sqlTypeFactoryWithScale; + export var DateTimeOffset: sqlTypeFactoryWithScale; + export var SmallDateTime: sqlTypeFactoryWithNoParams; + export var Time: sqlTypeFactoryWithScale; + export var UniqueIdentifier: sqlTypeFactoryWithNoParams; + export var SmallMoney: sqlTypeFactoryWithNoParams; + export var Money: sqlTypeFactoryWithNoParams; + export var Binary: sqlTypeFactoryWithNoParams; + export var VarBinary: sqlTypeFactoryWithLength; + export var Image: sqlTypeFactoryWithNoParams; + export var Xml: sqlTypeFactoryWithNoParams; + export var Char: sqlTypeFactoryWithLength; + export var NChar: sqlTypeFactoryWithLength; + export var NText: sqlTypeFactoryWithNoParams; + export var TVP: sqlTypeFactoryWithTvpType; + export var UDT: sqlTypeFactoryWithNoParams; + export var Geography: sqlTypeFactoryWithNoParams; + export var Geometry: sqlTypeFactoryWithNoParams; + + export var TYPES: { + VarChar: sqlTypeFactoryWithLength; + NVarChar: sqlTypeFactoryWithLength; + Text: sqlTypeFactoryWithNoParams; + Int: sqlTypeFactoryWithNoParams; + BigInt: sqlTypeFactoryWithNoParams; + TinyInt: sqlTypeFactoryWithNoParams; + SmallInt: sqlTypeFactoryWithNoParams; + Bit: sqlTypeFactoryWithNoParams; + Float: sqlTypeFactoryWithNoParams; + Numeric: sqlTypeFactoryWithPrecisionScale; + Decimal: sqlTypeFactoryWithPrecisionScale; + Real: sqlTypeFactoryWithNoParams; + Date: sqlTypeFactoryWithNoParams; + DateTime: sqlTypeFactoryWithNoParams; + DateTime2: sqlTypeFactoryWithScale; + DateTimeOffset: sqlTypeFactoryWithScale; + SmallDateTime: sqlTypeFactoryWithNoParams; + Time: sqlTypeFactoryWithScale; + UniqueIdentifier: sqlTypeFactoryWithNoParams; + SmallMoney: sqlTypeFactoryWithNoParams; + Money: sqlTypeFactoryWithNoParams; + Binary: sqlTypeFactoryWithNoParams; + VarBinary: sqlTypeFactoryWithLength; + Image: sqlTypeFactoryWithNoParams; + Xml: sqlTypeFactoryWithNoParams; + Char: sqlTypeFactoryWithLength; + NChar: sqlTypeFactoryWithLength; + NText: sqlTypeFactoryWithNoParams; + TVP: sqlTypeFactoryWithTvpType; + UDT: sqlTypeFactoryWithNoParams; + Geography: sqlTypeFactoryWithNoParams; + Geometry: sqlTypeFactoryWithNoParams; + }; export var MAX: number; export var fix: boolean; From bda476885a90e8a7c33e046f6a32b576e244f465 Mon Sep 17 00:00:00 2001 From: Ben Farr Date: Sun, 13 Sep 2015 23:57:56 +0100 Subject: [PATCH 09/12] export Error classes --- mssql/mssql.d.ts | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/mssql/mssql.d.ts b/mssql/mssql.d.ts index e67bd3028..58e039765 100644 --- a/mssql/mssql.d.ts +++ b/mssql/mssql.d.ts @@ -143,6 +143,13 @@ declare module "mssql" { public close(callback: (err: any) => void): void; } + export class ConnectionError implements Error { + constructor(message: string, code?: any) + public name: string; + public message: string; + public code: string; + } + class columns { public add(name: string, type: any, options: any): void; } @@ -178,6 +185,13 @@ declare module "mssql" { public parameters: any; } + export class RequestError implements Error { + constructor(message: string, code?: any) + public name: string; + public message: string; + public code: string; + } + export class Transaction extends events.EventEmitter { public constructor(connection?: Connection); public begin(isolationLevel?: IIsolationLevel): Promise; @@ -188,6 +202,13 @@ declare module "mssql" { public rollback(callback: (err?: any) => void): void; } + export class TransactionError implements Error { + constructor(message: string, code?: any) + public name: string; + public message: string; + public code: string; + } + export class PreparedStatement extends events.EventEmitter { public constructor(connection?: Connection); public input(name: string, type: any): void; @@ -199,4 +220,11 @@ declare module "mssql" { public unprepare(): Promise; public unprepare(callback: (err?: any) => void): void; } + + export class PreparedStatementError implements Error { + constructor(message: string, code?: any) + public name: string; + public message: string; + public code: string; + } } From 8c36347a98e2b9ce06eb05ee2943c74d00d85758 Mon Sep 17 00:00:00 2001 From: Ben Farr Date: Sun, 13 Sep 2015 23:59:24 +0100 Subject: [PATCH 10/12] add register method to property 'map' array --- mssql/mssql.d.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/mssql/mssql.d.ts b/mssql/mssql.d.ts index 58e039765..934d225f4 100644 --- a/mssql/mssql.d.ts +++ b/mssql/mssql.d.ts @@ -93,7 +93,13 @@ declare module "mssql" { export var fix: boolean; export var Promise: any; - export var map: { js: any, sql: any }[]; + + interface IMap extends Array<{js: any, sql: any }> { + register(jstype: any, sql: any): void; + } + + export var map: IMap; + export var DRIVERS: string[]; type recordSet = any; From 2e2fb72c2625d0755b338b230fc01ab9ed663f81 Mon Sep 17 00:00:00 2001 From: Ben Farr Date: Mon, 14 Sep 2015 00:26:18 +0100 Subject: [PATCH 11/12] Add public properties the main classes --- mssql/mssql.d.ts | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/mssql/mssql.d.ts b/mssql/mssql.d.ts index 934d225f4..c434444d3 100644 --- a/mssql/mssql.d.ts +++ b/mssql/mssql.d.ts @@ -142,6 +142,9 @@ declare module "mssql" { } export class Connection extends events.EventEmitter { + public connected: boolean; + public connecting: boolean; + public driver: string; public constructor(config: config, callback?: (err?: any) => void); public connect(): Promise; public connect(callback: (err: any) => void): void; @@ -171,7 +174,28 @@ declare module "mssql" { public constructor(tableName: string); } + interface IRequestParameters { + [name: string]: { + name: string; + type: any; + io: number; + value: any; + length: number; + scale: number; + precision: number; + tvpType: any; + } + } + export class Request extends events.EventEmitter { + public connection: Connection; + public transaction: Transaction; + public pstatement: PreparedStatement; + public parameters: IRequestParameters; + public verbose: boolean; + public multiple: boolean; + public canceled: boolean; + public stream: any; public constructor(connection?: Connection); public constructor(transaction: Transaction); public constructor(preparedStatement: PreparedStatement); @@ -188,7 +212,6 @@ declare module "mssql" { public bulk(table: Table): Promise; public bulk(table: Table, callback: (err: any, rowCount: any) => void): void; public cancel(): void; - public parameters: any; } export class RequestError implements Error { @@ -199,6 +222,8 @@ declare module "mssql" { } export class Transaction extends events.EventEmitter { + public connection: Connection; + public isolationLevel: IIsolationLevel; public constructor(connection?: Connection); public begin(isolationLevel?: IIsolationLevel): Promise; public begin(isolationLevel?: IIsolationLevel, callback?: (err?: any) => void): void; @@ -216,6 +241,13 @@ declare module "mssql" { } export class PreparedStatement extends events.EventEmitter { + public connection: Connection; + public transaction: Transaction; + public prepared: boolean; + public statement: string; + public parameters: IRequestParameters; + public multiple: boolean; + public stream: any; public constructor(connection?: Connection); public input(name: string, type: any): void; public output(name: string, type: any): void; From d6aab9d29989caa9ff4c1d6bc917b53a29364f21 Mon Sep 17 00:00:00 2001 From: Ben Farr Date: Mon, 14 Sep 2015 00:30:50 +0100 Subject: [PATCH 12/12] Add public properties the main classes --- mssql/mssql-tests.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mssql/mssql-tests.ts b/mssql/mssql-tests.ts index 6fa546e66..e508ec354 100644 --- a/mssql/mssql-tests.ts +++ b/mssql/mssql-tests.ts @@ -71,7 +71,7 @@ var connection: sql.Connection = new sql.Connection(config, function (err: any) console.error('Error happened calling Query: ' + err.name + " " + err.message); } else { - console.info(requestStoredProcedureWithOutput.parameters.output.value); + console.info(requestStoredProcedureWithOutput.parameters['output'].value); } }); }