@punks/backend-entity-manager 0.0.217 → 0.0.218

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -51,6 +51,7 @@ export type IMediaFolderRepository = {
51
51
  folderMove(id: string, parentId?: string): Promise<void>;
52
52
  folderDelete(id: string): Promise<void>;
53
53
  foldersList(parentId?: string): Promise<MediaFolderRecord[]>;
54
+ folderFind(name: string, parentId?: string): Promise<MediaFolderRecord>;
54
55
  };
55
56
  export type MediaFolderCreateInput = {
56
57
  folderName: string;
@@ -72,10 +73,14 @@ export type MediaInfo = {
72
73
  ref: string;
73
74
  fileName: string;
74
75
  };
76
+ export type MediaFolderEnsureInput = {
77
+ path: string[];
78
+ };
75
79
  export type IMediaLibraryManager = {
76
80
  mediaUpload(input: MediaUploadInput): Promise<MediaReference>;
77
81
  mediaDelete(input: MediaReference): Promise<void>;
78
82
  mediaDownload(input: MediaReference): Promise<Buffer>;
83
+ folderEnsure(input: MediaFolderEnsureInput): Promise<MediaFolderReference>;
79
84
  folderCreate(input: MediaFolderCreateInput): Promise<MediaFolderReference>;
80
85
  folderDelete(input: MediaFolderReference): Promise<void>;
81
86
  folderMove(input: MediaFolderMoveInput): Promise<void>;
@@ -1,5 +1,5 @@
1
1
  /// <reference types="node" />
2
- import { IMediaLibraryManager, MediaFolderCreateInput, MediaFolderMoveInput, MediaFolderReference, MediaFolderRenameInput, MediaInfo, MediaReference, MediaUploadInput } from "../../../../abstractions";
2
+ import { IMediaLibraryManager, MediaFolderCreateInput, MediaFolderEnsureInput, MediaFolderMoveInput, MediaFolderReference, MediaFolderRenameInput, MediaInfo, MediaReference, MediaUploadInput } from "../../../../abstractions";
3
3
  import { EntityManagerRegistry } from "../../ioc";
4
4
  export declare class MediaLibraryService implements IMediaLibraryManager {
5
5
  private readonly registry;
@@ -7,6 +7,7 @@ export declare class MediaLibraryService implements IMediaLibraryManager {
7
7
  mediaUpload(input: MediaUploadInput): Promise<MediaReference>;
8
8
  mediaDelete(input: MediaReference): Promise<void>;
9
9
  mediaDownload(input: MediaReference): Promise<Buffer>;
10
+ folderEnsure(input: MediaFolderEnsureInput): Promise<MediaFolderReference>;
10
11
  folderCreate(input: MediaFolderCreateInput): Promise<MediaFolderReference>;
11
12
  folderMove(input: MediaFolderMoveInput): Promise<void>;
12
13
  folderRename(input: MediaFolderRenameInput): Promise<void>;
package/dist/esm/index.js CHANGED
@@ -21288,6 +21288,24 @@ let MediaLibraryService = class MediaLibraryService {
21288
21288
  async mediaDownload(input) {
21289
21289
  return await this.getMediaProvider(this.parseReferenceProviderId(input)).mediaDownload(input);
21290
21290
  }
21291
+ async folderEnsure(input) {
21292
+ let parentFolder;
21293
+ let folder;
21294
+ for (const folderName of input.path) {
21295
+ folder = await this.mediaFolderRepository.folderFind(folderName, parentFolder?.id);
21296
+ if (!folder) {
21297
+ folder = await this.mediaFolderRepository.folderCreate({
21298
+ name: folderName,
21299
+ parentId: parentFolder?.id,
21300
+ });
21301
+ }
21302
+ parentFolder = folder;
21303
+ }
21304
+ if (!folder) {
21305
+ throw new Error("Cannot create folder");
21306
+ }
21307
+ return folder;
21308
+ }
21291
21309
  async folderCreate(input) {
21292
21310
  return await this.mediaFolderRepository.folderCreate({
21293
21311
  name: input.folderName,