Update service for new API

This commit is contained in:
Andras Schmelczer 2024-12-15 11:52:17 +00:00
commit c4cc1ec73e
No known key found for this signature in database
GPG key ID: FC8F2C3D3D1A718C

View file

@ -5,7 +5,11 @@ import type { components, paths } from "./types"; // generated by openapi-typesc
import { Logger } from "src/logger"; import { Logger } from "src/logger";
import { Database } from "src/database/database"; import { Database } from "src/database/database";
import { SyncSettings } from "src/database/sync-settings"; import { SyncSettings } from "src/database/sync-settings";
import { VaultUpdateId, RelativePath } from "src/database/document-metadata.js"; import {
VaultUpdateId,
RelativePath,
DocumentId,
} from "src/database/document-metadata.js";
export class SyncServer { export class SyncServer {
private static VAULT_ID = "default"; private static VAULT_ID = "default";
@ -43,24 +47,63 @@ export class SyncServer {
return response.data; return response.data;
} }
public async put({ public async create({
relativePath, relativePath,
parentVersionId,
contentBytes, contentBytes,
createdDate, createdDate,
}: { }: {
relativePath: RelativePath; relativePath: RelativePath;
parentVersionId: VaultUpdateId | undefined; contentBytes: Uint8Array;
createdDate: Date;
}): Promise<components["schemas"]["DocumentVersion"]> {
let response = await this.client.POST("/vaults/{vault_id}/documents", {
params: {
path: {
vault_id: SyncServer.VAULT_ID,
},
header: {
authorization:
"Bearer " + this.database.getSettings().token,
},
},
body: {
contentBase64: lib.bytes_to_base64(contentBytes),
createdDate: createdDate.toISOString(),
relativePath,
},
});
if (!response.data) {
throw new Error(`Failed to create document: ${response.error}`);
}
Logger.getInstance().info(
"Created document " + JSON.stringify(response.data)
);
return response.data;
}
public async put({
parentVersionId,
documentId,
relativePath,
contentBytes,
createdDate,
}: {
parentVersionId: VaultUpdateId;
documentId: DocumentId;
relativePath: RelativePath;
contentBytes: Uint8Array; contentBytes: Uint8Array;
createdDate: Date; createdDate: Date;
}): Promise<components["schemas"]["DocumentVersion"]> { }): Promise<components["schemas"]["DocumentVersion"]> {
let response = await this.client.PUT( let response = await this.client.PUT(
"/vaults/{vault_id}/documents/{relative_path}", "/vaults/{vault_id}/documents/{document_id}",
{ {
params: { params: {
path: { path: {
vault_id: SyncServer.VAULT_ID, vault_id: SyncServer.VAULT_ID,
relative_path: encodeURIComponent(relativePath), document_id: documentId,
}, },
header: { header: {
authorization: authorization:
@ -77,7 +120,7 @@ export class SyncServer {
); );
if (!response.data) { if (!response.data) {
throw new Error(`Failed to create document: ${response.error}`); throw new Error(`Failed to update document: ${response.error}`);
} }
Logger.getInstance().info( Logger.getInstance().info(
@ -88,19 +131,21 @@ export class SyncServer {
} }
public async delete({ public async delete({
documentId,
relativePath, relativePath,
createdDate, createdDate,
}: { }: {
documentId: DocumentId;
relativePath: RelativePath; relativePath: RelativePath;
createdDate: Date; createdDate: Date;
}): Promise<void> { }): Promise<void> {
const response = await this.client.DELETE( const response = await this.client.DELETE(
"/vaults/{vault_id}/documents/{relative_path}", "/vaults/{vault_id}/documents/{document_id}",
{ {
params: { params: {
path: { path: {
vault_id: SyncServer.VAULT_ID, vault_id: SyncServer.VAULT_ID,
relative_path: encodeURIComponent(relativePath), document_id: documentId,
}, },
header: { header: {
authorization: authorization:
@ -109,14 +154,14 @@ export class SyncServer {
}, },
body: { body: {
createdDate: createdDate.toISOString(), createdDate: createdDate.toISOString(),
relativePath,
}, },
} }
); );
// Response will be empty if successful if (response.error) {
// if (!response.data) { throw new Error(`Failed to delete document`);
// throw new Error(`Failed to delete document: ${response.error}`); }
// }
Logger.getInstance().info( Logger.getInstance().info(
"Updated document " + JSON.stringify(response.data) "Updated document " + JSON.stringify(response.data)
@ -126,17 +171,17 @@ export class SyncServer {
} }
public async get({ public async get({
relativePath, documentId,
}: { }: {
relativePath: RelativePath; documentId: DocumentId;
}): Promise<components["schemas"]["DocumentVersion"]> { }): Promise<components["schemas"]["DocumentVersion"]> {
const response = await this.client.GET( const response = await this.client.GET(
"/vaults/{vault_id}/documents/{relative_path}", "/vaults/{vault_id}/documents/{document_id}",
{ {
params: { params: {
path: { path: {
vault_id: SyncServer.VAULT_ID, vault_id: SyncServer.VAULT_ID,
relative_path: encodeURIComponent(relativePath), document_id: documentId,
}, },
header: { header: {
authorization: authorization: