Skip to content

Commit

Permalink
Report publish as successful if code didn't change
Browse files Browse the repository at this point in the history
  • Loading branch information
kpcyrd committed Dec 5, 2018
1 parent 7235406 commit facd529
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 4 deletions.
12 changes: 10 additions & 2 deletions sn0int-registry/src/models.rs
Original file line number Diff line number Diff line change
Expand Up @@ -231,13 +231,21 @@ impl Release {
*/
}

pub fn find(id: i32, version: &str, connection: &PgConnection) -> Result<Release> {
releases::table.filter(releases::columns::module_id.eq(id))
pub fn find(module_id: i32, version: &str, connection: &PgConnection) -> Result<Release> {
releases::table.filter(releases::columns::module_id.eq(module_id))
.filter(releases::columns::version.eq(version))
.first::<Release>(connection)
.map_err(Error::from)
}

pub fn try_find(module_id: i32, version: &str, connection: &PgConnection) -> Result<Option<Release>> {
releases::table.filter(releases::columns::module_id.eq(module_id))
.filter(releases::columns::version.eq(version))
.first::<Release>(connection)
.optional()
.map_err(Error::from)
}

pub fn id(id: i32, connection: &PgConnection) -> Result<Release> {
releases::table.find(id)
.first::<Release>(connection)
Expand Down
12 changes: 11 additions & 1 deletion sn0int-registry/src/routes/api.rs
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,17 @@ fn publish(name: String, upload: Json<PublishRequest>, session: AuthHeader, conn

connection.transaction::<_, Error, _>(|| {
let module = Module::update_or_create(&user, &name, &metadata.description, &connection)?;
module.add_version(&version, &upload.code, &connection)?;

match Release::try_find(module.id, &version, &connection)? {
Some(release) => {
// if the code is identical, pretend we published the version
if release.code != upload.code {
bail!("Version number already in use")
}
},
None => module.add_version(&version, &upload.code, &connection)?,
}

Ok(())
})?;

Expand Down
2 changes: 1 addition & 1 deletion src/api.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ impl Client {

pub fn request<T: DeserializeOwned + fmt::Debug>(&self, mut request: RequestBuilder, body: Body) -> Result<T> {
if let Some(session) = &self.session {
info!("Adding session token");
info!("Adding session token to request");
request.header("Auth", session.as_str());
}

Expand Down

0 comments on commit facd529

Please sign in to comment.