Skip to content

Commit 2f92d71

Browse files
authored
Improve typing in odbc.d.ts (#335)
Add null to callProcedure nullable parameters Fix Connection.query callback type Change Result<unknown> to use generic types Remove callback signatures from Promise implementations Add `null` type for all nullable parameters Fix table error messages Signed-off-by: Myron Ng <[email protected]>
1 parent b74a1a2 commit 2f92d71

File tree

2 files changed

+19
-19
lines changed

2 files changed

+19
-19
lines changed

lib/odbc.d.ts

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ declare namespace odbc {
1919

2020
class OdbcError {
2121
message: string;
22-
code: number;
23-
state: string;
22+
code: number;
23+
state: string;
2424
}
2525

2626
class NodeOdbcError extends Error {
@@ -33,7 +33,7 @@ declare namespace odbc {
3333
// Callbacks ///////////////////////////////////////////////////////////
3434
////////////////////////////////////////////////////////////////////////////
3535

36-
prepare(sql:string, callback: (error: NodeOdbcError) => undefined): undefined;
36+
prepare(sql: string, callback: (error: NodeOdbcError) => undefined): undefined;
3737

3838
bind(parameters: Array<number|string>, callback: (error: NodeOdbcError) => undefined): undefined;
3939

@@ -45,7 +45,7 @@ declare namespace odbc {
4545
// Promises ////////////////////////////////////////////////////////////
4646
////////////////////////////////////////////////////////////////////////////
4747

48-
prepare(sql:string): Promise<void>;
48+
prepare(sql: string): Promise<void>;
4949

5050
bind(parameters: Array<number|string>): Promise<void>;
5151

@@ -89,20 +89,20 @@ declare namespace odbc {
8989
query<T>(sql: string, callback: (error: NodeOdbcError, result: Result<T>) => undefined): undefined;
9090
query<T>(sql: string, parameters: Array<number|string>, callback: (error: NodeOdbcError, result: Result<T> | Cursor) => undefined): undefined;
9191
query<T, O extends QueryOptions>(sql: string, options: O, callback: (error: NodeOdbcError, result: O extends CursorQueryOptions ? Cursor : Result<T>) => undefined): undefined;
92-
query<T, O extends QueryOptions>(sql: string, parameters: Array<number|string>, options: O): O extends CursorQueryOptions ? Promise<Cursor> : Promise<Result<T>>;
92+
query<T, O extends QueryOptions>(sql: string, parameters: Array<number|string>, options: O, callback: (error: NodeOdbcError, result: O extends CursorQueryOptions ? Cursor : Result<T>) => undefined): undefined;
9393

94-
callProcedure(catalog: string, schema: string, name: string, callback: (error: NodeOdbcError, result: Result<unknown>) => undefined): undefined;
95-
callProcedure(catalog: string, schema: string, name: string, parameters: Array<number|string>, callback: (error: NodeOdbcError, result: Result<unknown>) => undefined): undefined;
94+
callProcedure<T>(catalog: string|null, schema: string|null, name: string, callback: (error: NodeOdbcError, result: Result<T>) => undefined): undefined;
95+
callProcedure<T>(catalog: string|null, schema: string|null, name: string, parameters: Array<number|string>, callback: (error: NodeOdbcError, result: Result<T>) => undefined): undefined;
9696

9797
createStatement(callback: (error: NodeOdbcError, statement: Statement) => undefined): undefined;
9898

99-
primaryKeys(catalog: string, schema: string, table: string, callback: (error: NodeOdbcError, result: Result<unknown>) => undefined): undefined;
99+
primaryKeys<T>(catalog: string|null, schema: string|null, table: string|null, callback: (error: NodeOdbcError, result: Result<T>) => undefined): undefined;
100100

101-
foreignKeys(pkCatalog: string, pkSchema: string, pkTable: string, fkCatalog: string, fkSchema: string, fkTable: string, callback: (error: NodeOdbcError, result: Result<unknown>) => undefined): undefined;
101+
foreignKeys<T>(pkCatalog: string|null, pkSchema: string|null, pkTable: string|null, fkCatalog: string|null, fkSchema: string|null, fkTable: string|null, callback: (error: NodeOdbcError, result: Result<T>) => undefined): undefined;
102102

103-
tables(catalog: string, schema: string, table: string, type: string, callback: (error: NodeOdbcError, result: Result<unknown>) => undefined): undefined;
103+
tables<T>(catalog: string|null, schema: string|null, table: string|null, type: string|null, callback: (error: NodeOdbcError, result: Result<T>) => undefined): undefined;
104104

105-
columns(catalog: string, schema: string, table: string, callback: (error: NodeOdbcError, result: Result<unknown>) => undefined): undefined;
105+
columns<T>(catalog: string|null, schema: string|null, table: string|null, column: string|null, callback: (error: NodeOdbcError, result: Result<T>) => undefined): undefined;
106106

107107
setIsolationLevel(level: number, callback: (error: NodeOdbcError) => undefined): undefined;
108108

@@ -122,17 +122,17 @@ declare namespace odbc {
122122
query<T, O extends QueryOptions>(sql: string, options: O): O extends CursorQueryOptions ? Promise<Cursor> : Promise<Result<T>>;
123123
query<T, O extends QueryOptions>(sql: string, parameters: Array<number|string>, options: O): O extends CursorQueryOptions ? Promise<Cursor> : Promise<Result<T>>;
124124

125-
callProcedure(catalog: string, schema: string, name: string, parameters?: Array<number|string>): Promise<Result<unknown>>;
125+
callProcedure<T>(catalog: string|null, schema: string|null, name: string, parameters?: Array<number|string>): Promise<Result<T>>;
126126

127127
createStatement(): Promise<Statement>;
128128

129-
primaryKeys(catalog: string, schema: string, table: string, callback: (error: NodeOdbcError, result: Result<unknown>) => undefined): Promise<Result<unknown>>;
129+
primaryKeys<T>(catalog: string|null, schema: string|null, table: string|null): Promise<Result<T>>;
130130

131-
foreignKeys(pkCatalog: string, pkSchema: string, pkTable: string, fkCatalog: string, fkSchema: string, fkTable: string, callback: (error: NodeOdbcError, result: Result<unknown>) => undefined): Promise<Result<unknown>>;
131+
foreignKeys<T>(pkCatalog: string|null, pkSchema: string|null, pkTable: string|null, fkCatalog: string|null, fkSchema: string|null, fkTable: string|null): Promise<Result<T>>;
132132

133-
tables(catalog: string, schema: string, table: string, type: string): Promise<Result<unknown>>;
133+
tables<T>(catalog: string|null, schema: string|null, table: string|null, type: string|null): Promise<Result<T>>;
134134

135-
columns(catalog: string, schema: string, table: string, column: string): Promise<Result<unknown>>;
135+
columns<T>(catalog: string|null, schema: string|null, table: string|null, column: string|null): Promise<Result<T>>;
136136

137137
setIsolationLevel(level: number): Promise<void>;
138138

src/odbc_connection.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2665,7 +2665,7 @@ Napi::Value ODBCConnection::Tables(const Napi::CallbackInfo& info) {
26652665
if (info[1].IsString()) {
26662666
data->schema = ODBC::NapiStringToSQLTCHAR(info[1].ToString());
26672667
} else if (!info[1].IsNull()) {
2668-
Napi::TypeError::New(env, "tables: first argument must be a string or null").ThrowAsJavaScriptException();
2668+
Napi::TypeError::New(env, "tables: second argument must be a string or null").ThrowAsJavaScriptException();
26692669
delete data;
26702670
data = NULL;
26712671
return env.Null();
@@ -2674,7 +2674,7 @@ Napi::Value ODBCConnection::Tables(const Napi::CallbackInfo& info) {
26742674
if (info[2].IsString()) {
26752675
data->table = ODBC::NapiStringToSQLTCHAR(info[2].ToString());
26762676
} else if (!info[2].IsNull()) {
2677-
Napi::TypeError::New(env, "tables: first argument must be a string or null").ThrowAsJavaScriptException();
2677+
Napi::TypeError::New(env, "tables: third argument must be a string or null").ThrowAsJavaScriptException();
26782678
delete data;
26792679
data = NULL;
26802680
return env.Null();
@@ -2683,7 +2683,7 @@ Napi::Value ODBCConnection::Tables(const Napi::CallbackInfo& info) {
26832683
if (info[3].IsString()) {
26842684
data->type = ODBC::NapiStringToSQLTCHAR(info[3].ToString());
26852685
} else if (!info[3].IsNull()) {
2686-
Napi::TypeError::New(env, "tables: first argument must be a string or null").ThrowAsJavaScriptException();
2686+
Napi::TypeError::New(env, "tables: fourth argument must be a string or null").ThrowAsJavaScriptException();
26872687
delete data;
26882688
data = NULL;
26892689
return env.Null();

0 commit comments

Comments
 (0)