caretta-sync/core/src/data/local/mod.rs

27 lines
913 B
Rust
Raw Normal View History

2025-09-09 09:20:34 +09:00
mod authorization;
2025-09-03 06:20:34 +09:00
pub mod migration;
2025-09-09 09:20:34 +09:00
use std::{cell::OnceCell, iter::Map, path::Path, sync::{LazyLock, OnceLock}};
2025-09-03 06:20:34 +09:00
use migration::migrate;
2025-09-09 09:20:34 +09:00
use rusqlite::{ffi::Error, Connection, MappedRows, Row};
2025-09-03 06:20:34 +09:00
2025-09-09 09:20:34 +09:00
use crate::{config::StorageConfig, global::{CONFIG, LOCAL_DATABASE_CONNECTION}};
2025-09-03 06:20:34 +09:00
2025-09-09 09:20:34 +09:00
pub use authorization::*;
2025-09-03 06:20:34 +09:00
2025-09-09 09:20:34 +09:00
pub trait RusqliteRecord: Sized {
fn insert(&self, connection: &Connection) -> Result<(), rusqlite::Error>;
fn from_row(row: &Row<'_>) -> Result<Self, rusqlite::Error>;
fn get_all(connection: &Connection) -> Result<Vec<Self>, rusqlite::Error>;
2025-09-03 06:20:34 +09:00
}
2025-09-09 09:20:34 +09:00
pub trait LocalRecord : RusqliteRecord{
fn insert_global(&self) -> Result<(), rusqlite::Error> {
self.insert(&LOCAL_DATABASE_CONNECTION.get_unchecked())
2025-09-03 06:20:34 +09:00
}
2025-09-09 09:20:34 +09:00
fn get_all_global() -> Result<Vec<Self>, rusqlite::Error> {
let connection = LOCAL_DATABASE_CONNECTION.get_unchecked();
Self::get_all(&connection)
2025-09-03 06:20:34 +09:00
}
}