@@ -56,6 +56,21 @@ mod db {
5656
5757 use crate :: { errors:: MyError , models:: User } ;
5858
59+ pub async fn get_users ( client : & Client ) -> Result < Vec < User > , MyError > {
60+ let stmt = include_str ! ( "../sql/get_users.sql" ) ;
61+ let stmt = stmt. replace ( "$table_fields" , & User :: sql_table_fields ( ) ) ;
62+ let stmt = client. prepare ( & stmt) . await . unwrap ( ) ;
63+
64+ let results = client
65+ . query ( & stmt, & [ ] )
66+ . await ?
67+ . iter ( )
68+ . map ( |row| User :: from_row_ref ( row) . unwrap ( ) )
69+ . collect :: < Vec < User > > ( ) ;
70+
71+ Ok ( results)
72+ }
73+
5974 pub async fn add_user ( client : & Client , user_info : User ) -> Result < User , MyError > {
6075 let _stmt = include_str ! ( "../sql/add_user.sql" ) ;
6176 let _stmt = _stmt. replace ( "$table_fields" , & User :: sql_table_fields ( ) ) ;
@@ -86,6 +101,14 @@ mod handlers {
86101
87102 use crate :: { db, errors:: MyError , models:: User } ;
88103
104+ pub async fn get_users ( db_pool : web:: Data < Pool > ) -> Result < HttpResponse , Error > {
105+ let client: Client = db_pool. get ( ) . await . map_err ( MyError :: PoolError ) ?;
106+
107+ let users = db:: get_users ( & client) . await ?;
108+
109+ Ok ( HttpResponse :: Ok ( ) . json ( users) )
110+ }
111+
89112 pub async fn add_user (
90113 user : web:: Json < User > ,
91114 db_pool : web:: Data < Pool > ,
@@ -103,7 +126,7 @@ mod handlers {
103126use :: config:: Config ;
104127use actix_web:: { web, App , HttpServer } ;
105128use dotenv:: dotenv;
106- use handlers:: add_user;
129+ use handlers:: { add_user, get_users } ;
107130use tokio_postgres:: NoTls ;
108131
109132use crate :: config:: ExampleConfig ;
@@ -124,7 +147,11 @@ async fn main() -> std::io::Result<()> {
124147 let server = HttpServer :: new ( move || {
125148 App :: new ( )
126149 . app_data ( web:: Data :: new ( pool. clone ( ) ) )
127- . service ( web:: resource ( "/users" ) . route ( web:: post ( ) . to ( add_user) ) )
150+ . service (
151+ web:: resource ( "/users" )
152+ . route ( web:: post ( ) . to ( add_user) )
153+ . route ( web:: get ( ) . to ( get_users) )
154+ )
128155 } )
129156 . bind ( config. server_addr . clone ( ) ) ?
130157 . run ( ) ;
0 commit comments