Schema for new encoding
This commit is contained in:
parent
542dedec8d
commit
395ee67a20
@ -154,6 +154,8 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_encrypted_value_round_trip() {
|
fn test_encrypted_value_round_trip() {
|
||||||
|
// Test that writing a value to the DB and reading it back
|
||||||
|
// doesn't result in any corruption
|
||||||
let db = Connection::open_in_memory().expect("Failed to open DB");
|
let db = Connection::open_in_memory().expect("Failed to open DB");
|
||||||
db.execute_batch("CREATE TABLE test (content BLOB);")
|
db.execute_batch("CREATE TABLE test (content BLOB);")
|
||||||
.expect("Failed to create table");
|
.expect("Failed to create table");
|
||||||
|
14
src/db.rs
14
src/db.rs
@ -26,6 +26,20 @@ pub struct Account {
|
|||||||
pub password: String,
|
pub password: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
pub struct DbNamespace {
|
||||||
|
pub id: i64,
|
||||||
|
pub name: String,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
pub struct DbNote {
|
||||||
|
pub id: i64,
|
||||||
|
pub category: String,
|
||||||
|
pub title: String,
|
||||||
|
pub value: String,
|
||||||
|
}
|
||||||
|
|
||||||
impl DbHandle {
|
impl DbHandle {
|
||||||
pub fn new(db_path: &Option<String>) -> DbHandle {
|
pub fn new(db_path: &Option<String>) -> DbHandle {
|
||||||
let path: PathBuf = db_path
|
let path: PathBuf = db_path
|
||||||
|
16
src/init.sql
16
src/init.sql
@ -1,3 +1,5 @@
|
|||||||
|
PRAGMA foreign_keys = ON;
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS encrypted_values (
|
CREATE TABLE IF NOT EXISTS encrypted_values (
|
||||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
iv TEXT,
|
iv TEXT,
|
||||||
@ -21,3 +23,17 @@ CREATE TABLE IF NOT EXISTS accounts(
|
|||||||
user INTEGER NOT NULL,
|
user INTEGER NOT NULL,
|
||||||
password INTEGER NOT NULL
|
password INTEGER NOT NULL
|
||||||
);
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS namespaces(
|
||||||
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
name BLOB NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS notes(
|
||||||
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
namespace INTEGER,
|
||||||
|
category TEXT NOT NULL CHECK(category IN ('account', 'note')),
|
||||||
|
title BLOB NOT NULL,
|
||||||
|
value BLOB NOT NULL,
|
||||||
|
FOREIGN KEY(namespace) REFERENCES namespaces(id)
|
||||||
|
);
|
||||||
|
10
src/main.rs
10
src/main.rs
@ -142,7 +142,15 @@ fn set(mut db_conn: db::DbHandle, master_key: [u8; 32]) {
|
|||||||
println!("Successfully added password");
|
println!("Successfully added password");
|
||||||
}
|
}
|
||||||
|
|
||||||
fn transfer(mut db_conn: db::DbHandle, master_key: [u8; 32]) {}
|
fn transfer(mut db_conn: db::DbHandle, master_key: [u8; 32]) {
|
||||||
|
for host in db_conn
|
||||||
|
.list_accounts(master_key)
|
||||||
|
.into_iter()
|
||||||
|
.map(|account: db::Account| account.host)
|
||||||
|
{
|
||||||
|
println!("{}", host);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn main() -> Result<(), Box<dyn Error>> {
|
fn main() -> Result<(), Box<dyn Error>> {
|
||||||
pretty_env_logger::init();
|
pretty_env_logger::init();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user