Skip to content

Commit f89fcba

Browse files
committed
refactor(depot-client): split embedded depot transport
1 parent 0cdeda4 commit f89fcba

12 files changed

Lines changed: 74 additions & 41 deletions

File tree

Cargo.lock

Lines changed: 13 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ members = [
1414
"engine/packages/config",
1515
"engine/packages/config-schema-gen",
1616
"engine/packages/datacenter",
17+
"engine/packages/depot-client",
18+
"engine/packages/depot-client-embedded",
19+
"engine/packages/depot-client-types",
1720
"engine/packages/engine",
1821
"engine/packages/env",
1922
"engine/packages/epoxy",
@@ -63,8 +66,6 @@ members = [
6366
"rivetkit-rust/packages/actor-persist",
6467
"rivetkit-rust/packages/rivetkit-core",
6568
"rivetkit-rust/packages/shared-types",
66-
"engine/packages/depot-client",
67-
"engine/packages/depot-client-types",
6869
"rivetkit-typescript/packages/rivetkit-napi",
6970
"rivetkit-typescript/packages/rivetkit-wasm"
7071
]
@@ -561,6 +562,9 @@ members = [
561562
[workspace.dependencies.depot-client]
562563
path = "engine/packages/depot-client"
563564

565+
[workspace.dependencies.depot-client-embedded]
566+
path = "engine/packages/depot-client-embedded"
567+
564568
[workspace.dependencies.depot-client-types]
565569
path = "engine/packages/depot-client-types"
566570

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
[package]
2+
name = "depot-client-embedded"
3+
version.workspace = true
4+
edition.workspace = true
5+
authors.workspace = true
6+
license.workspace = true
7+
workspace = "../../../"
8+
description = "Embedded Depot transport for depot-client SQLite VFS"
9+
10+
[lib]
11+
crate-type = ["lib"]
12+
13+
[dependencies]
14+
anyhow.workspace = true
15+
async-trait.workspace = true
16+
depot.workspace = true
17+
depot-client.workspace = true
18+
rivet-envoy-protocol.workspace = true
19+
tokio.workspace = true

engine/packages/depot-client/src/transport.rs renamed to engine/packages/depot-client-embedded/src/lib.rs

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
1-
//! SQLite transport adapters.
1+
//! Embedded Depot transport for depot-client.
22
//!
3-
//! `EmbeddedDepotSqliteTransport` is for deployments where the SQLite VFS runs in the
4-
//! same process or server as the Depot backend. It calls `depot::conveyer::Db`
5-
//! directly instead of routing page operations through an actor Envoy transport.
3+
//! This crate is for deployments where the SQLite VFS runs in the same process
4+
//! as the Depot backend. It keeps engine storage dependencies out of the base
5+
//! `depot-client` crate used by NAPI.
66
77
use std::sync::Arc;
88

99
use anyhow::Result;
1010
use async_trait::async_trait;
11+
use depot_client::{
12+
database::{NativeDatabaseHandle, open_database_from_transport},
13+
vfs::{SqliteTransport, SqliteVfsMetrics},
14+
};
1115
use rivet_envoy_protocol as protocol;
12-
13-
use crate::vfs::SqliteTransport;
16+
use tokio::runtime::Handle;
1417

1518
pub struct EmbeddedDepotSqliteTransport {
1619
db: Arc<depot::conveyer::Db>,
@@ -22,6 +25,23 @@ impl EmbeddedDepotSqliteTransport {
2225
}
2326
}
2427

28+
pub async fn open_database_from_embedded_depot(
29+
db: Arc<depot::conveyer::Db>,
30+
actor_id: String,
31+
generation: u64,
32+
rt_handle: Handle,
33+
metrics: Option<Arc<dyn SqliteVfsMetrics>>,
34+
) -> Result<NativeDatabaseHandle> {
35+
open_database_from_transport(
36+
Arc::new(EmbeddedDepotSqliteTransport::new(db)),
37+
actor_id,
38+
generation,
39+
rt_handle,
40+
metrics,
41+
)
42+
.await
43+
}
44+
2545
#[async_trait]
2646
impl SqliteTransport for EmbeddedDepotSqliteTransport {
2747
async fn get_pages(

engine/packages/depot-client/Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ tracing.workspace = true
2020
getrandom = "0.2"
2121
rivet-envoy-protocol.workspace = true
2222
depot-client-types.workspace = true
23-
depot.workspace = true
2423
moka = { version = "0.12", default-features = false, features = ["sync"] }
2524
parking_lot.workspace = true
2625
scc.workspace = true

engine/packages/depot-client/src/database.rs

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ use tokio::runtime::Handle;
55

66
use crate::{
77
query::{BindParam, ExecResult, ExecuteResult, QueryResult},
8-
transport::EmbeddedDepotSqliteTransport,
98
vfs::{
109
NativeVfsHandle, SqliteTransportHandle, SqliteVfs, SqliteVfsMetrics,
1110
SqliteVfsMetricsSnapshot, VfsConfig, VfsPreloadHintSnapshot,
@@ -54,23 +53,6 @@ pub async fn open_database_from_transport(
5453
Ok(native_db)
5554
}
5655

57-
pub async fn open_database_from_embedded_depot(
58-
db: Arc<depot::conveyer::Db>,
59-
actor_id: String,
60-
generation: u64,
61-
rt_handle: Handle,
62-
metrics: Option<Arc<dyn SqliteVfsMetrics>>,
63-
) -> Result<NativeDatabaseHandle> {
64-
open_database_from_transport(
65-
Arc::new(EmbeddedDepotSqliteTransport::new(db)),
66-
actor_id,
67-
generation,
68-
rt_handle,
69-
metrics,
70-
)
71-
.await
72-
}
73-
7456
impl NativeDatabaseHandle {
7557
pub fn new(vfs: NativeVfsHandle, file_name: String) -> Result<Self> {
7658
Self::new_with_metrics(vfs, file_name, None)

engine/packages/depot-client/src/lib.rs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,6 @@ pub mod optimization_flags;
2323
/// SQLite query execution helpers.
2424
pub mod query;
2525

26-
/// SQLite transport adapters for same-process Depot usage.
27-
pub mod transport;
28-
2926
pub use depot_client_types as types;
3027

3128
/// Custom SQLite VFS for actor-side depot transport.

engine/packages/pegboard-envoy/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ rivet-metrics.workspace = true
2727
rivet-pools.workspace = true
2828
rivet-envoy-protocol.workspace = true
2929
depot-client.workspace = true
30+
depot-client-embedded.workspace = true
3031
rivet-runtime.workspace = true
3132
rivet-types.workspace = true
3233
scc.workspace = true

engine/packages/pegboard-envoy/src/ws_to_tunnel_task.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,10 @@ use depot::{
88
},
99
};
1010
use depot_client::{
11-
database::{NativeDatabaseHandle, open_database_from_embedded_depot},
11+
database::NativeDatabaseHandle,
1212
types::{BindParam, ColumnValue, ExecuteResult, QueryResult},
1313
};
14+
use depot_client_embedded::open_database_from_embedded_depot;
1415
use futures_util::{FutureExt, TryStreamExt};
1516
use gas::prelude::Id;
1617
use gas::prelude::*;

rivetkit-rust/packages/rivetkit-core/Cargo.toml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ default = ["native-runtime"]
1212
native-runtime = [
1313
"dep:nix",
1414
"dep:reqwest",
15-
"dep:rivet-pools",
1615
"rivet-envoy-client/native-transport",
1716
]
1817
wasm-runtime = ["rivet-envoy-client/wasm-transport"]
@@ -32,7 +31,6 @@ parking_lot.workspace = true
3231
prometheus.workspace = true
3332
rand.workspace = true
3433
reqwest = { workspace = true, optional = true }
35-
rivet-pools = { workspace = true, optional = true }
3634
rivet-error.workspace = true
3735
rivet-envoy-client = { workspace = true, default-features = false }
3836
rivetkit-shared-types.workspace = true

0 commit comments

Comments
 (0)