55 lines
1.5 KiB
Rust
55 lines
1.5 KiB
Rust
|
|
use rusqlite::{ffi::Error, Connection};
|
||
|
|
|
||
|
|
pub fn migrate(con: &Connection) -> Result<(), Error>{
|
||
|
|
let tx = con.transaction()?;
|
||
|
|
tx.execute(
|
||
|
|
"CREATE TABLE peer (
|
||
|
|
id INTEGER PRIMARY KEY,
|
||
|
|
libp2p_peer_id TEXT UNIQUE NOT NULL,
|
||
|
|
created_at TEXT NOT NULL,
|
||
|
|
updated_at TEXT NOT NULL,
|
||
|
|
)",
|
||
|
|
()
|
||
|
|
)?;
|
||
|
|
tx.execute(
|
||
|
|
"CREATE INDEX idx_peer_created_at ON peer(created_at)",
|
||
|
|
()
|
||
|
|
)?;
|
||
|
|
tx.execute(
|
||
|
|
"CREATE INDEX idx_peer_updated_at ON peer(updated_at)",
|
||
|
|
()
|
||
|
|
)?;
|
||
|
|
tx.execute(
|
||
|
|
"CREATE TABLE address (
|
||
|
|
id INTEGER PRIMARY KEY,
|
||
|
|
peer_id INTEGER NOT NULL,
|
||
|
|
multiaddr TEXT UNIQUE NOT NULL,
|
||
|
|
created_at TEXT NOT NULL,
|
||
|
|
updated_at TEXT NOT NULL,
|
||
|
|
protocol TEXT NOT NULL,
|
||
|
|
FOREIGN KEY(peer_id) REFERENCES peer(id),
|
||
|
|
)",
|
||
|
|
()
|
||
|
|
)?;
|
||
|
|
tx.execute(
|
||
|
|
"CREATE INDEX idx_address_created_at ON address(created_at)",
|
||
|
|
()
|
||
|
|
)?;
|
||
|
|
tx.execute(
|
||
|
|
"CREATE INDEX idx_address_updated_at ON address(updated_at)",
|
||
|
|
()
|
||
|
|
)?;
|
||
|
|
tx.execute(
|
||
|
|
"CREATE TABLE authorized_peer (
|
||
|
|
id INTEGER PRIMARY KEY,
|
||
|
|
peer_id INTEGER NOT NULL UNIQUE,
|
||
|
|
synced_at TEXT,
|
||
|
|
created_at TEXT NOT NULL,
|
||
|
|
updated_at TEXT NOT NULL,
|
||
|
|
FOREIGN KEY(peer_id) REFERENCES peer(id)",
|
||
|
|
()
|
||
|
|
)?;
|
||
|
|
|
||
|
|
tx.pragma_update(None, "user_version", 1)?;
|
||
|
|
tx.commit()?;
|
||
|
|
}
|