Skip to content

Commit ed3738a

Browse files
Merge pull request #229 from sqlitecloud/fix-config-casts
fix(config): config properties cast
2 parents 9688b36 + 8534acc commit ed3738a

File tree

2 files changed

+41
-2
lines changed

2 files changed

+41
-2
lines changed

src/drivers/utilities.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,11 +219,26 @@ export function parseconnectionstring(connectionstring: string): SQLiteCloudConf
219219
})
220220

221221
const config: SQLiteCloudConfig = {
222+
...options,
222223
username: decodeURIComponent(url.username),
223224
password: decodeURIComponent(url.password),
225+
password_hashed: options.password_hashed ? parseBoolean(options.password_hashed) : undefined,
224226
host: url.hostname,
227+
// type cast values
225228
port: url.port ? parseInt(url.port) : undefined,
226-
...options
229+
insecure: options.insecure ? parseBoolean(options.insecure) : undefined,
230+
timeout: options.timeout ? parseInt(options.timeout) : undefined,
231+
zerotext: options.zerotext ? parseBoolean(options.zerotext) : undefined,
232+
create: options.create ? parseBoolean(options.create) : undefined,
233+
memory: options.memory ? parseBoolean(options.memory) : undefined,
234+
compression: options.compression ? parseBoolean(options.compression) : undefined,
235+
non_linearizable: options.non_linearizable ? parseBoolean(options.non_linearizable) : undefined,
236+
noblob: options.noblob ? parseBoolean(options.noblob) : undefined,
237+
maxdata: options.maxdata ? parseInt(options.maxdata) : undefined,
238+
maxrows: options.maxrows ? parseInt(options.maxrows) : undefined,
239+
maxrowset: options.maxrowset ? parseInt(options.maxrowset) : undefined,
240+
usewebsocket: options.usewebsocket ? parseBoolean(options.usewebsocket) : undefined,
241+
verbose: options.verbose ? parseBoolean(options.verbose) : undefined
227242
}
228243

229244
// either you use an apikey or username and password

test/utilities.test.ts

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ describe('parseconnectionstring', () => {
5757
expect(config4).toEqual({
5858
host: 'host',
5959
apikey: 'yyy',
60-
maxrows: '42' // only parsing here, validation is later in validateConfiguration
60+
maxrows: 42 // only parsing here, validation is later in validateConfiguration
6161
})
6262
})
6363

@@ -138,6 +138,30 @@ describe('parseconnectionstring', () => {
138138
database: 'database'
139139
})
140140
})
141+
142+
it('should parse connection with insecure as bool or number', () => {
143+
let connectionstring = `sqlitecloud://host:1234/database?insecure=true`
144+
let config = parseconnectionstring(connectionstring)
145+
146+
expect(config.insecure).toBe(true)
147+
148+
connectionstring = `sqlitecloud://host:1234/database?insecure=1`
149+
config = parseconnectionstring(connectionstring)
150+
151+
expect(config.insecure).toBe(true)
152+
153+
connectionstring = `sqlitecloud://host:1234/database?insecure=0`
154+
config = parseconnectionstring(connectionstring)
155+
156+
expect(config.insecure).toBe(false)
157+
})
158+
159+
it('should parse connection with timeout as number', () => {
160+
let connectionstring = `sqlitecloud://host:1234/database?timeout=123`
161+
let config = parseconnectionstring(connectionstring)
162+
163+
expect(config.timeout).toBe(123)
164+
})
141165
})
142166

143167
describe('getTestingDatabaseName', () => {

0 commit comments

Comments
 (0)