diff options
| author | Bryan Newbold <bnewbold@robocracy.org> | 2018-09-07 10:49:15 -0700 | 
|---|---|---|
| committer | Bryan Newbold <bnewbold@robocracy.org> | 2018-09-07 10:53:08 -0700 | 
| commit | 18eae2395863e32e4b7413010adafe1ffc95076e (patch) | |
| tree | 57f3d752478ffab04fe83503ff67017674f8eb68 /rust/src/api_helpers.rs | |
| parent | 1cf1061e17cb6070e4540c19b787747232eb909c (diff) | |
| download | fatcat-18eae2395863e32e4b7413010adafe1ffc95076e.tar.gz fatcat-18eae2395863e32e4b7413010adafe1ffc95076e.zip | |
major CRUD refactor
This is the start of a large refactor to move all entity CRUD (create,
read, update, delete) model/database code into it's own file.
HACKING has been updated with an overview of what happens in each file.
Next steps:
- split rev (and sub-table) insertion in to db_rev_insert and make
  create/update generic
- inserts should be batch (vector) by default
- move all other entities into this new trait framework
- bypass api_server wrappers and call into CRUD from api_wrappers for
  entity ops (should be a big cleanup)
Diffstat (limited to 'rust/src/api_helpers.rs')
| -rw-r--r-- | rust/src/api_helpers.rs | 27 | 
1 files changed, 27 insertions, 0 deletions
| diff --git a/rust/src/api_helpers.rs b/rust/src/api_helpers.rs index a68ed8a9..6c9a4e5f 100644 --- a/rust/src/api_helpers.rs +++ b/rust/src/api_helpers.rs @@ -6,6 +6,9 @@ use diesel::prelude::*;  use errors::*;  use regex::Regex;  use uuid::Uuid; +use std::str::FromStr; + +pub type DbConn = diesel::r2d2::PooledConnection<diesel::r2d2::ConnectionManager<diesel::PgConnection>>;  /// This function should always be run within a transaction  pub fn get_or_create_editgroup(editor_id: Uuid, conn: &PgConnection) -> Result<Uuid> { @@ -87,6 +90,30 @@ pub fn accept_editgroup(editgroup_id: Uuid, conn: &PgConnection) -> Result<Chang      Ok(entry)  } +pub struct FatCatId(Uuid); + +impl ToString for FatCatId { +    fn to_string(&self) -> String { +        uuid2fcid(&self.to_uuid()) +    } +} + +impl FromStr for FatCatId { +    type Err = Error; +    fn from_str(s: &str) -> Result<FatCatId> { +        fcid2uuid(s).map(|u| FatCatId(u)) +    } +} + +impl FatCatId { +    pub fn to_uuid(&self) -> Uuid { +        self.0 +    } +    pub fn from_uuid(u: &Uuid) -> FatCatId { +        FatCatId(u.clone()) +    } +} +  /// Convert fatcat IDs (base32 strings) to UUID  pub fn fcid2uuid(fcid: &str) -> Result<Uuid> {      if fcid.len() != 26 { | 
