Skip to content

Commit 734d661

Browse files
committed
Fix bug where some scalar values failed to store
1 parent 628be03 commit 734d661

File tree

4 files changed

+22
-2
lines changed

4 files changed

+22
-2
lines changed

README.md

+3
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,9 @@ Changelog
6868

6969
To be released.
7070

71+
- Fixed a bug where some scalar values have failed to be stored in the
72+
database.
73+
7174
### Version 0.2.0
7275

7376
Released on November 3, 2024.

src/kv.test.ts

+10
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,16 @@ Deno.test("PostgresKvStore", async (t) => {
5656
assertEquals(result2[0].key, ["foo", "qux"]);
5757
assertEquals(result2[0].value, "qux");
5858
assertEquals(result2[0].ttl, "1 day");
59+
60+
await store.set(["foo", "quux"], true);
61+
const result3 = await sql`
62+
SELECT * FROM ${sql(tableName)}
63+
WHERE key = ${["foo", "quux"]}
64+
`;
65+
assertEquals(result3.length, 1);
66+
assertEquals(result3[0].key, ["foo", "quux"]);
67+
assertEquals(result3[0].value, true);
68+
assertEquals(result3[0].ttl, null);
5969
});
6070

6171
await t.step("delete()", async () => {

src/kv.ts

+5-1
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,11 @@ export class PostgresKvStore implements KvStore {
8282
const ttl = options?.ttl == null ? null : options.ttl.toString();
8383
await this.#sql`
8484
INSERT INTO ${this.#sql(this.#tableName)} (key, value, ttl)
85-
VALUES (${key}, ${value as string}, ${ttl})
85+
VALUES (
86+
${key},
87+
(${{ value } as unknown as string}::jsonb) -> 'value',
88+
${ttl}
89+
)
8690
ON CONFLICT (key)
8791
DO UPDATE SET value = EXCLUDED.value, ttl = EXCLUDED.ttl;
8892
`;

src/mq.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,10 @@ export class PostgresMessageQueue implements MessageQueue {
8585
const delay = options?.delay ?? Temporal.Duration.from({ seconds: 0 });
8686
await this.#sql`
8787
INSERT INTO ${this.#sql(this.#tableName)} (message, delay)
88-
VALUES (${message}, ${delay.toString()});
88+
VALUES (
89+
(${{ message } as unknown as string}::jsonb) -> 'message',
90+
${delay.toString()}
91+
);
8992
`;
9093
await this.#sql.notify(this.#channelName, delay.toString());
9194
}

0 commit comments

Comments
 (0)