use rusqlite::Connection; use serde_json::Value; use ulid::Ulid; pub struct Label { pub key: String, pub val: Option, } impl Label { pub fn new(key: String, val: Option) -> Self { Self { key, val } } } pub struct Edge { pub id: usize, pub name: String, pub data: Option, pub nodes: Vec, } impl Edge { pub fn new(name: &str, sqlite: &Connection) -> Edge { let id: usize = sqlite .query_row( "INSERT into edges (name) values(?1) returning id", [name], |row| row.get(0), ) .unwrap(); Edge { id, name: name.into(), data: None, nodes: vec![], } } }