1
0
mirror of https://github.com/actix/examples synced 2025-04-01 08:06:34 +02:00

delete db/r2d2 example

This commit is contained in:
Rob Ede 2022-02-06 08:25:38 +00:00
parent a4d43c0ff8
commit da60a30fd9
No known key found for this signature in database
GPG Key ID: 97C636207D3EF933
22 changed files with 29 additions and 123 deletions
Cargo.lockCargo.toml
basics/error_handling/src
database_interactions
diesel
mongodb
r2d2
simple-auth-server
graphql
graphql-demo
juniper
json/json
security/casbin
template_engines
askama/templates
tera/templates
tinytemplate/templates
yarte/templates

41
Cargo.lock generated

@ -1548,7 +1548,7 @@ dependencies = [
"rand 0.7.3", "rand 0.7.3",
"serde 1.0.136", "serde 1.0.136",
"serde_json", "serde_json",
"uuid 0.8.2", "uuid",
] ]
[[package]] [[package]]
@ -1567,7 +1567,7 @@ dependencies = [
"serde 1.0.136", "serde 1.0.136",
"serde_bytes", "serde_bytes",
"serde_json", "serde_json",
"uuid 0.8.2", "uuid",
] ]
[[package]] [[package]]
@ -2258,7 +2258,7 @@ dependencies = [
"libsqlite3-sys 0.9.1", "libsqlite3-sys 0.9.1",
"pq-sys", "pq-sys",
"r2d2", "r2d2",
"uuid 0.8.2", "uuid",
] ]
[[package]] [[package]]
@ -2273,7 +2273,7 @@ dependencies = [
"futures", "futures",
"serde 1.0.136", "serde 1.0.136",
"serde_json", "serde_json",
"uuid 0.8.2", "uuid",
] ]
[[package]] [[package]]
@ -3357,7 +3357,7 @@ dependencies = [
"smartstring", "smartstring",
"static_assertions 1.1.0", "static_assertions 1.1.0",
"url", "url",
"uuid 0.8.2", "uuid",
] ]
[[package]] [[package]]
@ -3374,7 +3374,7 @@ dependencies = [
"r2d2_mysql", "r2d2_mysql",
"serde 1.0.136", "serde 1.0.136",
"serde_json", "serde_json",
"uuid 0.8.2", "uuid",
] ]
[[package]] [[package]]
@ -3830,7 +3830,7 @@ dependencies = [
"trust-dns-proto 0.20.4", "trust-dns-proto 0.20.4",
"trust-dns-resolver 0.20.4", "trust-dns-resolver 0.20.4",
"typed-builder", "typed-builder",
"uuid 0.8.2", "uuid",
"version_check 0.9.4", "version_check 0.9.4",
"webpki 0.21.4", "webpki 0.21.4",
"webpki-roots 0.21.1", "webpki-roots 0.21.1",
@ -3862,7 +3862,7 @@ dependencies = [
"actix-web 4.0.0-rc.2", "actix-web 4.0.0-rc.2",
"futures-util", "futures-util",
"sanitize-filename", "sanitize-filename",
"uuid 0.8.2", "uuid",
] ]
[[package]] [[package]]
@ -3930,7 +3930,7 @@ dependencies = [
"sha2 0.8.2", "sha2 0.8.2",
"time 0.1.43", "time 0.1.43",
"twox-hash", "twox-hash",
"uuid 0.8.2", "uuid",
] ]
[[package]] [[package]]
@ -4622,18 +4622,6 @@ dependencies = [
"scheduled-thread-pool", "scheduled-thread-pool",
] ]
[[package]]
name = "r2d2-example"
version = "1.0.0"
dependencies = [
"actix-web 4.0.0-rc.2",
"env_logger 0.9.0",
"r2d2",
"r2d2_sqlite",
"rusqlite",
"uuid 1.0.0-alpha.1",
]
[[package]] [[package]]
name = "r2d2_mysql" name = "r2d2_mysql"
version = "17.0.0" version = "17.0.0"
@ -5535,7 +5523,7 @@ dependencies = [
"serde_json", "serde_json",
"sparkpost", "sparkpost",
"time 0.3.7", "time 0.3.7",
"uuid 0.8.2", "uuid",
] ]
[[package]] [[package]]
@ -6693,15 +6681,6 @@ dependencies = [
"serde 1.0.136", "serde 1.0.136",
] ]
[[package]]
name = "uuid"
version = "1.0.0-alpha.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bb3ab47baa004111b323696c6eaa2752e7356f7f77cf6b6dc7a2087368ce1ca4"
dependencies = [
"getrandom 0.2.4",
]
[[package]] [[package]]
name = "v_escape" name = "v_escape"
version = "0.13.2" version = "0.13.2"

@ -17,7 +17,6 @@ members = [
"database_interactions/diesel", "database_interactions/diesel",
"database_interactions/mongodb", "database_interactions/mongodb",
"database_interactions/pg", "database_interactions/pg",
"database_interactions/r2d2",
"database_interactions/redis", "database_interactions/redis",
"database_interactions/simple-auth-server", "database_interactions/simple-auth-server",
"forms/form", "forms/form",

@ -42,7 +42,7 @@ impl Distribution<CustomError> for Standard {
} }
} }
/// Actix web uses `ResponseError` for conversion of errors to a response /// Actix Web uses `ResponseError` for conversion of errors to a response
impl ResponseError for CustomError { impl ResponseError for CustomError {
fn error_response(&self) -> HttpResponse { fn error_response(&self) -> HttpResponse {
match self { match self {

@ -1,6 +1,6 @@
# diesel # diesel
Basic integration of [Diesel](https://diesel.rs/) using SQLite for Actix web. Basic integration of [Diesel](https://diesel.rs/) using SQLite for Actix Web.
## Usage ## Usage

@ -26,7 +26,7 @@ pub fn insert_new_user(
nm: &str, nm: &str,
conn: &SqliteConnection, conn: &SqliteConnection,
) -> Result<models::User, DbError> { ) -> Result<models::User, DbError> {
// It is common when using Diesel with Actix web to import schema-related // It is common when using Diesel with Actix Web to import schema-related
// modules inside a function's scope (rather than the normal module's scope) // modules inside a function's scope (rather than the normal module's scope)
// to prevent import collisions and namespace pollution. // to prevent import collisions and namespace pollution.
use crate::schema::users::dsl::*; use crate::schema::users::dsl::*;

@ -1,4 +1,4 @@
//! Actix web Diesel integration example //! Actix Web Diesel integration example
//! //!
//! Diesel does not support tokio, so we have to run it in separate threads using the web::block //! Diesel does not support tokio, so we have to run it in separate threads using the web::block
//! function which offloads blocking code (like Diesel's) in order to not block the server's thread. //! function which offloads blocking code (like Diesel's) in order to not block the server's thread.

@ -1,6 +1,6 @@
# MongoDB # MongoDB
Simple example of MongoDB usage with Actix web. For more information on the MongoDB Rust driver, Simple example of MongoDB usage with Actix Web. For more information on the MongoDB Rust driver,
visit the [documentation](https://docs.rs/mongodb/2.0.0/mongodb/index.html) and visit the [documentation](https://docs.rs/mongodb/2.0.0/mongodb/index.html) and
[source code](https://github.com/mongodb/mongo-rust-driver). [source code](https://github.com/mongodb/mongo-rust-driver).
@ -22,4 +22,3 @@ MongoDB manual.
### Run the example ### Run the example
To execute the example code, run `cargo run` in the `database_interactions/mongodb` directory. To execute the example code, run `cargo run` in the `database_interactions/mongodb` directory.

@ -1,14 +0,0 @@
[package]
name = "r2d2-example"
version = "1.0.0"
edition = "2021"
[dependencies]
actix-web = "4.0.0-rc.1"
env_logger = "0.9.0"
uuid = { version = "1.0.0-alpha.1", features = ["v4"] }
r2d2 = "0.8"
r2d2_sqlite = "0.18.0"
rusqlite = "0.25.4"

@ -1,57 +0,0 @@
//! Actix web r2d2 example
use std::io;
use actix_web::{
error::InternalError, http::StatusCode, middleware, web, App, Error, HttpResponse,
HttpServer,
};
use r2d2::Pool;
use r2d2_sqlite::SqliteConnectionManager;
/// Async request handler. Ddb pool is stored in application state.
async fn index(
path: web::Path<String>,
db: web::Data<Pool<SqliteConnectionManager>>,
) -> Result<HttpResponse, Error> {
// execute sync code in threadpool
let res = web::block(move || {
let conn = db.get().unwrap();
let uuid = format!("{}", uuid::Uuid::new_v4());
conn.execute(
"INSERT INTO users (id, name) VALUES ($1, $2)",
&[&uuid, &path.into_inner()],
)
.unwrap();
conn.query_row("SELECT name FROM users WHERE id=$1", &[&uuid], |row| {
row.get::<_, String>(0)
})
})
.await
.unwrap()
.map(|user| HttpResponse::Ok().json(user))
.map_err(|e| InternalError::new(e, StatusCode::INTERNAL_SERVER_ERROR))?;
Ok(res)
}
#[actix_web::main]
async fn main() -> io::Result<()> {
std::env::set_var("RUST_LOG", "actix_web=debug");
env_logger::init();
// r2d2 pool
let manager = SqliteConnectionManager::file("test.db");
let pool = r2d2::Pool::new(manager).unwrap();
// start http server
HttpServer::new(move || {
App::new()
.app_data(web::Data::new(pool.clone())) // <- store db pool in app state
.wrap(middleware::Logger::default())
.route("/{name}", web::get().to(index))
})
.bind("127.0.0.1:8080")?
.run()
.await
}

@ -17,7 +17,7 @@
### Crates Used ### Crates Used
- [actix-web](https://crates.io/crates/actix-web) // Actix web is a simple, pragmatic and extremely fast web framework for Rust. - [actix-web](https://crates.io/crates/actix-web) // Actix Web is a simple, pragmatic and extremely fast web framework for Rust.
- [rust-argon2](https://crates.io/crates/rust-argon2) // crate for hashing passwords using the cryptographically-secure Argon2 hashing algorithm. - [rust-argon2](https://crates.io/crates/rust-argon2) // crate for hashing passwords using the cryptographically-secure Argon2 hashing algorithm.
- [chrono](https://crates.io/crates/chrono) // Date and time library for Rust. - [chrono](https://crates.io/crates/chrono) // Date and time library for Rust.
- [diesel](https://crates.io/crates/diesel) // A safe, extensible ORM and Query Builder for PostgreSQL, SQLite, and MySQL. - [diesel](https://crates.io/crates/diesel) // A safe, extensible ORM and Query Builder for PostgreSQL, SQLite, and MySQL.

@ -1,4 +1,4 @@
Getting started using [Async-graphql](https://github.com/async-graphql/async-graphql) with Actix web. Getting started using [Async-graphql](https://github.com/async-graphql/async-graphql) with Actix Web.
## Run ## Run

@ -1,6 +1,6 @@
# Juniper # Juniper
[Juniper](https://github.com/graphql-rust/juniper) integration for Actix web. [Juniper](https://github.com/graphql-rust/juniper) integration for Actix Web.
If you want more advanced example, see also the [juniper-advanced example]. If you want more advanced example, see also the [juniper-advanced example].
[juniper-advanced example]: https://github.com/actix/examples/tree/master/graphql/juniper-advanced [juniper-advanced example]: https://github.com/actix/examples/tree/master/graphql/juniper-advanced

@ -1,4 +1,4 @@
//! Actix web juniper example //! Actix Web juniper example
//! //!
//! A simple example integrating juniper in Actix Web //! A simple example integrating juniper in Actix Web
use std::io; use std::io;

@ -1,6 +1,6 @@
# json # json
Json's `Getting Started` guide using json (serde-json or json-rust) for Actix web Json's `Getting Started` guide using json (serde-json or json-rust) for Actix Web
## Usage ## Usage

@ -1,6 +1,6 @@
# Casbin # Casbin
Basic integration of [Casbin-RS](https://github.com/casbin/casbin-rs) with [RBAC](https://en.wikipedia.org/wiki/Role-based_access_control) for Actix web. Basic integration of [Casbin-RS](https://github.com/casbin/casbin-rs) with [RBAC](https://en.wikipedia.org/wiki/Role-based_access_control) for Actix Web.
## Usage ## Usage

@ -2,7 +2,7 @@
<html> <html>
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>Actix web</title> <title>Actix Web</title>
</head> </head>
<body> <body>
<h1>Welcome!</h1> <h1>Welcome!</h1>

@ -2,7 +2,7 @@
<html> <html>
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>Actix web</title> <title>Actix Web</title>
</head> </head>
<body> <body>
<h1>Hi, {{ name }}!</h1> <h1>Hi, {{ name }}!</h1>

@ -2,7 +2,7 @@
<html> <html>
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>Actix web</title> <title>Actix Web</title>
</head> </head>
<body> <body>
<h1>Welcome!</h1> <h1>Welcome!</h1>

@ -2,7 +2,7 @@
<html> <html>
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>Actix web</title> <title>Actix Web</title>
</head> </head>
<body> <body>
<h1>Hi, {{ name }}!</h1> <h1>Hi, {{ name }}!</h1>

@ -2,7 +2,7 @@
<html> <html>
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>Actix web</title> <title>Actix Web</title>
</head> </head>
<body> <body>
<h1>Welcome!</h1> <h1>Welcome!</h1>

@ -2,7 +2,7 @@
<html> <html>
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>Actix web</title> <title>Actix Web</title>
</head> </head>
<body> <body>
<h1>Hi, {name}!</h1> <h1>Hi, {name}!</h1>

@ -1,4 +1,4 @@
{{#> base title = "Actix web" }} {{#> base title = "Actix Web" }}
{{~#if let Some(name) = query.get("name") }} {{~#if let Some(name) = query.get("name") }}
{{ let lastname = query.get("lastname").ok_or(MyErr("Bad query"))? }} {{ let lastname = query.get("lastname").ok_or(MyErr("Bad query"))? }}
{{> card/hi ~}} {{> card/hi ~}}