From 7c514fdef32dda8097c94528044b62b1d7ecd6ef Mon Sep 17 00:00:00 2001 From: jaxoncreed Date: Thu, 14 Sep 2023 17:30:56 -0400 Subject: [PATCH] I --- packages/solid/src/resource/Resource.ts | 27 ++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/packages/solid/src/resource/Resource.ts b/packages/solid/src/resource/Resource.ts index 449de57..f7f8f4a 100644 --- a/packages/solid/src/resource/Resource.ts +++ b/packages/solid/src/resource/Resource.ts @@ -15,8 +15,12 @@ import type { CreateResultErrors, CreateResultWithoutOverwriteErrors, } from "../requester/requests/createDataResource"; +import type { DeleteResultError } from "../requester/requests/deleteResource"; import type { ReadResultError } from "../requester/requests/readResource"; -import type { UploadResultError } from "../requester/requests/uploadResource"; +import type { + UploadResultError, + UploadResultWithoutOverwriteError, +} from "../requester/requests/uploadResource"; import type { LeafUri } from "../uriTypes"; export interface ConcreteInstance { @@ -151,13 +155,26 @@ export class Resource { | Resource | UploadResultError; } - abstract createIfAbsent(blob: Blob): Promise; + + async uploadIfAbsent( + blob: Blob, + mimeType: string, + ): Promise { + return this.parseResult( + await this.requester.upload(blob, mimeType, true), + ) as Resource | UploadResultWithoutOverwriteError; + } + // Delete Method - abstract delete(): Promise; + async delete(): Promise { + return this.parseResult(await this.requester.delete()) as + | Resource + | DeleteResultError; + } + // Parent Container Methods -- Remember to change for Container abstract getCachedParentContainer(): ContainerType | LdoSolidError; - abstract getParentContainer(): Promise; - abstract reloadParentContainer(): Promise; + abstract getParentContainer(): Resource; abstract getRootContainerFromCache(): | ContainerType | undefined