add time querying to io trait

This commit is contained in:
mazchew 2024-08-25 16:33:12 +08:00
parent 84ed081f19
commit 671b61ba19
7 changed files with 38 additions and 0 deletions

View file

@ -92,6 +92,11 @@ impl limbo_core::IO for PlatformIO {
let random_f64 = Math_random();
(random_f64 * i64::MAX as f64) as i64
}
fn get_current_time(&self) -> String {
let date = Date::new();
date.toISOString()
}
}
#[wasm_bindgen]
@ -99,6 +104,17 @@ extern "C" {
fn Math_random() -> f64;
}
#[wasm_bindgen]
extern "C" {
type Date;
#[wasm_bindgen(constructor)]
fn new() -> Date;
#[wasm_bindgen(method, getter)]
fn toISOString(this: &Date) -> String;
}
pub struct DatabaseStorage {
file: Rc<dyn limbo_core::File>,
}

View file

@ -110,6 +110,10 @@ impl IO for DarwinIO {
getrandom::getrandom(&mut buf).unwrap();
i64::from_ne_bytes(buf)
}
fn get_current_time(&self) -> String {
chrono::Local::now().format("%Y-%m-%d %H:%M:%S").to_string()
}
}
enum CompletionCallback {

View file

@ -30,6 +30,10 @@ impl IO for GenericIO {
getrandom::getrandom(&mut buf).unwrap();
i64::from_ne_bytes(buf)
}
fn get_current_time(&self) -> String {
chrono::Local::now().format("%Y-%m-%d %H:%M:%S").to_string()
}
}
pub struct GenericFile {

View file

@ -111,6 +111,10 @@ impl IO for LinuxIO {
getrandom::getrandom(&mut buf).unwrap();
i64::from_ne_bytes(buf)
}
fn get_current_time(&self) -> String {
chrono::Local::now().format("%Y-%m-%d %H:%M:%S").to_string()
}
}
pub struct LinuxFile {

View file

@ -22,6 +22,8 @@ pub trait IO {
fn run_once(&self) -> Result<()>;
fn generate_random_number(&self) -> i64;
fn get_current_time(&self) -> String;
}
pub type Complete = dyn Fn(Rc<RefCell<Buffer>>);

View file

@ -30,6 +30,10 @@ impl IO for WindowsIO {
getrandom::getrandom(&mut buf).unwrap();
i64::from_ne_bytes(buf)
}
fn get_current_time(&self) -> String {
chrono::Local::now().format("%Y-%m-%d %H:%M:%S").to_string()
}
}
pub struct WindowsFile {

View file

@ -113,6 +113,10 @@ impl IO for SimulatorIO {
fn generate_random_number(&self) -> i64 {
self.rng.borrow_mut().next_u64() as i64
}
fn get_current_time(&self) -> String {
"2024-01-01 00:00:00".to_string()
}
}
struct SimulatorFile {