use heromodels::db::postgres::{Config, Postgres}; use heromodels::db::{Collection, Db}; use heromodels::models::heroledger::user::user_index::username; use heromodels::models::heroledger::user::{SecretBox, User}; fn main() { let db = Postgres::new( Config::new() .user(Some("postgres".into())) .password(Some("test123".into())) .host(Some("localhost".into())) .port(Some(5432)), ) .expect("Can connect to Postgres"); println!("Heroledger User - Postgres Example"); println!("=================================="); let users = db.collection::().expect("open user collection"); // Clean if let Ok(existing) = users.get_all() { for u in existing { let _ = users.delete_by_id(u.get_id()); } } let sb = SecretBox::new().data(vec![1, 2, 3]).nonce(vec![9, 9, 9]).build(); let u = User::new(0) .username("alice") .pubkey("PUBKEY_A") .add_email("alice@example.com") .add_userprofile(sb) .build(); let (id, stored) = users.set(&u).expect("store user"); println!("Stored user id={id} username={} pubkey={}", stored.username, stored.pubkey); let by_idx = users.get::("alice").expect("by username"); println!("Found {} user(s) with username=alice", by_idx.len()); let fetched = users.get_by_id(id).expect("get by id").expect("exists"); println!("Fetched by id={} username={} emails={:?}", id, fetched.username, fetched.email); // Update let updated = fetched.clone().add_email("work@alice.example"); let (_, back) = users.set(&updated).expect("update user"); println!("Updated emails = {:?}", back.email); // Delete users.delete_by_id(id).expect("delete user"); println!("Deleted user id={id}"); }