Skip to content

Commit 04ca810

Browse files
1234: Update to Diesel 1.1 r=carols10cents This is the minimum changes required to fix any deprecation warnings. There's a lot of additional stuff we could do that I wanted to keep separate. After updating to Diesel 1.1, we can remove virtually anywhere that we're doing an explicit `&*`. Additionally, there are probably a lot of places that we should be using custom types but aren't. We can remove a lot of code once dtolnay/semver#169 is merged/released as well.
2 parents c26ed7e + afff732 commit 04ca810

17 files changed

+49
-76
lines changed

Cargo.lock

Lines changed: 19 additions & 30 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ semver = "0.5"
3535
url = "1.2.1"
3636
tar = "0.4.13"
3737

38-
r2d2 = "0.8.0"
3938
openssl = "0.9.14"
4039
curl = "0.4"
4140
oauth2 = "0.3"
@@ -46,8 +45,7 @@ htmlescape = "0.3.1"
4645
license-exprs = "^1.3"
4746
dotenv = "0.10.0"
4847
toml = "0.4"
49-
diesel = { version = "1.0.0", features = ["postgres", "serde_json", "chrono"] }
50-
r2d2-diesel = "1.0.0"
48+
diesel = { version = "1.1.0", features = ["postgres", "serde_json", "chrono", "r2d2"] }
5149
diesel_full_text_search = "1.0.0"
5250
serde_json = "1.0.0"
5351
serde_derive = "1.0.0"
@@ -83,8 +81,8 @@ tokio-service = "0.1"
8381

8482
[build-dependencies]
8583
dotenv = "0.10"
86-
diesel = { version = "1.0.0", features = ["postgres"] }
87-
diesel_migrations = { version = "1.0.0", features = ["postgres"] }
84+
diesel = { version = "1.1.0", features = ["postgres"] }
85+
diesel_migrations = { version = "1.1.0", features = ["postgres"] }
8886

8987
# Remove once cookie depends on ring >= 0.13.0
9088
[patch.crates-io]

src/app.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ use std::sync::{Arc, Mutex};
77

88
use conduit::{Request, Response};
99
use conduit_middleware::Middleware;
10+
use diesel::r2d2;
1011
use git2;
1112
use oauth2;
12-
use r2d2;
1313
use curl::easy::Easy;
1414
use scheduled_thread_pool::ScheduledThreadPool;
1515

src/category.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ impl Category {
140140
}
141141

142142
pub fn subcategories(&self, conn: &PgConnection) -> QueryResult<Vec<Category>> {
143-
use diesel::types::Text;
143+
use diesel::sql_types::Text;
144144

145145
sql_query(
146146
"SELECT c.id, c.category, c.slug, c.description, \

src/db.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@ use std::env;
22

33
use conduit::Request;
44
use diesel::prelude::{ConnectionResult, PgConnection};
5-
use r2d2;
6-
use r2d2_diesel::ConnectionManager;
5+
use diesel::r2d2::{self, ConnectionManager};
76
use url::Url;
87

98
use app::RequestApp;

src/dependency.rs

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ use diesel::prelude::*;
33
use diesel::query_source::QueryableByName;
44
use diesel::row::NamedRow;
55
use semver;
6-
use std::error::Error;
76

87
use git;
98
use krate::Crate;
@@ -30,9 +29,9 @@ pub struct Dependency {
3029
#[derive(Debug, QueryableByName)]
3130
pub struct ReverseDependency {
3231
#[diesel(embed)] dependency: Dependency,
33-
#[sql_type = "::diesel::types::Integer"] crate_downloads: i32,
34-
#[sql_type = "::diesel::types::Text"]
35-
#[column_name(crate_name)]
32+
#[sql_type = "::diesel::sql_types::Integer"] crate_downloads: i32,
33+
#[sql_type = "::diesel::sql_types::Text"]
34+
#[column_name = "crate_name"]
3635
name: String,
3736
}
3837

@@ -50,7 +49,7 @@ pub struct EncodableDependency {
5049
pub downloads: i32,
5150
}
5251

53-
#[derive(Copy, Clone, Serialize, Deserialize, Debug)]
52+
#[derive(Copy, Clone, Serialize, Deserialize, Debug, FromSqlRow)]
5453
#[serde(rename_all = "lowercase")]
5554
#[repr(u32)]
5655
pub enum Kind {
@@ -141,18 +140,11 @@ pub fn add_dependencies(
141140
Ok(git_deps)
142141
}
143142

144-
use diesel::types::{FromSql, FromSqlRow, Integer};
145-
use diesel::row::Row;
146-
147-
// FIXME: Replace with `#[derive(FromSqlRow)]` in Diesel 1.1
148-
impl FromSqlRow<Integer, Pg> for Kind {
149-
fn build_from_row<R: Row<Pg>>(row: &mut R) -> Result<Self, Box<Error + Send + Sync>> {
150-
Self::from_sql(row.take())
151-
}
152-
}
143+
use diesel::deserialize::{self, FromSql};
144+
use diesel::sql_types::Integer;
153145

154146
impl FromSql<Integer, Pg> for Kind {
155-
fn from_sql(bytes: Option<&[u8]>) -> Result<Self, Box<Error + Send + Sync>> {
147+
fn from_sql(bytes: Option<&[u8]>) -> deserialize::Result<Self> {
156148
match <i32 as FromSql<Integer, Pg>>::from_sql(bytes)? {
157149
0 => Ok(Kind::Normal),
158150
1 => Ok(Kind::Build),
@@ -191,7 +183,7 @@ impl Queryable<dependencies::SqlType, Pg> for Dependency {
191183
}
192184

193185
impl QueryableByName<Pg> for Dependency {
194-
fn build<R: NamedRow<Pg>>(row: &R) -> Result<Self, Box<Error + Send + Sync>> {
186+
fn build<R: NamedRow<Pg>>(row: &R) -> deserialize::Result<Self> {
195187
use schema::dependencies::*;
196188
use diesel::dsl::SqlTypeOf;
197189

src/krate/downloads.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ use super::{to_char, Crate};
2020
/// Handles the `GET /crates/:crate_id/downloads` route.
2121
pub fn downloads(req: &mut Request) -> CargoResult<Response> {
2222
use diesel::dsl::*;
23-
use diesel::types::BigInt;
23+
use diesel::sql_types::BigInt;
2424

2525
let crate_name = &req.params()["crate_id"];
2626
let conn = req.db_conn()?;

src/krate/metadata.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ use super::{Crate, CrateDownload, EncodableCrate, ALL_COLUMNS};
2323
/// Handles the `GET /summary` route.
2424
pub fn summary(req: &mut Request) -> CargoResult<Response> {
2525
use diesel::dsl::*;
26-
use diesel::types::{BigInt, Nullable};
26+
use diesel::sql_types::{BigInt, Nullable};
2727
use schema::crates::dsl::*;
2828

2929
let conn = req.db_conn()?;

src/krate/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -530,7 +530,7 @@ impl Crate {
530530
limit: i64,
531531
) -> QueryResult<(Vec<ReverseDependency>, i64)> {
532532
use diesel::sql_query;
533-
use diesel::types::{BigInt, Integer};
533+
use diesel::sql_types::{BigInt, Integer};
534534

535535
let rows = sql_query(include_str!("krate_reverse_dependencies.sql"))
536536
.bind::<Integer, _>(self.id)
@@ -551,7 +551,7 @@ pub struct Follow {
551551
crate_id: i32,
552552
}
553553

554-
use diesel::types::{Date, Text};
554+
use diesel::sql_types::{Date, Text};
555555
sql_function!(canon_crate_name, canon_crate_name_t, (x: Text) -> Text);
556556
sql_function!(to_char, to_char_t, (a: Date, b: Text) -> Text);
557557

src/krate/search.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ use super::{canon_crate_name, Crate, EncodableCrate, ALL_COLUMNS};
3737
/// for them.
3838
pub fn search(req: &mut Request) -> CargoResult<Response> {
3939
use diesel::dsl::*;
40-
use diesel::types::{BigInt, Bool, Nullable};
40+
use diesel::sql_types::{BigInt, Bool, Nullable};
4141

4242
let conn = req.db_conn()?;
4343
let (offset, limit) = req.pagination(10, 100)?;

src/lib.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,6 @@ extern crate license_exprs;
2727
extern crate log;
2828
extern crate oauth2;
2929
extern crate openssl;
30-
extern crate r2d2;
31-
extern crate r2d2_diesel;
3230
extern crate rand;
3331
extern crate s3;
3432
extern crate scheduled_thread_pool;
@@ -329,4 +327,4 @@ pub fn env(s: &str) -> String {
329327
::std::env::var(s).unwrap_or_else(|_| panic!("must have `{}` defined", s))
330328
}
331329

332-
sql_function!(lower, lower_t, (x: ::diesel::types::Text) -> ::diesel::types::Text);
330+
sql_function!(lower, lower_t, (x: ::diesel::sql_types::Text) -> ::diesel::sql_types::Text);

src/pagination.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use diesel::prelude::*;
22
use diesel::query_builder::*;
3-
use diesel::types::BigInt;
3+
use diesel::sql_types::BigInt;
44
use diesel::pg::Pg;
55

66
pub struct Paginated<T> {

src/schema.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ table! {
222222

223223
table! {
224224
use diesel_full_text_search::{TsVector as Tsvector};
225-
use diesel::types::*;
225+
use diesel::sql_types::*;
226226

227227
/// Representation of the `crates` table.
228228
///

src/tests/schema_details.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use diesel::prelude::*;
2-
use diesel::types::Text;
2+
use diesel::sql_types::Text;
33

44
#[test]
55
fn all_columns_called_crate_id_have_a_cascading_foreign_key() {
@@ -44,15 +44,15 @@ fn all_columns_called_version_id_have_a_cascading_foreign_key() {
4444
#[derive(QueryableByName)]
4545
struct FkConstraint {
4646
#[sql_type = "Text"]
47-
#[column_name(conname)]
47+
#[column_name = "conname"]
4848
name: String,
4949
#[sql_type = "Text"] definition: String,
5050
}
5151

5252
#[derive(QueryableByName)]
5353
struct TableNameAndConstraint {
5454
#[sql_type = "Text"]
55-
#[column_name(relname)]
55+
#[column_name = "relname"]
5656
table_name: String,
5757
#[diesel(embed)] constraint: Option<FkConstraint>,
5858
}

src/upload.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -196,15 +196,12 @@ impl Serialize for CrateVersionReq {
196196
}
197197

198198
use diesel::pg::Pg;
199-
use diesel::types::{IsNull, Text, ToSql, ToSqlOutput};
200-
use std::error::Error;
199+
use diesel::serialize::{self, Output, ToSql};
200+
use diesel::sql_types::Text;
201201
use std::io::Write;
202202

203203
impl ToSql<Text, Pg> for Feature {
204-
fn to_sql<W: Write>(
205-
&self,
206-
out: &mut ToSqlOutput<W, Pg>,
207-
) -> Result<IsNull, Box<Error + Send + Sync>> {
204+
fn to_sql<W: Write>(&self, out: &mut Output<W, Pg>) -> serialize::Result {
208205
ToSql::<Text, Pg>::to_sql(&**self, out)
209206
}
210207
}

src/user/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ impl<'a> NewUser<'a> {
8888
pub fn create_or_update(&self, conn: &PgConnection) -> QueryResult<User> {
8989
use diesel::insert_into;
9090
use diesel::dsl::sql;
91-
use diesel::types::Integer;
91+
use diesel::sql_types::Integer;
9292
use diesel::pg::upsert::excluded;
9393
use diesel::NotFound;
9494
use schema::users::dsl::*;

src/with_count.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#[derive(QueryableByName)]
22
pub struct WithCount<T> {
3-
#[sql_type = "::diesel::types::BigInt"] total: i64,
3+
#[sql_type = "::diesel::sql_types::BigInt"] total: i64,
44
#[diesel(embed)] record: T,
55
}
66

0 commit comments

Comments
 (0)