@@ -13,8 +13,7 @@ public static RouteGroupBuilder MapTodoApi(this IEndpointRouteBuilder routes)
13
13
14
14
group . AddValidationFilter ( ) ;
15
15
16
- group . MapGet ( "/" , ( NpgsqlDataSource db , CancellationToken ct ) =>
17
- db . QueryAsync < Todo > ( "SELECT * FROM Todos" , ct ) )
16
+ group . MapGet ( "/" , ( NpgsqlDataSource db , CancellationToken ct ) => db . QueryAsync < Todo > ( "SELECT * FROM Todos" , ct ) )
18
17
. WithName ( "GetAllTodos" ) ;
19
18
20
19
group . MapGet ( "/complete" , ( NpgsqlDataSource db , CancellationToken ct ) =>
@@ -26,19 +25,18 @@ public static RouteGroupBuilder MapTodoApi(this IEndpointRouteBuilder routes)
26
25
. WithName ( "GetIncompleteTodos" ) ;
27
26
28
27
group . MapGet ( "/{id:int}" , async Task < Results < Ok < Todo > , NotFound > > ( int id , NpgsqlDataSource db , CancellationToken ct ) =>
29
- await db . QuerySingleAsync < Todo > (
30
- "SELECT * FROM Todos WHERE Id = $1" , ct , id . AsTypedDbParameter ( ) )
28
+ await db . QuerySingleAsync < Todo > ( $ "SELECT * FROM Todos WHERE Id = { id } ", ct )
31
29
is Todo todo
32
30
? TypedResults . Ok ( todo )
33
31
: TypedResults . NotFound ( ) )
34
32
. WithName ( "GetTodoById" ) ;
35
33
36
34
group . MapGet ( "/find" , async Task < Results < Ok < Todo > , NotFound > > ( string title , bool ? isComplete , NpgsqlDataSource db , CancellationToken ct ) =>
37
- await db . QuerySingleAsync < Todo > (
38
- " SELECT * FROM Todos WHERE LOWER(Title) = LOWER($1) AND ($2 is NULL OR IsComplete = $2)" ,
39
- ct ,
40
- title . AsTypedDbParameter ( ) ,
41
- isComplete . AsTypedDbParameter ( ) )
35
+ await db . QuerySingleAsync < Todo > ( $ """
36
+ SELECT * FROM Todos
37
+ WHERE LOWER(Title) = LOWER( { title } )
38
+ AND ( { isComplete } is NULL OR IsComplete = { isComplete } )
39
+ """ , ct )
42
40
is Todo todo
43
41
? TypedResults . Ok ( todo )
44
42
: TypedResults . NotFound ( ) )
@@ -47,10 +45,7 @@ is Todo todo
47
45
group . MapPost ( "/" , async Task < Created < Todo > > ( Todo todo , NpgsqlDataSource db , CancellationToken ct ) =>
48
46
{
49
47
var createdTodo = await db . QuerySingleAsync < Todo > (
50
- "INSERT INTO Todos(Title, IsComplete) Values($1, $2) RETURNING *" ,
51
- ct ,
52
- todo . Title . AsTypedDbParameter ( ) ,
53
- todo . IsComplete . AsTypedDbParameter ( ) ) ;
48
+ $ "INSERT INTO Todos(Title, IsComplete) Values({ todo . Title } , { todo . IsComplete } ) RETURNING *", ct ) ;
54
49
55
50
return TypedResults . Created ( $ "/todos/{ createdTodo ? . Id } ", createdTodo ) ;
56
51
} )
@@ -60,34 +55,30 @@ is Todo todo
60
55
{
61
56
inputTodo . Id = id ;
62
57
63
- return await db . ExecuteAsync (
64
- "UPDATE Todos SET Title = $1, IsComplete = $2 WHERE Id = $3" ,
65
- ct ,
66
- inputTodo . Title . AsTypedDbParameter ( ) ,
67
- inputTodo . IsComplete . AsTypedDbParameter ( ) ,
68
- id . AsTypedDbParameter ( ) ) == 1
58
+ return await db . ExecuteAsync ( $ """
59
+ UPDATE Todos
60
+ SET Title = { inputTodo . Title } , IsComplete = { inputTodo . IsComplete }
61
+ WHERE Id = { id }
62
+ """ , ct ) == 1
69
63
? TypedResults . NoContent ( )
70
64
: TypedResults . NotFound ( ) ;
71
65
} )
72
66
. WithName ( "UpdateTodo" ) ;
73
67
74
68
group . MapPut ( "/{id}/mark-complete" , async Task < Results < NoContent , NotFound > > ( int id , NpgsqlDataSource db , CancellationToken ct ) =>
75
- await db . ExecuteAsync (
76
- "UPDATE Todos SET IsComplete = true WHERE Id = $1" , ct , id . AsTypedDbParameter ( ) ) == 1
69
+ await db . ExecuteAsync ( $ "UPDATE Todos SET IsComplete = true WHERE Id = { id } ", ct ) == 1
77
70
? TypedResults . NoContent ( )
78
71
: TypedResults . NotFound ( ) )
79
72
. WithName ( "MarkComplete" ) ;
80
73
81
74
group . MapPut ( "/{id}/mark-incomplete" , async Task < Results < NoContent , NotFound > > ( int id , NpgsqlDataSource db , CancellationToken ct ) =>
82
- await db . ExecuteAsync (
83
- "UPDATE Todos SET IsComplete = false WHERE Id = $1" , ct , id . AsTypedDbParameter ( ) ) == 1
75
+ await db . ExecuteAsync ( $ "UPDATE Todos SET IsComplete = false WHERE Id = { id } ", ct ) == 1
84
76
? TypedResults . NoContent ( )
85
77
: TypedResults . NotFound ( ) )
86
78
. WithName ( "MarkIncomplete" ) ;
87
79
88
80
group . MapDelete ( "/{id}" , async Task < Results < NoContent , NotFound > > ( int id , NpgsqlDataSource db , CancellationToken ct ) =>
89
- await db . ExecuteAsync (
90
- "DELETE FROM Todos WHERE Id = $1" , ct , id . AsTypedDbParameter ( ) ) == 1
81
+ await db . ExecuteAsync ( $ "DELETE FROM Todos WHERE Id = { id } ", ct ) == 1
91
82
? TypedResults . NoContent ( )
92
83
: TypedResults . NotFound ( ) )
93
84
. WithName ( "DeleteTodo" ) ;
0 commit comments