diff --git a/backend/sync_server/src/app_state/database/models.rs b/backend/sync_server/src/app_state/database/models.rs index 197d96d7..a83202b9 100644 --- a/backend/sync_server/src/app_state/database/models.rs +++ b/backend/sync_server/src/app_state/database/models.rs @@ -30,13 +30,17 @@ impl PartialEq 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, pub is_deleted: bool, pub user_id: UserId, pub device_id: DeviceId, + + #[ts(as = "i32")] pub content_size: u64, } diff --git a/backend/sync_server/src/app_state/websocket/models.rs b/backend/sync_server/src/app_state/websocket/models.rs index 3205ff25..e6b1bade 100644 --- a/backend/sync_server/src/app_state/websocket/models.rs +++ b/backend/sync_server/src/app_state/websocket/models.rs @@ -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")] pub last_seen_vault_update_id: Option, } @@ -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), diff --git a/scripts/update-api-types.sh b/scripts/update-api-types.sh index d9f39566..6fc7f6cd 100755 --- a/scripts/update-api-types.sh +++ b/scripts/update-api-types.sh @@ -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