From 99f06d968dbe01f1ddb38d396244625d7ebbc8cd Mon Sep 17 00:00:00 2001 From: Mark Date: Wed, 16 Apr 2025 17:19:51 +0800 Subject: [PATCH] fix: single quote issue --- src/index.test.ts | 2 ++ src/index.ts | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/index.test.ts b/src/index.test.ts index 5342114..81fc987 100644 --- a/src/index.test.ts +++ b/src/index.test.ts @@ -51,10 +51,12 @@ describe('sqlite-level', () => { {type: 'del', key: 'key1'}, {type: 'put', key: 'key2', value: 'value2'}, {type: 'put', key: 'key3', value: 'value3'}, + {type: 'put', key: "'key4'", value: "Mark's"}, ]) await expect(level.get('key1')).rejects.toThrow(keyNotFoundError('key1')) expect(await level.get('key2')).toEqual('value2') expect(await level.get('key3')).toEqual('value3') + expect(await level.get("'key4'")).toEqual("Mark's") }) it('iterates over key value pairs', async () => { diff --git a/src/index.ts b/src/index.ts index 1f43863..7ef63e3 100644 --- a/src/index.ts +++ b/src/index.ts @@ -284,10 +284,12 @@ export class SqliteLevel extends AbstractL curBatch = [] curType = op.type } + const key = op.key.toString().replace(/'/g, "''"); if (op.type === 'put') { - curBatch.push(`('${op.key.toString()}', '${op.value.toString()}')`) + const value = op.value.toString().replace(/'/g, "''"); + curBatch.push(`('${key}', '${value}')`) } else if (op.type === 'del') { - curBatch.push(`'${op.key.toString()}'`) + curBatch.push(`'${key}'`) } } if (curBatch.length > 0) {