caretta-sync/core/src/data/local/migration/v1.rs

48 lines
1.8 KiB
Rust
Raw Normal View History

2025-09-03 07:41:11 +09:00
use rusqlite::{Error, Connection};
2025-09-03 06:20:34 +09:00
2025-09-03 07:41:11 +09:00
pub fn migrate(con: &mut Connection) -> Result<(), Error>{
2025-09-03 06:20:34 +09:00
let tx = con.transaction()?;
2025-09-03 07:41:11 +09:00
tx.execute_batch(
"BEGIN;
2025-09-15 19:42:48 +09:00
CREATE TABLE peer (
id INTEGER PRIMARY KEY,
local_id INTEGER NOT NULL UNIQUE,
public_key BLOB UNIQUE NOT NULL,
);
CREATE TABLE received_authorization_request (
id INTEGER PRIMARY KEY,
request_id INTEGER NOT NULL UNIQUE,
public_key BLOB NOT NULL UNIQUE,
node_info TEXT,
created_at TEXT NOT NULL,
responded_at TEXT
);
CREATE TABLE sent_authorization_request (
id INTEGER PRIMARY KEY,
request_id INTEGER NOT NULL UNIQUE,
public_key. BLOB NOT NULL UNIQUE,
passcode TEXT NOT NULL,
created_at TEXT NOT NULL,
sent_at TEXT
);
2025-09-09 09:20:34 +09:00
CREATE TABLE authorized_peer (
id INTEGER PRIMARY KEY,
node_id BLOB NOT NULL UNIQUE,
last_synced_at TEXT,
last_sent_version_vector BLOB
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL,
2025-09-03 07:41:11 +09:00
);
2025-09-09 09:20:34 +09:00
CREATE TABLE authorization (
id INTEGER PRIMARY KEY,
node_id BLOB UNIQUE NOT NULL,
passcode TEXT NOT NULL,
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL,
2025-09-03 07:41:11 +09:00
);
2025-09-09 09:20:34 +09:00
COMMIT;",
2025-09-03 06:20:34 +09:00
)?;
tx.pragma_update(None, "user_version", 1)?;
tx.commit()?;
2025-09-03 07:41:11 +09:00
Ok(())
2025-09-03 06:20:34 +09:00
}