Skip to content

Commit e932107

Browse files
Refine DBSQLParameter class (#190)
Signed-off-by: Levko Kravets <levko.ne@gmail.com>
1 parent 0618e90 commit e932107

2 files changed

Lines changed: 14 additions & 8 deletions

File tree

lib/DBSQLParameter.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ interface DBSQLParameterOptions {
2525
value: DBSQLParameterValue;
2626
}
2727

28+
interface ToSparkParameterOptions {
29+
name?: string;
30+
}
31+
2832
export class DBSQLParameter {
2933
public readonly type?: string;
3034

@@ -35,19 +39,20 @@ export class DBSQLParameter {
3539
this.value = value;
3640
}
3741

38-
public toSparkParameter(): TSparkParameter {
42+
public toSparkParameter({ name }: ToSparkParameterOptions = {}): TSparkParameter {
3943
// If VOID type was set explicitly - ignore value
4044
if (this.type === DBSQLParameterType.VOID) {
41-
return new TSparkParameter(); // for NULL neither `type` nor `value` should be set
45+
return new TSparkParameter({ name }); // for NULL neither `type` nor `value` should be set
4246
}
4347

4448
// Infer NULL values
4549
if (this.value === undefined || this.value === null) {
46-
return new TSparkParameter(); // for NULL neither `type` nor `value` should be set
50+
return new TSparkParameter({ name }); // for NULL neither `type` nor `value` should be set
4751
}
4852

4953
if (typeof this.value === 'boolean') {
5054
return new TSparkParameter({
55+
name,
5156
type: this.type ?? DBSQLParameterType.BOOLEAN,
5257
value: new TSparkParameterValue({
5358
stringValue: this.value ? 'TRUE' : 'FALSE',
@@ -57,6 +62,7 @@ export class DBSQLParameter {
5762

5863
if (typeof this.value === 'number') {
5964
return new TSparkParameter({
65+
name,
6066
type: this.type ?? (Number.isInteger(this.value) ? DBSQLParameterType.INTEGER : DBSQLParameterType.DOUBLE),
6167
value: new TSparkParameterValue({
6268
stringValue: Number(this.value).toString(),
@@ -66,6 +72,7 @@ export class DBSQLParameter {
6672

6773
if (this.value instanceof Int64 || typeof this.value === 'bigint') {
6874
return new TSparkParameter({
75+
name,
6976
type: this.type ?? DBSQLParameterType.BIGINT,
7077
value: new TSparkParameterValue({
7178
stringValue: this.value.toString(),
@@ -75,6 +82,7 @@ export class DBSQLParameter {
7582

7683
if (this.value instanceof Date) {
7784
return new TSparkParameter({
85+
name,
7886
type: this.type ?? DBSQLParameterType.TIMESTAMP,
7987
value: new TSparkParameterValue({
8088
stringValue: this.value.toISOString(),
@@ -83,6 +91,7 @@ export class DBSQLParameter {
8391
}
8492

8593
return new TSparkParameter({
94+
name,
8695
type: this.type ?? DBSQLParameterType.STRING,
8796
value: new TSparkParameterValue({
8897
stringValue: this.value,

lib/DBSQLSession.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -115,17 +115,14 @@ function getQueryParameters(
115115
for (const name of Object.keys(namedParameters)) {
116116
const value = namedParameters[name];
117117
const param = value instanceof DBSQLParameter ? value : new DBSQLParameter({ value });
118-
const sparkParam = param.toSparkParameter();
119-
sparkParam.name = name;
120-
result.push(sparkParam);
118+
result.push(param.toSparkParameter({ name }));
121119
}
122120
}
123121

124122
if (ordinalParameters !== undefined) {
125123
for (const value of ordinalParameters) {
126124
const param = value instanceof DBSQLParameter ? value : new DBSQLParameter({ value });
127-
const sparkParam = param.toSparkParameter();
128-
result.push(sparkParam);
125+
result.push(param.toSparkParameter());
129126
}
130127
}
131128

0 commit comments

Comments
 (0)