From 0ab878cda87cde41b7641be10b5c170f2f4eacaa Mon Sep 17 00:00:00 2001 From: Divy Srivastava Date: Mon, 9 Dec 2024 12:03:01 +0530 Subject: [PATCH] init --- Cargo.lock | 4 +++ Cargo.toml | 3 ++ ext/node/lib.rs | 4 ++- ext/node/ops/mod.rs | 1 + ext/node/ops/sqlite.rs | 81 ++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 ext/node/ops/sqlite.rs diff --git a/Cargo.lock b/Cargo.lock index 9c42621100..fbecdb9155 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9145,3 +9145,7 @@ dependencies = [ "cc", "pkg-config", ] + +[[patch.unused]] +name = "deno_core" +version = "0.325.0" diff --git a/Cargo.toml b/Cargo.toml index 4698acd06d..17b4a8ea7d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -339,3 +339,6 @@ opt-level = 3 opt-level = 3 [profile.release.package.zstd-sys] opt-level = 3 + +[patch.crates-io] +deno_core = { path = "../deno_core/core" } diff --git a/ext/node/lib.rs b/ext/node/lib.rs index bf593ad432..dcaaa65886 100644 --- a/ext/node/lib.rs +++ b/ext/node/lib.rs @@ -431,7 +431,9 @@ deno_core::extension!(deno_node, ops::inspector::op_inspector_enabled, ], objects = [ - ops::perf_hooks::EldHistogram + ops::perf_hooks::EldHistogram, + ops::sqlite::DatabaseSync, + ops::sqlite::StatementSync ], esm_entry_point = "ext:deno_node/02_init.js", esm = [ diff --git a/ext/node/ops/mod.rs b/ext/node/ops/mod.rs index e5ea8b4172..2ecc8dfd75 100644 --- a/ext/node/ops/mod.rs +++ b/ext/node/ops/mod.rs @@ -13,6 +13,7 @@ pub mod os; pub mod perf_hooks; pub mod process; pub mod require; +pub mod sqlite; pub mod tls; pub mod util; pub mod v8; diff --git a/ext/node/ops/sqlite.rs b/ext/node/ops/sqlite.rs new file mode 100644 index 0000000000..f3df599dcb --- /dev/null +++ b/ext/node/ops/sqlite.rs @@ -0,0 +1,81 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. + +use std::ops::Deref; +use std::rc::Rc; + +use deno_core::error::AnyError; +use deno_core::op2; +use deno_core::v8; +use deno_core::GarbageCollected; +use serde::Deserialize; + +#[derive(Deserialize)] +#[serde(rename_all = "camelCase")] +struct DatabaseSyncOptions { + open: bool, + enable_foreign_key_constraints: bool, +} + +pub struct DatabaseSync {} + +impl GarbageCollected for DatabaseSync {} + +#[op2] +impl DatabaseSync { + #[constructor] + #[cppgc] + fn new( + #[string] location: &str, + #[serde] options: DatabaseSyncOptions, + ) -> DatabaseSync { + DatabaseSync {} + } + + #[fast] + fn open(&self) {} + + #[fast] + fn close(&self) {} + + #[cppgc] + fn prepare(&self, #[string] sql: &str) -> StatementSync { + StatementSync {} + } + + // fn exec() <-- varargs +} + +pub struct StatementSync {} + +impl GarbageCollected for StatementSync {} + +#[op2] +impl StatementSync { + #[constructor] + #[cppgc] + fn new(_: bool) -> StatementSync { + StatementSync {} + } + + // fn get() <-- varargs + + #[fast] + fn run(&self) {} + + #[fast] + fn all(&self) {} + + #[fast] + fn set_allowed_bare_named_parameters(&self, enabled: bool) {} + + #[fast] + fn set_read_bigints(&self, enabled: bool) {} + + #[fast] + fn source_sql(&self) {} + + #[string] + fn expanded_sqlite(&self) -> String { + todo!() + } +}