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