@@ -3,11 +3,9 @@ title: Drizzle
3
3
description :
4
4
---
5
5
6
- ## Database
6
+ ## ` useDB() `
7
7
8
- To enhance your development experience with databases, we recommand creating this type of composable:
9
-
10
- ### ` useDB() `
8
+ To enhance your DX with databases, we recommand using our pattern with ` useDB() ` :
11
9
12
10
``` ts
13
11
import { sqliteTable , text , integer } from ' drizzle-orm/sqlite-core'
@@ -31,3 +29,63 @@ export function useDB() {
31
29
```
32
30
33
31
This allows you to conveniently reference your tables and interact directly with the [ Drizzle API] ( https://orm.drizzle.team/docs/overview ) .
32
+
33
+ ### Select
34
+
35
+ ``` ts[/api/todos/index.get.ts]
36
+ export default eventHandler(async () => {
37
+ const todos = await useDB().select().from(tables.todos).all()
38
+
39
+ return todos
40
+ })
41
+ ```
42
+
43
+ ### Insert
44
+
45
+ ``` ts[/api/todos/index.post.ts]
46
+ export default eventHandler(async (event) => {
47
+ const { title } = await readBody(event)
48
+
49
+ const todo = await useDB().insert(tables.todos).values({
50
+ title,
51
+ createdAt: new Date()
52
+ }).returning().get()
53
+
54
+ return todo
55
+ })
56
+ ```
57
+
58
+ ### Update
59
+
60
+ ``` ts[/api/todos/[id].patch.ts]
61
+ export default eventHandler(async (event) => {
62
+ const { id } = getRouterParams(event)
63
+ const { completed } = await readBody(event)
64
+
65
+ const todo = await useDB().update(tables.todos).set({
66
+ completed
67
+ }).where(eq(tables.todos.id, Number(id))).returning().get()
68
+
69
+ return todo
70
+ })
71
+ ```
72
+
73
+ ### Delete
74
+
75
+ ``` ts[/api/todos/[id].delete.ts]
76
+ export default eventHandler(async (event) => {
77
+ const { id } = getRouterParams(event)
78
+
79
+ const deletedTodo = await useDB().delete(tables.todos).where(and(
80
+ eq(tables.todos.id, Number(id))
81
+ )).returning().get()
82
+
83
+ if (!deletedTodo) {
84
+ throw createError({
85
+ statusCode: 404,
86
+ message: 'Todo not found'
87
+ })
88
+ }
89
+ return deletedTodo
90
+ })
91
+ ```
0 commit comments