diff --git a/plugins/sql/README.md b/plugins/sql/README.md index 7b781151f..5addb7eb8 100644 --- a/plugins/sql/README.md +++ b/plugins/sql/README.md @@ -65,6 +65,37 @@ const db = await Database.load("postgres://postgres:password@localhost/test"); await db.execute("INSERT INTO ..."); ``` +## Syntax + +We use sqlx as our underlying library, adopting their query syntax: + +- sqlite and postgres use the "$#" syntax when substituting query data +- mysql uses "?" when substituting query data + +```javascript +// INSERT and UPDATE examples for sqlite and postgres +const result = await db.execute( + "INSERT into todos (id, title, status) VALUES ($1, $2, $3)", + [todos.id, todos.title, todos.status], +); + +const result = await db.execute( + "UPDATE todos SET title = $1, completed = $2 WHERE id = $3", + [todos.title, todos.status, todos.id], +); + +// INSERT and UPDATE examples for mysql +const result = await db.execute( + "INSERT into todos (id, title, status) VALUES (?, ?, ?)", + [todos.id, todos.title, todos.status], +); + +const result = await db.execute( + "UPDATE todos SET title = ?, completed = ? WHERE id = ?", + [todos.title, todos.status, todos.id], +); +``` + ## Contributing PRs accepted. Please make sure to read the Contributing Guide before making a pull request. diff --git a/plugins/sql/guest-js/index.ts b/plugins/sql/guest-js/index.ts index c9824f7c3..918bc4e4b 100644 --- a/plugins/sql/guest-js/index.ts +++ b/plugins/sql/guest-js/index.ts @@ -76,10 +76,29 @@ export default class Database { * * @example * ```ts + * // for sqlite & postgres + * // INSERT example + * const result = await db.execute( + * "INSERT into todos (id, title, status) VALUES ($1, $2, $3)", + * [ todos.id, todos.title, todos.status ] + * ); + * // UPDATE example * const result = await db.execute( * "UPDATE todos SET title = $1, completed = $2 WHERE id = $3", * [ todos.title, todos.status, todos.id ] * ); + * + * // for mysql + * // INSERT example + * const result = await db.execute( + * "INSERT into todos (id, title, status) VALUES (?, ?, ?)", + * [ todos.id, todos.title, todos.status ] + * ); + * // UPDATE example + * const result = await db.execute( + * "UPDATE todos SET title = ?, completed = ? WHERE id = ?", + * [ todos.title, todos.status, todos.id ] + * ); * ``` */ async execute(query: string, bindValues?: unknown[]): Promise { @@ -91,13 +110,11 @@ export default class Database { values: bindValues ?? [], }, ); - return { lastInsertId, rowsAffected, }; } - /** * **select** * @@ -105,9 +122,15 @@ export default class Database { * * @example * ```ts + * // for sqlite & postgres * const result = await db.select( * "SELECT * from todos WHERE id = $1", id * ); + * + * // for mysql + * const result = await db.select( + * "SELECT * from todos WHERE id = ?", id + * ); * ``` */ async select(query: string, bindValues?: unknown[]): Promise {