1.8 KiB
async_pg example
This example illustrates
tokio_postgres
- use of
tokio_pg_mapper
for postgres data mapping deadpool_postgres
for connection poolingdotenv
+config
for configuration
Instructions
-
Create database user
createuser -P test_user
Enter a password of your choice. The following instructions assume you used
testing
as password.This step is optional and you can also use an existing database user for that. Just make sure to replace
test_user
by the database user of your choice in the following steps and change the.env
file containing the configuration accordingly. -
Create database
createdb -O test_user testing_db
-
Initialize database
psql -f sql/schema.sql testing_db
This step can be repeated and clears the database as it drops and recreates the schema
testing
which is used within the database. -
Create
.env
file:SERVER_ADDR=127.0.0.1:8080 PG.USER=test_user PG.PASSWORD=testing PG.HOST=127.0.0.1 PG.PORT=5432 PG.DBNAME=testing_db PG.POOL.MAX_SIZE=16
-
Run the server:
cargo run
-
Using a different terminal send an HTTP POST request to the running server:
echo '{"email": "ferris@thecrab.com", "first_name": "ferris", "last_name": "crab", "username": "ferreal"}' | http -f --json --print h POST http://127.0.0.1:8080/users
...or using curl...
curl -d '{"email": "ferris@thecrab.com", "first_name": "ferris", "last_name": "crab", "username": "ferreal"}' -H 'Content-Type: application/json' http://127.0.0.1:8080/users
A unique constraint exists for username, so sending this request twice will return an internal server error (HTTP 500).