Move the database module to a new crate.

- This way we can share the code between multiple binaries without
    running the common tests twice.

  - Fixes #45.
This commit is contained in:
Justus Winter 2019-03-05 17:30:56 +01:00
parent d38b80f26d
commit d5c4c74656
No known key found for this signature in database
GPG Key ID: 686F55B4AB2B3386
12 changed files with 81 additions and 63 deletions

View File

@ -4,27 +4,32 @@ version = "0.1.0"
authors = ["Kai Michaelis <kai@sequoia-pgp.org>"]
build = "build.rs"
[workspace]
members = [
"database",
]
[dependencies]
hagrid-database = { path = "database" }
failure = "0.1.5"
rocket = "0"
rocket_codegen = "0"
sequoia-openpgp = { git = "https://gitlab.com/sequoia-pgp/sequoia.git", rev = "e07bb25de0b2291088f88dc5360f3d04f702049c" }
multipart = "0"
log = "0"
rand = "0.5"
# rand = "0.5"
serde = "1.0"
serde_derive = "1.0"
serde_json = "1.0"
time = "0.1"
tempfile = "3.0"
parking_lot = "0.6"
structopt = "0.2"
url = "1.6"
hex = "0.3"
# hex = "0.3"
lettre_email = "0.8"
handlebars = "1.1.0"
base64 = "0.10"
pathdiff = "0.1"
# base64 = "0.10"
# pathdiff = "0.1"
num_cpus = "1.0"
fs_extra = "1.0"

25
database/Cargo.toml Normal file
View File

@ -0,0 +1,25 @@
[package]
name = "hagrid-database"
version = "0.1.0"
authors = ["Kai Michaelis <kai@sequoia-pgp.org>"]
[dependencies]
failure = "0.1.5"
sequoia-openpgp = { git = "https://gitlab.com/sequoia-pgp/sequoia.git", rev = "e07bb25de0b2291088f88dc5360f3d04f702049c" }
multipart = "0"
log = "0"
rand = "0.5"
serde = { version = "1.0", features = ["derive"] }
serde_derive = "1.0"
serde_json = "1.0"
time = "0.1"
tempfile = "3.0"
parking_lot = "0.6"
url = "1.6"
hex = "0.3"
base64 = "0.10"
pathdiff = "0.1"
[lib]
name = "hagrid_database"
path = "src/lib.rs"

View File

@ -11,7 +11,7 @@ use pathdiff::diff_paths;
//use sequoia_openpgp::armor::{Writer, Kind};
use database::{Database, Delete, Verify, Query};
use {Database, Delete, Verify, Query};
use types::{Email, Fingerprint, KeyID};
use Result;
@ -460,8 +460,8 @@ impl Database for Filesystem {
#[cfg(test)]
mod tests {
use super::*;
use database::test;
use sequoia_openpgp::tpk::TPKBuilder;
use test;
use openpgp::tpk::TPKBuilder;
use tempfile::TempDir;
#[test]

View File

@ -1,25 +1,42 @@
use parking_lot::MutexGuard;
#![feature(proc_macro_hygiene, plugin, decl_macro)]
#![recursion_limit = "1024"]
#![feature(try_from)]
use std::convert::TryFrom;
use std::io::Cursor;
use std::io::Write;
use std::path::PathBuf;
use std::result;
use std::str::FromStr;
use sequoia_openpgp::{
constants::SignatureType, packet::Signature, packet::UserID, parse::Parse,
extern crate failure;
use failure::Error;
use failure::Fallible as Result;
#[macro_use] extern crate log;
extern crate parking_lot;
use parking_lot::MutexGuard;
extern crate pathdiff;
extern crate rand;
extern crate serde;
extern crate serde_json;
extern crate tempfile;
extern crate time;
extern crate url;
extern crate sequoia_openpgp as openpgp;
use openpgp::{
Packet, TPK,
PacketPile,
armor::{Writer, Kind},
constants::SignatureType, packet::Signature, packet::UserID, parse::Parse,
packet::Tag,
serialize::Serialize,
serialize::Serialize as OpenPgpSerialize,
};
use sequoia_openpgp::PacketPile;
use std::io::Write;
use sequoia_openpgp::armor::{Writer, Kind};
use serde::{Serialize, Deserialize, Deserializer, Serializer};
use serde::{Deserialize, Deserializer, Serializer};
use time;
pub mod types;
use types::{Email, Fingerprint, KeyID};
use Result;
mod fs;
pub use self::fs::Filesystem;
@ -64,7 +81,7 @@ impl Verify {
pub fn new(
uid: &UserID, sig: &[Signature], fpr: Fingerprint,
) -> Result<Self> {
use sequoia_openpgp::serialize::Serialize;
use openpgp::serialize::Serialize;
let mut cur = Cursor::new(Vec::default());
uid.serialize(&mut cur)?;
@ -208,7 +225,7 @@ pub trait Database: Sync + Send {
}
fn tpk_into_bytes(tpk: &TPK) -> Result<Vec<u8>> {
use sequoia_openpgp::serialize::Serialize;
use openpgp::serialize::Serialize;
use std::io::Cursor;
let mut cur = Cursor::new(Vec::default());
@ -326,7 +343,7 @@ pub trait Database: Sync + Send {
}
fn merge_or_publish(&self, mut tpk: TPK) -> Result<Vec<(Email, String)>> {
use sequoia_openpgp::RevocationStatus;
use openpgp::RevocationStatus;
let fpr = Fingerprint::try_from(tpk.primary().fingerprint())?;
let mut all_uids = Vec::default();

View File

@ -1,7 +1,7 @@
use parking_lot::{Mutex, MutexGuard};
use std::collections::HashMap;
use database::{Database, Delete, Verify, Query};
use {Database, Delete, Verify, Query};
use types::{Email, Fingerprint, KeyID};
use Result;
@ -160,8 +160,8 @@ impl Memory {
#[cfg(test)]
mod tests {
use super::*;
use database::test;
use sequoia_openpgp::tpk::TPKBuilder;
use test;
use openpgp::tpk::TPKBuilder;
#[test]
fn new() {

View File

@ -1,6 +1,6 @@
use std::path::PathBuf;
use database::{Database, Delete, Filesystem, Memory, Verify, Query};
use {Database, Delete, Filesystem, Memory, Verify, Query};
use Result;
use types::{Email, Fingerprint, KeyID};
use parking_lot::MutexGuard;

View File

@ -17,9 +17,9 @@
use std::convert::TryFrom;
use std::str::FromStr;
use database::Database;
use sequoia_openpgp::tpk::{TPKBuilder, UserIDBinding};
use sequoia_openpgp::{
use Database;
use openpgp::tpk::{TPKBuilder, UserIDBinding};
use openpgp::{
constants::ReasonForRevocation, constants::SignatureType, packet::UserID,
parse::Parse, Packet, PacketPile, RevocationStatus, TPK,
};

View File

@ -2,7 +2,7 @@ use std::convert::TryFrom;
use std::result;
use std::str::FromStr;
use sequoia_openpgp::{self, packet::UserID};
use openpgp::packet::UserID;
use serde::{Deserialize, Deserializer, Serialize, Serializer};
use {Error, Result};

View File

@ -9,42 +9,22 @@
#![recursion_limit = "1024"]
#![feature(try_from)]
use std::env;
use std::path::PathBuf;
use std::thread;
use std::cmp;
extern crate failure;
use failure::Error;
use failure::Fallible as Result;
extern crate num_cpus;
extern crate serde;
#[macro_use]
extern crate serde_derive;
extern crate serde_json;
extern crate hex;
extern crate time;
extern crate url;
extern crate sequoia_openpgp;
#[macro_use]
extern crate log;
extern crate parking_lot;
extern crate rand;
extern crate tempfile;
extern crate pathdiff;
extern crate sequoia_openpgp as openpgp;
use openpgp::Packet;
use openpgp::parse::{PacketParser, PacketParserResult, Parse};
mod database;
mod types;
extern crate hagrid_database as database;
use database::{Database, Filesystem};
fn main() {

View File

@ -6,7 +6,7 @@ use lettre_email::EmailBuilder;
use serde::Serialize;
use types::Email;
use database::types::Email;
use Result;
#[derive(Serialize, Clone)]

View File

@ -3,7 +3,6 @@
#![feature(try_from)]
extern crate failure;
use failure::Error;
use failure::Fallible as Result;
extern crate serde;
@ -11,7 +10,6 @@ extern crate serde;
extern crate serde_derive;
extern crate serde_json;
extern crate hex;
extern crate time;
extern crate url;
@ -21,26 +19,19 @@ extern crate multipart;
extern crate rocket_contrib;
extern crate sequoia_openpgp;
#[macro_use]
extern crate log;
extern crate base64;
extern crate handlebars;
extern crate lettre;
extern crate lettre_email;
extern crate parking_lot;
extern crate rand;
extern crate structopt;
extern crate tempfile;
extern crate pathdiff;
#[cfg(test)]
extern crate fs_extra;
#[cfg(test)]
extern crate regex;
mod database;
extern crate hagrid_database as database;
mod mail;
mod types;
mod web;
use std::path::PathBuf;

View File

@ -17,8 +17,8 @@ mod upload;
use mail;
use database::{Database, Polymorphic, Query};
use database::types::{Email, Fingerprint, KeyID};
use Result;
use types::{Email, Fingerprint, KeyID};
use Opt;
use std::result;
@ -26,7 +26,7 @@ use std::str::FromStr;
mod queries {
use std::fmt;
use types::{Email, Fingerprint, KeyID};
use database::types::{Email, Fingerprint, KeyID};
#[derive(Debug)]
pub enum Hkp {