refactor: implement fetchall with generic type
This commit is contained in:
23
sdgb-cli/src/cache/mod.rs
vendored
23
sdgb-cli/src/cache/mod.rs
vendored
@@ -7,29 +7,36 @@ static DATABASE: LazyLock<redb::Database> = LazyLock::new(|| {
|
||||
.create("players.redb")
|
||||
.expect("failed to open database")
|
||||
});
|
||||
const DIFINITION: TableDefinition<'_, u32, Vec<u8>> = redb::TableDefinition::new("players");
|
||||
|
||||
pub const PLAYERS: TableDefinition<'_, u32, Vec<u8>> = redb::TableDefinition::new("players");
|
||||
pub const PLAYER_B50: TableDefinition<'_, u32, Vec<u8>> = redb::TableDefinition::new("b50");
|
||||
|
||||
pub fn write_txn() -> Result<WriteTransaction, redb::Error> {
|
||||
Ok(DATABASE.begin_write()?)
|
||||
}
|
||||
|
||||
pub fn open_table(write: &WriteTransaction) -> Result<Table<'_, u32, Vec<u8>>, redb::Error> {
|
||||
Ok(write.open_table(DIFINITION)?)
|
||||
}
|
||||
|
||||
pub fn read_txn() -> Result<ReadTransaction, redb::Error> {
|
||||
Ok(DATABASE.begin_read()?)
|
||||
}
|
||||
|
||||
pub fn open_table_read(
|
||||
pub fn open_table<'a>(
|
||||
write: &'a WriteTransaction,
|
||||
definition: TableDefinition<'_, u32, Vec<u8>>,
|
||||
) -> Result<Table<'a, u32, Vec<u8>>, redb::Error> {
|
||||
Ok(write.open_table(definition)?)
|
||||
}
|
||||
|
||||
pub fn open_table_ro(
|
||||
read: &ReadTransaction,
|
||||
definition: TableDefinition<'_, u32, Vec<u8>>,
|
||||
) -> Result<redb::ReadOnlyTable<u32, Vec<u8>>, redb::Error> {
|
||||
Ok(read.open_table(DIFINITION)?)
|
||||
Ok(read.open_table(definition)?)
|
||||
}
|
||||
|
||||
pub fn init_db() -> Result<(), redb::Error> {
|
||||
let write_txn = DATABASE.begin_write()?;
|
||||
write_txn.open_table(DIFINITION)?;
|
||||
write_txn.open_table(PLAYERS)?;
|
||||
write_txn.open_table(PLAYER_B50)?;
|
||||
write_txn.commit()?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user