@punks/backend-entity-manager 0.0.216 → 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.
@@ -13,6 +13,7 @@ export type IMediaProvider = {
13
13
  mediaDelete(input: MediaReference): Promise<void>;
14
14
  mediaDownload(input: MediaReference): Promise<Buffer>;
15
15
  getFileName(input: MediaReference): string;
16
+ getProviderId(): string;
16
17
  };
17
18
  export type MediaReferenceRecord = {
18
19
  id: string;
@@ -26,6 +27,7 @@ export type MediaReferenceCreateInput = {
26
27
  fileName: string;
27
28
  contentType?: string;
28
29
  folderId?: string;
30
+ providerId: string;
29
31
  };
30
32
  export type IMediaReferenceRepository = {
31
33
  getReference(file: MediaReference): Promise<MediaReferenceRecord>;
@@ -49,6 +51,7 @@ export type IMediaFolderRepository = {
49
51
  folderMove(id: string, parentId?: string): Promise<void>;
50
52
  folderDelete(id: string): Promise<void>;
51
53
  foldersList(parentId?: string): Promise<MediaFolderRecord[]>;
54
+ folderFind(name: string, parentId?: string): Promise<MediaFolderRecord>;
52
55
  };
53
56
  export type MediaFolderCreateInput = {
54
57
  folderName: string;
@@ -70,10 +73,14 @@ export type MediaInfo = {
70
73
  ref: string;
71
74
  fileName: string;
72
75
  };
76
+ export type MediaFolderEnsureInput = {
77
+ path: string[];
78
+ };
73
79
  export type IMediaLibraryManager = {
74
80
  mediaUpload(input: MediaUploadInput): Promise<MediaReference>;
75
81
  mediaDelete(input: MediaReference): Promise<void>;
76
82
  mediaDownload(input: MediaReference): Promise<Buffer>;
83
+ folderEnsure(input: MediaFolderEnsureInput): Promise<MediaFolderReference>;
77
84
  folderCreate(input: MediaFolderCreateInput): Promise<MediaFolderReference>;
78
85
  folderDelete(input: MediaFolderReference): Promise<void>;
79
86
  folderMove(input: MediaFolderMoveInput): Promise<void>;
@@ -3,6 +3,7 @@ import { IMediaProvider, MediaReference, MediaUploadInput } from "../../../../..
3
3
  export declare class AwsS3MediaProvider implements IMediaProvider {
4
4
  private readonly client;
5
5
  constructor();
6
+ getProviderId(): string;
6
7
  getFileName(input: MediaReference): string;
7
8
  mediaUpload(input: MediaUploadInput): Promise<MediaReference>;
8
9
  mediaDelete(input: MediaReference): 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
@@ -21277,6 +21277,7 @@ let MediaLibraryService = class MediaLibraryService {
21277
21277
  fileName: input.fileName,
21278
21278
  contentType: input.contentType,
21279
21279
  folderId: input.folderId,
21280
+ providerId: this.defaultMediaProvider.getProviderId(),
21280
21281
  });
21281
21282
  return reference;
21282
21283
  }
@@ -21287,6 +21288,24 @@ let MediaLibraryService = class MediaLibraryService {
21287
21288
  async mediaDownload(input) {
21288
21289
  return await this.getMediaProvider(this.parseReferenceProviderId(input)).mediaDownload(input);
21289
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
+ }
21290
21309
  async folderCreate(input) {
21291
21310
  return await this.mediaFolderRepository.folderCreate({
21292
21311
  name: input.folderName,
@@ -28957,6 +28976,9 @@ let AwsS3MediaProvider = class AwsS3MediaProvider {
28957
28976
  constructor() {
28958
28977
  this.client = createClient$1(awsMediaSettings.value);
28959
28978
  }
28979
+ getProviderId() {
28980
+ return "awsS3";
28981
+ }
28960
28982
  getFileName(input) {
28961
28983
  const parsedRef = parseRef(input.ref);
28962
28984
  return parsedRef.path.split("/").pop() ?? "";