Skip to content

Commit 2b538cd

Browse files
authored
Merge pull request #6 from txase/fixes
Fixes
2 parents 78aed1b + bedf596 commit 2b538cd

File tree

4 files changed

+74
-28
lines changed

4 files changed

+74
-28
lines changed

index.js

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ function getAuroraDataValue (value) {
1515
return value.longValue;
1616
} else if ('stringValue' in value) {
1717
return value.stringValue;
18-
} else if ('booleanValue' in value) {
18+
} else /* istanbul ignore else */ if ('booleanValue' in value) {
1919
return value.booleanValue;
20-
} else /* istanbul ignore next */ {
20+
} else {
2121
const type = Object.keys(value)[0];
2222
throw new Error(`Unknown value type '${type}' from row`);
2323
}
@@ -41,16 +41,6 @@ function hydrateRecord (record, fields) {
4141
value = new Date(value + 'Z');
4242
break;
4343

44-
case 'CHAR':
45-
if (field.precision === 5) {
46-
// ENUM ?
47-
break;
48-
} else if (field.precision === 13) {
49-
// SET ?
50-
value = new Set(value.split(','));
51-
}
52-
break;
53-
5444
default:
5545
break;
5646
}
@@ -90,22 +80,33 @@ class Client_AuroraDataMySQL extends Client_MySQL { // eslint-disable-line camel
9080
return new RDSDataService(config);
9181
}
9282

93-
acquireRawConnection () {
94-
return {
95-
client: this.driver,
96-
parameters: {
97-
// common parameters for Data API requests
98-
database: this.config.connection.database,
99-
resourceArn: this.config.connection.resourceArn,
100-
secretArn: this.config.connection.secretArn
101-
}
102-
};
103-
}
83+
initializePool() {
84+
/* istanbul ignore if */
85+
if (this.pool) {
86+
this.logger.warn('The pool has already been initialized');
87+
return;
88+
}
10489

105-
destroyRawConnection (connection) {}
90+
this.knexUid = 0;
10691

107-
validateConnection (connection) {
108-
return true;
92+
// common parameters for Data API requests
93+
const parameters = {
94+
database: this.config.connection.database,
95+
resourceArn: this.config.connection.resourceArn,
96+
secretArn: this.config.connection.secretArn
97+
};
98+
99+
this.pool = {
100+
acquire: () => ({
101+
promise: Promise.resolve({
102+
client: this.driver,
103+
parameters,
104+
__knexUid: this.knexUid++
105+
})
106+
}),
107+
release: () => true,
108+
destroy: () => true
109+
};
109110
}
110111

111112
prepBindings (bindings) {

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "knex-aurora-data-api-mysql",
3-
"version": "2.0.0",
3+
"version": "2.0.1",
44
"description": "Knex.js driver for MySQL AWS Aurora Data API",
55
"homepage": "https://github.com/txase/knex-aurora-data-api-mysql",
66
"repository": "txase/knex-aurora-data-api-mysql",

tests/constants.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -426,7 +426,7 @@ module.exports = {
426426
blob: Buffer.from([98, 108, 111, 103]),
427427
text: 'test',
428428
enum: 'one',
429-
set: new Set(['one', 'two']),
429+
set: 'one,two',
430430
null: null,
431431
bool: true
432432
}
@@ -2122,6 +2122,12 @@ module.exports = {
21222122
},
21232123
PLUCK_RESPONSE_ROWS: [1, 2],
21242124

2125+
DEL_RESPONSE_DATA: {
2126+
generatedFields: [],
2127+
numberOfRecordsUpdated: 7
2128+
},
2129+
DEL_RESPONSE_ROWS: 7,
2130+
21252131
INSERT_RESPONSE_DATA: {
21262132
generatedFields: [
21272133
{

tests/test.js

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,27 @@ describe('SDK configuration tests', () => {
103103
});
104104
});
105105

106+
test('Destroy functionality', async () => {
107+
const knex = require('knex')({
108+
client: require('..'),
109+
connection: {
110+
database: constants.DATABASE,
111+
resourceArn: constants.AURORA_CLUSTER_ARN,
112+
secretArn: constants.SECRET_ARN
113+
}
114+
});
115+
116+
mockExecuteStatementPromise.mockResolvedValue(constants.ALL_QUERY_RESPONSE_DATA);
117+
118+
await knex.select('*').from('foo');
119+
120+
expect(mockExecuteStatement).toHaveBeenCalledTimes(1);
121+
122+
knex.destroy();
123+
124+
await expect(knex.select('*').from('foo')).rejects.toThrow();
125+
});
126+
106127
describe('Query statement tests', () => {
107128
const knex = require('knex')({
108129
client: require('..'),
@@ -300,6 +321,24 @@ describe('Query statement tests', () => {
300321
expect(rows).toEqual(constants.PLUCK_RESPONSE_ROWS);
301322
});
302323

324+
test('.del() works', async () => {
325+
mockExecuteStatementPromise.mockResolvedValue(constants.DEL_RESPONSE_DATA);
326+
327+
const rows = await knex('test').del();
328+
329+
expect(mockExecuteStatement).toHaveBeenCalledTimes(1);
330+
expect(mockExecuteStatement).toHaveBeenCalledWith({
331+
resourceArn: constants.AURORA_CLUSTER_ARN,
332+
secretArn: constants.SECRET_ARN,
333+
database: constants.DATABASE,
334+
sql: 'delete from `test`',
335+
parameters: [],
336+
includeResultMetadata: true
337+
});
338+
339+
expect(rows).toEqual(constants.DEL_RESPONSE_ROWS);
340+
});
341+
303342
test("Insert returns first row's primary ID", async () => {
304343
mockExecuteStatementPromise.mockResolvedValue(constants.INSERT_RESPONSE_DATA);
305344

0 commit comments

Comments
 (0)