Skip to content

Commit d8ceb87

Browse files
committed
models/krate: Extract NewCrate::create() fn
When using `create_or_update()` in the test suite we usually only really want `create()` without any unintentional updates.
1 parent 3c45ff5 commit d8ceb87

File tree

4 files changed

+23
-21
lines changed

4 files changed

+23
-21
lines changed

src/downloads_counter.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -439,7 +439,7 @@ mod tests {
439439
name: "foo",
440440
..NewCrate::default()
441441
}
442-
.create_or_update(conn, user.id)
442+
.create(conn, user.id)
443443
.expect("failed to create crate");
444444

445445
Self {

src/models/krate.rs

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -120,33 +120,35 @@ impl<'a> NewCrate<'a> {
120120
})
121121
}
122122

123-
fn save_new_crate(&self, conn: &mut PgConnection, user_id: i32) -> QueryResult<Option<Crate>> {
123+
pub fn create(&self, conn: &mut PgConnection, user_id: i32) -> QueryResult<Crate> {
124124
use crate::schema::crates::dsl::*;
125125

126126
conn.transaction(|conn| {
127-
let maybe_inserted: Option<Crate> = diesel::insert_into(crates)
127+
let krate: Crate = diesel::insert_into(crates)
128128
.values(self)
129129
.on_conflict_do_nothing()
130130
.returning(Crate::as_returning())
131-
.get_result(conn)
132-
.optional()?;
133-
134-
if let Some(ref krate) = maybe_inserted {
135-
let owner = CrateOwner {
136-
crate_id: krate.id,
137-
owner_id: user_id,
138-
created_by: user_id,
139-
owner_kind: OwnerKind::User as i32,
140-
email_notifications: true,
141-
};
142-
diesel::insert_into(crate_owners::table)
143-
.values(&owner)
144-
.execute(conn)?;
145-
}
131+
.get_result(conn)?;
146132

147-
Ok(maybe_inserted)
133+
let owner = CrateOwner {
134+
crate_id: krate.id,
135+
owner_id: user_id,
136+
created_by: user_id,
137+
owner_kind: OwnerKind::User as i32,
138+
email_notifications: true,
139+
};
140+
141+
diesel::insert_into(crate_owners::table)
142+
.values(&owner)
143+
.execute(conn)?;
144+
145+
Ok(krate)
148146
})
149147
}
148+
149+
fn save_new_crate(&self, conn: &mut PgConnection, user_id: i32) -> QueryResult<Option<Crate>> {
150+
conn.transaction(|conn| self.create(conn, user_id).optional())
151+
}
150152
}
151153

152154
impl Crate {

src/tests/builders/krate.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ impl<'a> CrateBuilder<'a> {
114114
pub fn build(mut self, connection: &mut PgConnection) -> AppResult<Crate> {
115115
use diesel::{insert_into, select, update};
116116

117-
let mut krate = self.krate.create_or_update(connection, self.owner_id)?;
117+
let mut krate = self.krate.create(connection, self.owner_id)?;
118118

119119
// Since we are using `NewCrate`, we can't set all the
120120
// crate properties in a single DB call.

src/worker/update_downloads.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ mod test {
9898
name: "foo",
9999
..Default::default()
100100
}
101-
.create_or_update(conn, user_id)
101+
.create(conn, user_id)
102102
.unwrap();
103103
let version = NewVersion::new(
104104
krate.id,

0 commit comments

Comments
 (0)