Skip to content

Commit 7053e1e

Browse files
committed
docs(builder, utils): add soft delete docs
1 parent 5b180c0 commit 7053e1e

File tree

3 files changed

+50
-1
lines changed

3 files changed

+50
-1
lines changed

packages/sqlite-builder/README.md

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ choose [NodeWasmDialect](../dialect-wasm/README.md#nodewasmdialect)
3232
### Define / Initialize
3333

3434
```ts
35+
import { SqliteDialect } from 'kysely'
36+
import Database from 'better-sqlite3'
3537
import { SqliteBuilder } from 'kysely-sqlite-builder'
3638
import { Column, defineTable, useSchema } from 'kysely-sqlite-builder/schema'
3739
import type { InferDatabase } from 'kysely-sqlite-builder/schema'
@@ -127,7 +129,42 @@ using selectWithUsing = db.precompile<{ name: string }>()
127129
)
128130
```
129131

130-
### Utils
132+
### Soft delete
133+
134+
```ts
135+
import { SqliteDialect } from 'kysely'
136+
import Database from 'better-sqlite3'
137+
import type { InferDatabase } from 'sqlite-builder/schema'
138+
import { Column, defineTable, useSchema } from 'sqlite-builder/schema'
139+
import { SqliteBuilder } from 'sqlite-builder'
140+
import { createSoftDeleteExecutorFn } from 'sqlite-builder/utils'
141+
142+
const softDeleteTable = defineTable({
143+
id: Column.Increments(),
144+
name: Column.String(),
145+
}, {
146+
primary: 'id',
147+
softDelete: true,
148+
})
149+
const softDeleteSchema = {
150+
testSoftDelete: softDeleteTable,
151+
}
152+
153+
const db = new SqliteBuilder<InferDatabase<typeof softDeleteSchema>>({
154+
dialect: new SqliteDialect({
155+
database: new Database(':memory:'),
156+
async onCreateConnection(connection) {
157+
await optimizePragma(connection)
158+
},
159+
}),
160+
executorFn: createSoftDeleteExecutorFn(),
161+
})
162+
163+
await db.executeTakeFirst(d => d.deleteFrom('testSoftDelete').where('id', '=', 1))
164+
// update "testSoftDelete" set "isDeleted" = 1 where "id" = 1
165+
```
166+
167+
## Utils
131168

132169
in `kysely-sqlite-builder/utils`
133170

packages/sqlite-utils/README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,21 @@ function createPrecompile<T extends Record<string, any>>(options?: PrecompileOpt
5252
// paramBuilder: ({ param, qb }: SetParam<O, T>) => Compilable<O>
5353
// ) => CompileFn<O, T>
5454
// }
55+
56+
// create a wrapper for soft delete
57+
function createSoftDeleteExecutorFn<DB extends Record<string, any>>(deleteColumnName?: string): SqliteExecutorFn<DB, {
58+
withoutDelete: <W extends WhereInterface<DB, keyof DB>>(qb: W) => WhereInterface<DB, keyof DB>
59+
}>
5560
```
5661

5762
## Credit
5863

5964
- [kysely-params](https://github.com/jtlapp/kysely-params)
6065

66+
## Todo
67+
68+
- [ ] improve docs
69+
6170
## license
6271

6372
MIT

packages/sqlite-utils/src/soft-delete.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ export type SqliteExecutor<DB extends Record<string, any>, Extra extends Record<
1212
selectFrom: Kysely<DB>['selectFrom']
1313
insertInto: Kysely<DB>['insertInto']
1414
updateTable: Kysely<DB>['updateTable']
15+
/**
16+
* see {@link Kysely.deleteFrom}
17+
*/
1518
deleteFrom: {
1619
<TR extends keyof DB & string>(from: TR): Omit<DeleteQueryBuilder<DB, ExtractTableAlias<DB, TR>, DeleteResult>, JoinFnName>
1720
<TR extends TableReference<DB>>(table: TR): Omit<DeleteQueryBuilder<From<DB, TR>, FromTables<DB, never, TR>, DeleteResult>, JoinFnName>

0 commit comments

Comments
 (0)