Skip to content

Commit 41e7324

Browse files
committed
Add sub modules to organize project structure better
1 parent c638e8d commit 41e7324

16 files changed

Lines changed: 453 additions & 422 deletions

File tree

diesel.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
# see diesel.rs/guides/configuring-diesel-cli
33

44
[print_schema]
5-
file = "src/schema.rs"
5+
file = "src/data/schema.rs"

src/api/addresses.rs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
use actix_web::{Error, HttpResponse, web};
2+
use log::error;
3+
use serde::Deserialize;
4+
5+
use crate::data::repo::addresses::get_addresses;
6+
use crate::db::Pool;
7+
8+
#[derive(Deserialize)]
9+
pub struct AddressRequest {
10+
postcode: String,
11+
number: Option<String>
12+
}
13+
14+
pub async fn addresses(
15+
request: web::Query<AddressRequest>,
16+
pool: web::Data<Pool>
17+
) -> Result<HttpResponse, Error> {
18+
let result = web::block(move || {
19+
get_addresses(
20+
&pool,
21+
&request.postcode,
22+
request.number.as_ref().map(|n| n.as_str())
23+
)
24+
})
25+
.await;
26+
27+
match result {
28+
Ok(addresses) => { Ok(HttpResponse::Ok().json(addresses)) },
29+
Err(err) => {
30+
error!("Error while retrieving addresses: {}", err);
31+
Ok(HttpResponse::InternalServerError().finish())
32+
},
33+
}
34+
}

src/api/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
pub mod addresses;

src/tests.rs renamed to src/api_tests.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@ mod tests {
66
http::StatusCode, test, web,
77
};
88
use diesel::RunQueryDsl;
9+
use futures::FutureExt;
910

1011
use lazy_static::lazy_static;
1112

1213
use crate::addresses;
13-
use crate::data::create_or_update_addresses;
14+
use crate::data::models::{Address, AddressRecord};
15+
use crate::data::repo::addresses::create_or_update_addresses;
1416
use crate::db::{init_test_connection_pool, Pool};
15-
use crate::models::{Address, AddressRecord};
16-
use futures::FutureExt;
1717

1818
embed_migrations!("./migrations");
1919

@@ -42,7 +42,7 @@ mod tests {
4242
}
4343

4444
async fn setup() {
45-
use crate::schema::addresses;
45+
use crate::data::schema::addresses;
4646
// Clear data from previous tests
4747
web::block(|| {
4848
diesel::delete(addresses::table)

0 commit comments

Comments
 (0)