migrating to typescript

This commit is contained in:
Anatoly 2018-08-08 02:01:43 +03:00
parent 9bc81ef6b3
commit 8ffb9444a5
4 changed files with 22 additions and 29 deletions

View file

@ -43,7 +43,7 @@ export default async function (conversion: Conversion): Promise<Conversion> {
if (result.error) {
// No need to continue if no 'bytea' or 'geometry' columns found.
dbAccess.releasePgClient(<PoolClient>result.client);
dbAccess.releaseDbClient(<PoolClient>result.client);
return conversion;
}

View file

@ -112,17 +112,25 @@ export default class DBAccess {
}
/**
* Releases MySQL connection back to the pool.
* Releases MySQL or PostgreSQL connection back to appropriate pool.
*/
public releaseMysqlClient(connection: PoolConnection): void {
connection.release();
public releaseDbClient(dbClient?: PoolConnection|PoolClient): void {
try {
(<PoolConnection|PoolClient>dbClient).release();
dbClient = undefined;
} catch (error) {
generateError(this._conversion, `\t--[DBAccess::releaseDbClient] ${ error }`);
}
}
/**
* Releases PostgreSQL connection back to the pool.
* Checks if there are no more queries to be sent using current client.
* In such case the client should be released.
*/
public releasePgClient(pgClient: PoolClient): void {
pgClient.release();
private _releaseDbClientIfNecessary(client: PoolConnection|PoolClient, shouldHoldClient: boolean): void {
if (!shouldHoldClient) {
this.releaseDbClient(client);
}
}
/**
@ -168,16 +176,9 @@ export default class DBAccess {
): Promise<DBAccessQueryResult> {
return new Promise<DBAccessQueryResult>((resolve, reject) => {
(<PoolConnection>client).query(sql, (error: MysqlError|null, data: any) => {
// Checks if there are more queries to be sent using current client.
if (!shouldReturnClient) {
// No more queries to be sent using current client.
// The client must be released.
this.releaseMysqlClient((<PoolConnection>client));
client = undefined;
}
this._releaseDbClientIfNecessary((<PoolConnection>client), shouldReturnClient);
if (error) {
// An error occurred during DB querying.
generateError(this._conversion, `\t--[${ caller }] ${ error }`, sql);
return processExitOnError ? process.exit() : reject({ client: client, data: undefined, error: error });
}
@ -200,18 +201,10 @@ export default class DBAccess {
): Promise<DBAccessQueryResult> {
try {
const data: any = Array.isArray(bindings) ? await (<PoolClient>client).query(sql, bindings) : await (<PoolClient>client).query(sql);
// Checks if there are more queries to be sent using current client.
if (!shouldReturnClient) {
// No more queries to be sent using current client.
// The client must be released.
this.releasePgClient((<PoolClient>client));
client = undefined;
}
this._releaseDbClientIfNecessary((<PoolClient>client), shouldReturnClient); // Sets the client undefined.
return { client: client, data: data, error: undefined };
} catch (error) {
// An error occurred during DB querying.
this._releaseDbClientIfNecessary((<PoolClient>client), shouldReturnClient); // Sets the client undefined.
generateError(this._conversion, `\t--[${ caller }] ${ error }`, sql);
return processExitOnError ? process.exit() : { client: client, data: undefined, error: error };
}

View file

@ -74,7 +74,7 @@ async function deleteChunk(conv: Conversion, dataPoolId: number, client: PoolCli
} catch (error) {
generateError(conv, `\t--[DataLoader::deleteChunk] ${ error }`, sql);
} finally {
dbAccess.releasePgClient(client);
dbAccess.releaseDbClient(client);
}
}

View file

@ -74,7 +74,7 @@ export async function createSequence(conversion: Conversion, tableName: string):
const createSequenceResult: DBAccessQueryResult = await dbAccess.query(logTitle, sqlCreateSequence, DBVendors.PG, false, true);
if (createSequenceResult.error) {
dbAccess.releasePgClient(<PoolClient>createSequenceResult.client);
dbAccess.releaseDbClient(<PoolClient>createSequenceResult.client);
return;
}
@ -84,7 +84,7 @@ export async function createSequence(conversion: Conversion, tableName: string):
const setNextValResult: DBAccessQueryResult = await dbAccess.query(logTitle, sqlSetNextVal, DBVendors.PG, false, true, createSequenceResult.client);
if (setNextValResult.error) {
dbAccess.releasePgClient(<PoolClient>setNextValResult.client);
dbAccess.releaseDbClient(<PoolClient>setNextValResult.client);
return;
}
@ -94,7 +94,7 @@ export async function createSequence(conversion: Conversion, tableName: string):
const setSequenceOwnerResult: DBAccessQueryResult = await dbAccess.query(logTitle, sqlSetSequenceOwner, DBVendors.PG, false, true, setNextValResult.client);
if (setSequenceOwnerResult.error) {
dbAccess.releasePgClient(<PoolClient>setSequenceOwnerResult.client);
dbAccess.releaseDbClient(<PoolClient>setSequenceOwnerResult.client);
return;
}