feat(core): new worker workspace engine (#9257)

This commit is contained in:
EYHN
2025-01-17 00:22:18 +08:00
committed by GitHub
parent 7dc470e7ea
commit a2ffdb4047
219 changed files with 4267 additions and 7194 deletions

View File

@@ -20,13 +20,13 @@ export declare class DocStoragePool {
releaseBlobs(universalId: string): Promise<void>
listBlobs(universalId: string): Promise<Array<ListedBlob>>
getPeerRemoteClocks(universalId: string, peer: string): Promise<Array<DocClock>>
getPeerRemoteClock(universalId: string, peer: string, docId: string): Promise<DocClock>
getPeerRemoteClock(universalId: string, peer: string, docId: string): Promise<DocClock | null>
setPeerRemoteClock(universalId: string, peer: string, docId: string, clock: Date): Promise<void>
getPeerPulledRemoteClocks(universalId: string, peer: string): Promise<Array<DocClock>>
getPeerPulledRemoteClock(universalId: string, peer: string, docId: string): Promise<DocClock>
getPeerPulledRemoteClock(universalId: string, peer: string, docId: string): Promise<DocClock | null>
setPeerPulledRemoteClock(universalId: string, peer: string, docId: string, clock: Date): Promise<void>
getPeerPushedClocks(universalId: string, peer: string): Promise<Array<DocClock>>
getPeerPushedClock(universalId: string, peer: string, docId: string): Promise<DocClock>
getPeerPushedClock(universalId: string, peer: string, docId: string): Promise<DocClock | null>
setPeerPushedClock(universalId: string, peer: string, docId: string, clock: Date): Promise<void>
clearClocks(universalId: string): Promise<void>
}

View File

@@ -324,6 +324,7 @@ mod tests {
let clocks = storage
.get_peer_pulled_remote_clock("remote".to_string(), "new_id".to_string())
.await
.unwrap()
.unwrap();
assert_eq!(clocks.doc_id, "new_id");

View File

@@ -300,7 +300,7 @@ impl DocStoragePool {
universal_id: String,
peer: String,
doc_id: String,
) -> Result<DocClock> {
) -> Result<Option<DocClock>> {
Ok(
self
.pool
@@ -347,7 +347,7 @@ impl DocStoragePool {
universal_id: String,
peer: String,
doc_id: String,
) -> Result<DocClock> {
) -> Result<Option<DocClock>> {
Ok(
self
.pool
@@ -394,7 +394,7 @@ impl DocStoragePool {
universal_id: String,
peer: String,
doc_id: String,
) -> Result<DocClock> {
) -> Result<Option<DocClock>> {
Ok(
self
.pool

View File

@@ -1,7 +1,6 @@
use chrono::NaiveDateTime;
use super::DocClock;
use super::{error::Result, storage::SqliteDocStorage};
use super::{error::Result, storage::SqliteDocStorage, DocClock};
impl SqliteDocStorage {
pub async fn get_peer_remote_clocks(&self, peer: String) -> Result<Vec<DocClock>> {
@@ -16,14 +15,18 @@ impl SqliteDocStorage {
Ok(result)
}
pub async fn get_peer_remote_clock(&self, peer: String, doc_id: String) -> Result<DocClock> {
pub async fn get_peer_remote_clock(
&self,
peer: String,
doc_id: String,
) -> Result<Option<DocClock>> {
let result = sqlx::query_as!(
DocClock,
"SELECT doc_id, remote_clock as timestamp FROM peer_clocks WHERE peer = ? AND doc_id = ?",
peer,
doc_id
)
.fetch_one(&self.pool)
.fetch_optional(&self.pool)
.await?;
Ok(result)
@@ -67,14 +70,14 @@ impl SqliteDocStorage {
&self,
peer: String,
doc_id: String,
) -> Result<DocClock> {
) -> Result<Option<DocClock>> {
let result = sqlx::query_as!(
DocClock,
"SELECT doc_id, pulled_remote_clock as timestamp FROM peer_clocks WHERE peer = ? AND doc_id = ?",
r#"SELECT doc_id, pulled_remote_clock as timestamp FROM peer_clocks WHERE peer = ? AND doc_id = ?"#,
peer,
doc_id
)
.fetch_one(&self.pool)
.fetch_optional(&self.pool)
.await?;
Ok(result)
@@ -114,14 +117,18 @@ impl SqliteDocStorage {
Ok(result)
}
pub async fn get_peer_pushed_clock(&self, peer: String, doc_id: String) -> Result<DocClock> {
pub async fn get_peer_pushed_clock(
&self,
peer: String,
doc_id: String,
) -> Result<Option<DocClock>> {
let result = sqlx::query_as!(
DocClock,
"SELECT doc_id, pushed_clock as timestamp FROM peer_clocks WHERE peer = ? AND doc_id = ?",
peer,
doc_id
)
.fetch_one(&self.pool)
.fetch_optional(&self.pool)
.await?;
Ok(result)