Skip to content

Commit

Permalink
🤖 Merge PR DefinitelyTyped#58569 wrap data-api-client in a namespace …
Browse files Browse the repository at this point in the history
…to improve type visibility by @hariseldon78

* wrap data-api-client in a name space to improve type visibility

* fix data-api-client test

* fix declaration syntax

* undo superflous change
  • Loading branch information
hariseldon78 authored Feb 3, 2022
1 parent 447ea4a commit 0c4fe9a
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 64 deletions.
18 changes: 8 additions & 10 deletions types/data-api-client/data-api-client-tests.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import Client = require('data-api-client');

const client = Client({
const client: Client.iDataAPIClient = Client({
resourceArn: '',
secretArn: '',
database: '',
Expand All @@ -24,15 +24,13 @@ client.query({ sql: 'SELECT * FROM Users;', parameters: {}, transactionId: '' })
}
});

client
.query<{ id: string; name: string }>('SELECT * FROM Users WHERE id = :id;', { id: 'id' })
.then(res => {
if (res.records?.length) {
const user = res.records[0];
user.id;
user.name;
}
});
client.query<{ id: string; name: string }>('SELECT * FROM Users WHERE id = :id;', { id: 'id' }).then(res => {
if (res.records?.length) {
const user = res.records[0];
user.id;
user.name;
}
});

client
.transaction()
Expand Down
109 changes: 55 additions & 54 deletions types/data-api-client/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,66 +9,67 @@
/// <reference types="node" />

import type { ClientConfiguration, Types } from 'aws-sdk/clients/rdsdataservice';
declare namespace Client {
type OmittedValues = 'database' | 'resourceArn' | 'secretArn' | 'schema';

type OmittedValues = 'database' | 'resourceArn' | 'secretArn' | 'schema';

interface iParams {
secretArn: string;
resourceArn: string;
database?: string | undefined;
keepAlive?: boolean | undefined;
hydrateColumnNames?: boolean | undefined;
sslEnabled?: boolean | undefined;
options?: ClientConfiguration | undefined;
region?: string | undefined;
engine?: 'mysql' | 'pg' | undefined;
formatOptions?: {
deserializeDate?: boolean | undefined;
treatAsLocalDate?: boolean | undefined;
} | undefined;
}

interface Transaction {
query(sql: string, params?: [] | unknown): Transaction; // params can be [] or {};
query(
obj:
interface iParams {
secretArn: string;
resourceArn: string;
database?: string | undefined;
keepAlive?: boolean | undefined;
hydrateColumnNames?: boolean | undefined;
sslEnabled?: boolean | undefined;
options?: ClientConfiguration | undefined;
region?: string | undefined;
engine?: 'mysql' | 'pg' | undefined;
formatOptions?:
| {
sql: string;
parameters: [] | unknown;
database?: string | undefined;
hydrateColumnNames?: boolean | undefined;
deserializeDate?: boolean | undefined;
treatAsLocalDate?: boolean | undefined;
}
| ((prevResult: { insertId?: any }) => any),
): Transaction;

rollback: (error: Error, status: any) => void;
commit: () => Promise<void>;
}
| undefined;
}

interface iDataAPIClient {
/* tslint:disable:no-unnecessary-generics */
query<T = any>(sql: string, params?: [] | unknown): Promise<iDataAPIQueryResult<T>>; // params can be [] or {};
query<T = any>(obj: {
sql: string;
parameters?: [] | unknown | undefined;
transactionId?: string | undefined;
database?: string | undefined;
hydrateColumnNames?: boolean | undefined;
}): Promise<iDataAPIQueryResult<T>>;
transaction(): Transaction; // needs to return an interface with
interface Transaction {
query(sql: string, params?: [] | unknown): Transaction; // params can be [] or {};
query(
obj:
| {
sql: string;
parameters: [] | unknown;
database?: string | undefined;
hydrateColumnNames?: boolean | undefined;
}
| ((prevResult: { insertId?: any }) => any),
): Transaction;

// promisified versions of the RDSDataService methods
batchExecuteStatement: (params: Omit<Types.BatchExecuteStatementRequest, OmittedValues>) => Promise<any>;
beginTransaction: () => Promise<Types.BeginTransactionResponse>;
commitTransaction: (params: Omit<Types.CommitTransactionRequest, OmittedValues>) => Promise<any>;
executeStatement: (params: Omit<Types.ExecuteStatementRequest, OmittedValues>) => Promise<any>;
rollbackTransaction: (params: Omit<Types.RollbackTransactionRequest, OmittedValues>) => Promise<any>;
}
rollback: (error: Error, status: any) => void;
commit: () => Promise<void>;
}

interface iDataAPIQueryResult<T = any> {
records: T[];
}
interface iDataAPIClient {
/* tslint:disable:no-unnecessary-generics */
query<T = any>(sql: string, params?: [] | unknown): Promise<iDataAPIQueryResult<T>>; // params can be [] or {};
query<T = any>(obj: {
sql: string;
parameters?: [] | unknown | undefined;
transactionId?: string | undefined;
database?: string | undefined;
hydrateColumnNames?: boolean | undefined;
}): Promise<iDataAPIQueryResult<T>>;
transaction(): Transaction; // needs to return an interface with

declare function Client(params: iParams): iDataAPIClient;
// promisified versions of the RDSDataService methods
batchExecuteStatement: (params: Omit<Types.BatchExecuteStatementRequest, OmittedValues>) => Promise<any>;
beginTransaction: () => Promise<Types.BeginTransactionResponse>;
commitTransaction: (params: Omit<Types.CommitTransactionRequest, OmittedValues>) => Promise<any>;
executeStatement: (params: Omit<Types.ExecuteStatementRequest, OmittedValues>) => Promise<any>;
rollbackTransaction: (params: Omit<Types.RollbackTransactionRequest, OmittedValues>) => Promise<any>;
}

interface iDataAPIQueryResult<T = any> {
records: T[];
}
}
declare function Client(params: Client.iParams): Client.iDataAPIClient;
export = Client;

0 comments on commit 0c4fe9a

Please sign in to comment.