diff options
| author | Bryan Newbold <bnewbold@robocracy.org> | 2018-07-25 21:31:43 -0700 | 
|---|---|---|
| committer | Bryan Newbold <bnewbold@robocracy.org> | 2018-07-25 21:31:43 -0700 | 
| commit | be936450ac981c48b44d4d599402d4b7853129cd (patch) | |
| tree | ca1630f03d880a5e7407dabaf3f0df23c52657df /rust | |
| parent | d24f2569d791fc0145639115aed4ccd6bed03466 (diff) | |
| download | fatcat-be936450ac981c48b44d4d599402d4b7853129cd.tar.gz fatcat-be936450ac981c48b44d4d599402d4b7853129cd.zip | |
have get_editgroup take optional conn
Diffstat (limited to 'rust')
| -rw-r--r-- | rust/src/api_server.rs | 27 | ||||
| -rw-r--r-- | rust/src/api_wrappers.rs | 2 | 
2 files changed, 19 insertions, 10 deletions
| diff --git a/rust/src/api_server.rs b/rust/src/api_server.rs index 00d5cdde..902b0934 100644 --- a/rust/src/api_server.rs +++ b/rust/src/api_server.rs @@ -898,17 +898,26 @@ impl Server {          })      } -    pub fn get_editgroup_handler(&self, id: &str) -> Result<Editgroup> { -        let conn = self.db_pool.get().expect("db_pool error"); +    pub fn get_editgroup_handler(&self, id: &str, conn: Option<&DbConn>) -> Result<Editgroup> { +        // TODO: still can't cast for some reason +        // There mut be a cleaner way to manage the lifetime here +        let real_conn = match conn { +            Some(_) => None, +            None => Some(self.db_pool.get().expect("database pool")), +        }; +        let conn = match real_conn { +            Some(ref c) => c, +            None => conn.unwrap(), +        };          let id = fcid2uuid(id)?; -        let row: EditgroupRow = editgroup::table.find(id).first(&conn)?; +        let row: EditgroupRow = editgroup::table.find(id).first(conn)?;          let edits = EditgroupEdits {              containers: Some(                  container_edit::table                      .filter(container_edit::editgroup_id.eq(id)) -                    .get_results(&conn)? +                    .get_results(conn)?                      .into_iter()                      .map(|e: ContainerEditRow| e.into_model().unwrap())                      .collect(), @@ -916,7 +925,7 @@ impl Server {              creators: Some(                  creator_edit::table                      .filter(creator_edit::editgroup_id.eq(id)) -                    .get_results(&conn)? +                    .get_results(conn)?                      .into_iter()                      .map(|e: CreatorEditRow| e.into_model().unwrap())                      .collect(), @@ -924,7 +933,7 @@ impl Server {              files: Some(                  file_edit::table                      .filter(file_edit::editgroup_id.eq(id)) -                    .get_results(&conn)? +                    .get_results(conn)?                      .into_iter()                      .map(|e: FileEditRow| e.into_model().unwrap())                      .collect(), @@ -932,7 +941,7 @@ impl Server {              releases: Some(                  release_edit::table                      .filter(release_edit::editgroup_id.eq(id)) -                    .get_results(&conn)? +                    .get_results(conn)?                      .into_iter()                      .map(|e: ReleaseEditRow| e.into_model().unwrap())                      .collect(), @@ -940,7 +949,7 @@ impl Server {              works: Some(                  work_edit::table                      .filter(work_edit::editgroup_id.eq(id)) -                    .get_results(&conn)? +                    .get_results(conn)?                      .into_iter()                      .map(|e: WorkEditRow| e.into_model().unwrap())                      .collect(), @@ -1019,7 +1028,7 @@ impl Server {          let conn = self.db_pool.get().expect("db_pool error");          let cl_row: ChangelogRow = changelog::table.find(id).first(&conn)?; -        let editgroup = self.get_editgroup_handler(&uuid2fcid(&cl_row.editgroup_id))?; +        let editgroup = self.get_editgroup_handler(&uuid2fcid(&cl_row.editgroup_id), Some(&conn))?;          let mut entry = cl_row.into_model();          entry.editgroup = Some(editgroup); diff --git a/rust/src/api_wrappers.rs b/rust/src/api_wrappers.rs index e66f3ccd..df066694 100644 --- a/rust/src/api_wrappers.rs +++ b/rust/src/api_wrappers.rs @@ -300,7 +300,7 @@ impl Api for Server {          id: String,          _context: &Context,      ) -> Box<Future<Item = GetEditgroupResponse, Error = ApiError> + Send> { -        let ret = match self.get_editgroup_handler(&id) { +        let ret = match self.get_editgroup_handler(&id, None) {              Ok(entity) =>                  GetEditgroupResponse::FoundEntity(entity),              Err(Error(ErrorKind::Diesel(::diesel::result::Error::NotFound), _)) => | 
