From 6d4a005e4108a5dd762b339a02bc4d802755ba0d Mon Sep 17 00:00:00 2001 From: Heyang Zhou Date: Tue, 22 Aug 2023 13:56:00 +0800 Subject: feat(ext/kv): connect to remote database (#20178) This patch adds a `remote` backend for `ext/kv`. This supports connection to Deno Deploy and potentially other services compatible with the KV Connect protocol. --- runtime/permissions/mod.rs | 16 ++++++++++++++++ runtime/web_worker.rs | 4 ++-- runtime/worker.rs | 4 ++-- 3 files changed, 20 insertions(+), 4 deletions(-) (limited to 'runtime') diff --git a/runtime/permissions/mod.rs b/runtime/permissions/mod.rs index 93294fc92..a87ca309f 100644 --- a/runtime/permissions/mod.rs +++ b/runtime/permissions/mod.rs @@ -1483,6 +1483,22 @@ impl deno_kv::sqlite::SqliteDbHandlerPermissions for PermissionsContainer { } } +impl deno_kv::remote::RemoteDbHandlerPermissions for PermissionsContainer { + #[inline(always)] + fn check_env(&mut self, var: &str) -> Result<(), AnyError> { + self.0.lock().env.check(var) + } + + #[inline(always)] + fn check_net_url( + &mut self, + url: &url::Url, + api_name: &str, + ) -> Result<(), AnyError> { + self.0.lock().net.check_url(url, Some(api_name)) + } +} + fn unit_permission_from_flag_bools( allow_flag: bool, deny_flag: bool, diff --git a/runtime/web_worker.rs b/runtime/web_worker.rs index 0c4e95140..8a88dfa40 100644 --- a/runtime/web_worker.rs +++ b/runtime/web_worker.rs @@ -38,7 +38,7 @@ use deno_core::SourceMapGetter; use deno_fs::FileSystem; use deno_http::DefaultHttpPropertyExtractor; use deno_io::Stdio; -use deno_kv::sqlite::SqliteDbHandler; +use deno_kv::dynamic::MultiBackendDbHandler; use deno_node::SUPPORTED_BUILTIN_NODE_MODULES_WITH_PREFIX; use deno_tls::RootCertStoreProvider; use deno_web::create_entangled_message_port; @@ -439,7 +439,7 @@ impl WebWorker { ), deno_tls::deno_tls::init_ops_and_esm(), deno_kv::deno_kv::init_ops_and_esm( - SqliteDbHandler::::new(None), + MultiBackendDbHandler::remote_or_sqlite::(None), unstable, ), deno_napi::deno_napi::init_ops_and_esm::(), diff --git a/runtime/worker.rs b/runtime/worker.rs index 5eefd5fa8..a31bd2ae1 100644 --- a/runtime/worker.rs +++ b/runtime/worker.rs @@ -35,7 +35,7 @@ use deno_core::SourceMapGetter; use deno_fs::FileSystem; use deno_http::DefaultHttpPropertyExtractor; use deno_io::Stdio; -use deno_kv::sqlite::SqliteDbHandler; +use deno_kv::dynamic::MultiBackendDbHandler; use deno_node::SUPPORTED_BUILTIN_NODE_MODULES_WITH_PREFIX; use deno_tls::RootCertStoreProvider; use deno_web::BlobStore; @@ -334,7 +334,7 @@ impl MainWorker { ), deno_tls::deno_tls::init_ops_and_esm(), deno_kv::deno_kv::init_ops_and_esm( - SqliteDbHandler::::new( + MultiBackendDbHandler::remote_or_sqlite::( options.origin_storage_dir.clone(), ), unstable, -- cgit v1.2.3