use bytes::Bytes;
pub trait JdbEmbed {
type Error;
fn get(&self, key: impl AsRef<[u8]>) -> Result<Option<Bytes>, Self::Error>;
fn set(&self, key: impl AsRef<[u8]>, val: impl AsRef<[u8]>) -> Result<(), Self::Error>;
fn setnx(&self, key: impl AsRef<[u8]>, val: impl AsRef<[u8]>) -> Result<bool, Self::Error>;
fn setxx(&self, key: impl AsRef<[u8]>, val: impl AsRef<[u8]>) -> Result<bool, Self::Error>;
fn setget(
&self,
key: impl AsRef<[u8]>,
val: impl AsRef<[u8]>,
) -> Result<Option<Bytes>, Self::Error>;
fn setex(
&self,
key: impl AsRef<[u8]>,
val: impl AsRef<[u8]>,
sec: u64,
) -> Result<(), Self::Error>;
fn setpx(
&self,
key: impl AsRef<[u8]>,
val: impl AsRef<[u8]>,
ms: u64,
) -> Result<(), Self::Error>;
fn append(&self, key: impl AsRef<[u8]>, val: impl AsRef<[u8]>) -> Result<usize, Self::Error>;
fn incr(&self, key: impl AsRef<[u8]>) -> Result<i64, Self::Error>;
fn decr(&self, key: impl AsRef<[u8]>) -> Result<i64, Self::Error>;
fn incrby(&self, key: impl AsRef<[u8]>, increment: i64) -> Result<i64, Self::Error>;
fn decrby(&self, key: impl AsRef<[u8]>, decrement: i64) -> Result<i64, Self::Error>;
fn strlen(&self, key: impl AsRef<[u8]>) -> Result<usize, Self::Error>;
fn setrange(
&self,
key: impl AsRef<[u8]>,
offset: usize,
val: impl AsRef<[u8]>,
) -> Result<usize, Self::Error>;
fn getrange(&self, key: impl AsRef<[u8]>, start: isize, end: isize)
-> Result<Bytes, Self::Error>;
fn mget(&self, keys: Vec<impl AsRef<[u8]>>) -> Result<Vec<Option<Bytes>>, Self::Error>;
fn mset(&self, keyvalpairs: Vec<(impl AsRef<[u8]>, impl AsRef<[u8]>)>)
-> Result<(), Self::Error>;
fn del(&self, keys: &[impl AsRef<[u8]>]) -> Result<usize, Self::Error>;
fn exists(&self, key: impl AsRef<[u8]>) -> Result<bool, Self::Error>;
fn expire(&self, key: impl AsRef<[u8]>, sec: u64) -> Result<bool, Self::Error>;
fn pexpire(&self, key: impl AsRef<[u8]>, ms: u64) -> Result<bool, Self::Error>;
fn ttl(&self, key: impl AsRef<[u8]>) -> Result<Option<i64>, Self::Error>;
fn pttl(&self, key: impl AsRef<[u8]>) -> Result<Option<i64>, Self::Error>;
fn persist(&self, key: impl AsRef<[u8]>) -> Result<bool, Self::Error>;
fn getex(&self, key: impl AsRef<[u8]>, sec: u64) -> Result<Option<Bytes>, Self::Error>;
fn getdel(&self, key: impl AsRef<[u8]>) -> Result<Option<Bytes>, Self::Error>;
}