Serialize Rust types to TS

This commit is contained in:
Andras Schmelczer 2025-06-01 09:51:06 +01:00
parent eb1cc61042
commit 2cdf2ba74e
No known key found for this signature in database
GPG key ID: FC8F2C3D3D1A718C
3 changed files with 16 additions and 1 deletions

View file

@ -30,13 +30,17 @@ impl PartialEq<Self> for StoredDocumentVersion {
#[derive(TS, Debug, Clone, Serialize, JsonSchema)]
#[serde(rename_all = "camelCase")]
pub struct DocumentVersionWithoutContent {
#[ts(as = "i32")]
pub vault_update_id: VaultUpdateId,
pub document_id: DocumentId,
pub relative_path: String,
pub updated_date: DateTime<Utc>,
pub is_deleted: bool,
pub user_id: UserId,
pub device_id: DeviceId,
#[ts(as = "i32")]
pub content_size: u64,
}

View file

@ -10,6 +10,8 @@ use crate::app_state::database::models::{DeviceId, DocumentVersionWithoutContent
pub struct WebSocketHandshake {
pub token: String,
pub device_id: DeviceId,
#[ts(as = "Option<i32>")]
pub last_seen_vault_update_id: Option<VaultUpdateId>,
}
@ -40,6 +42,7 @@ pub struct WebSocketVaultUpdate {
}
#[derive(TS, Deserialize, Clone, Debug)]
#[serde(rename_all = "camelCase", tag = "type")]
#[ts(export)]
pub enum WebSocketClientMessage {
Handshake(WebSocketHandshake),
@ -47,6 +50,7 @@ pub enum WebSocketClientMessage {
}
#[derive(TS, Serialize, Clone, Debug)]
#[serde(rename_all = "camelCase", tag = "type")]
#[ts(export)]
pub enum WebSocketServerMessage {
VaultUpdate(WebSocketVaultUpdate),

View file

@ -4,5 +4,12 @@ set -e
./scripts/utils/wait-for-server.sh
rm -rf backend/sync_server/bindings
cd backend
cargo test export_bindings
cd -
cp -r backend/sync_server/bindings/* frontend/sync-client/src/services/types/
npm install -g openapi-typescript
openapi-typescript http://localhost:3000/api.json --output frontend/sync-client/src/services/types.ts
openapi-typescript http://localhost:3000/api.json --output frontend/sync-client/src/services/types/http-api.ts