Update service for new API

This commit is contained in:
Andras Schmelczer 2024-12-15 11:52:17 +00:00
parent 08fe8d8663
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 { Database } from "src/database/database";
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 {
private static VAULT_ID = "default";
@ -43,24 +47,63 @@ export class SyncServer {
return response.data;
}
public async put({
public async create({
relativePath,
parentVersionId,
contentBytes,
createdDate,
}: {
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;
createdDate: Date;
}): Promise<components["schemas"]["DocumentVersion"]> {
let response = await this.client.PUT(
"/vaults/{vault_id}/documents/{relative_path}",
"/vaults/{vault_id}/documents/{document_id}",
{
params: {
path: {
vault_id: SyncServer.VAULT_ID,
relative_path: encodeURIComponent(relativePath),
document_id: documentId,
},
header: {
authorization:
@ -77,7 +120,7 @@ export class SyncServer {
);
if (!response.data) {
throw new Error(`Failed to create document: ${response.error}`);
throw new Error(`Failed to update document: ${response.error}`);
}
Logger.getInstance().info(
@ -88,19 +131,21 @@ export class SyncServer {
}
public async delete({
documentId,
relativePath,
createdDate,
}: {
documentId: DocumentId;
relativePath: RelativePath;
createdDate: Date;
}): Promise<void> {
const response = await this.client.DELETE(
"/vaults/{vault_id}/documents/{relative_path}",
"/vaults/{vault_id}/documents/{document_id}",
{
params: {
path: {
vault_id: SyncServer.VAULT_ID,
relative_path: encodeURIComponent(relativePath),
document_id: documentId,
},
header: {
authorization:
@ -109,14 +154,14 @@ export class SyncServer {
},
body: {
createdDate: createdDate.toISOString(),
relativePath,
},
}
);
// Response will be empty if successful
// if (!response.data) {
// throw new Error(`Failed to delete document: ${response.error}`);
// }
if (response.error) {
throw new Error(`Failed to delete document`);
}
Logger.getInstance().info(
"Updated document " + JSON.stringify(response.data)
@ -126,17 +171,17 @@ export class SyncServer {
}
public async get({
relativePath,
documentId,
}: {
relativePath: RelativePath;
documentId: DocumentId;
}): Promise<components["schemas"]["DocumentVersion"]> {
const response = await this.client.GET(
"/vaults/{vault_id}/documents/{relative_path}",
"/vaults/{vault_id}/documents/{document_id}",
{
params: {
path: {
vault_id: SyncServer.VAULT_ID,
relative_path: encodeURIComponent(relativePath),
document_id: documentId,
},
header: {
authorization: