@paroicms/server-database-media-storage 1.16.2 → 1.18.0

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.
@@ -8,7 +8,7 @@ create table PaMetadata (
8
8
  primary key (dbSchema, k)
9
9
  );
10
10
 
11
- insert into PaMetadata (dbSchema, k, val) values ('medias', 'dbSchemaVersion', '7');
11
+ insert into PaMetadata (dbSchema, k, val) values ('medias', 'dbSchemaVersion', '8');
12
12
 
13
13
  create table PaMedia (
14
14
  uid char(36) not null primary key,
@@ -18,9 +18,12 @@ create table PaMedia (
18
18
  modifiedTs timestamp not null default current_timestamp,
19
19
  binaryFile blob not null,
20
20
  attachedData text,
21
- originalName varchar(200)
21
+ originalName varchar(200),
22
+ originalHash varchar(200)
22
23
  );
23
24
 
25
+ create index PaMedia_originalHash_idx on PaMedia (originalHash);
26
+
24
27
  create table PaImage (
25
28
  uid char(36) not null primary key references PaMedia (uid) on delete cascade,
26
29
  width integer not null,
@@ -1,7 +1,7 @@
1
1
  import type { AppLogger } from "@paroicms/public-server-lib";
2
2
  import type { Knex } from "knex";
3
3
  export declare const dbSchemaName = "medias";
4
- export declare const currentDbSchemaVersion = 7;
4
+ export declare const currentDbSchemaVersion = 8;
5
5
  export declare function migrateMediasDb(cn: Knex, { fromVersion, logger }: {
6
6
  fromVersion: number;
7
7
  logger: AppLogger;
@@ -1,7 +1,7 @@
1
1
  import { dateVal, strVal, strValOrUndef } from "@paroi/data-formatters-lib";
2
2
  import { generateResourceVersion, setMetadataDbSchemaVersion } from "@paroicms/internal-server-lib";
3
3
  export const dbSchemaName = "medias";
4
- export const currentDbSchemaVersion = 7;
4
+ export const currentDbSchemaVersion = 8;
5
5
  export async function migrateMediasDb(cn, { fromVersion, logger }) {
6
6
  const toVersion = currentDbSchemaVersion;
7
7
  let currentVersion = fromVersion;
@@ -46,6 +46,12 @@ export async function migrateMediasDb(cn, { fromVersion, logger }) {
46
46
  await setMetadataDbSchemaVersion(cn, { dbSchemaName, value: 7 });
47
47
  currentVersion = 7;
48
48
  }
49
+ if (currentVersion === 7) {
50
+ await cn.raw("alter table PaMedia add originalHash varchar(200)");
51
+ await cn.raw("create index PaMedia_originalHash_idx on PaMedia (originalHash)");
52
+ await setMetadataDbSchemaVersion(cn, { dbSchemaName, value: 8 });
53
+ currentVersion = 8;
54
+ }
49
55
  if (currentVersion !== toVersion) {
50
56
  throw new Error(`version of ${dbSchemaName} database should be '${toVersion}', but is '${currentVersion}'`);
51
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ddl-migration.js","sourceRoot":"","sources":["../../src/db-init/ddl-migration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ddl-migration.js","sourceRoot":"","sources":["../../src/db-init/ddl-migration.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { Image, ImageWithBinary, Media, MediaWithBinary } from "../data-types.js";
1
+ import type { Image, ImageWithBinary, Media, MediaWithBinary } from "../public-types.js";
2
2
  export declare function formatMedia(row: any): Media;
3
3
  export declare function formatImage(row: any): Image;
4
4
  export declare function formatMediaWithBinary(row: any): MediaWithBinary;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Calculate SHA-256 hash for a binary buffer
3
+ * @param buffer The file content
4
+ * @returns Hexadecimal string representation of the hash
5
+ */
6
+ export declare function calculateMediaHash(buffer: Buffer): string;
@@ -0,0 +1,10 @@
1
+ import { createHash } from "node:crypto";
2
+ /**
3
+ * Calculate SHA-256 hash for a binary buffer
4
+ * @param buffer The file content
5
+ * @returns Hexadecimal string representation of the hash
6
+ */
7
+ export function calculateMediaHash(buffer) {
8
+ return createHash("sha256").update(buffer).digest("hex");
9
+ }
10
+ //# sourceMappingURL=media-hash.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-hash.helper.js","sourceRoot":"","sources":["../../src/helpers/media-hash.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3D,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- export * from "./data-types.js";
2
1
  export * from "./db-init/db-init.js";
3
- export * from "./media-storage-types.js";
4
2
  export * from "./media-storage.js";
3
+ export * from "./public-types.js";
package/dist/index.js CHANGED
@@ -1,5 +1,4 @@
1
- export * from "./data-types.js";
2
1
  export * from "./db-init/db-init.js";
3
- export * from "./media-storage-types.js";
4
2
  export * from "./media-storage.js";
3
+ export * from "./public-types.js";
5
4
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { NewMediaWithHandle } from "./public-types.js";
2
+ /**
3
+ * Internal version of NewMediaWithHandle with required hash
4
+ */
5
+ export interface InternalNewMediaWithHandle extends NewMediaWithHandle {
6
+ originalHash: string;
7
+ existingMediaUid?: string;
8
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=internal-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal-types.js","sourceRoot":"","sources":["../src/internal-types.ts"],"names":[],"mappings":""}
@@ -1,6 +1,5 @@
1
1
  import type { AppLogger } from "@paroicms/public-server-lib";
2
- import type { Image, ImageWithBinary, Media, MediaWithBinary } from "./data-types.js";
3
- import type { NewMediaWithHandle, ReorderMediasInput } from "./media-storage-types.js";
2
+ import type { Image, ImageConverterFn, ImageWithBinary, Media, MediaWithBinary, NewMediaWithHandle, ReorderMediasInput } from "./public-types.js";
4
3
  export interface MediaStorageOptions {
5
4
  canCreate: boolean;
6
5
  storage: MediaStorageConf;
@@ -15,7 +14,9 @@ export declare class MediaStorage {
15
14
  #private;
16
15
  constructor(options: MediaStorageOptions);
17
16
  initialise(): Promise<void>;
18
- addMedia(payload: NewMediaWithHandle): Promise<Media | Image>;
17
+ addMedia(original: NewMediaWithHandle, { imageConverter, }?: {
18
+ imageConverter?: ImageConverterFn;
19
+ }): Promise<Media | Image>;
19
20
  getFirstImage(options: {
20
21
  handle: string;
21
22
  }): Promise<Image | undefined>;
@@ -1,5 +1,6 @@
1
+ import { calculateMediaHash } from "./helpers/media-hash.helper.js";
1
2
  import { MediaStorageContext } from "./media-storage-context.js";
2
- import { countMediasByNodeId, createMedia, deleteHandle, deleteHandles, deleteMediaWithHandle, getAttachedDocumentsWeight, getFirstImageForHandle, getMedia, getMediaByHandle, getMediaWithBinary, getMediasByHandle, getMediasByHandles, reorderMedias, updateAttachedData, } from "./media.queries.js";
3
+ import { countMediasByNodeId, createMedia, deleteHandle, deleteHandles, deleteMediaWithHandle, findMediaByOriginalHash, getAttachedDocumentsWeight, getFirstImageForHandle, getMedia, getMediaByHandle, getMediaWithBinary, getMediasByHandle, getMediasByHandles, reorderMedias, updateAttachedData, } from "./media.queries.js";
3
4
  export async function createMediaStorage(options) {
4
5
  const mediaStorage = new MediaStorage(options);
5
6
  await mediaStorage.initialise();
@@ -14,9 +15,46 @@ export class MediaStorage {
14
15
  this.#checkStatus();
15
16
  await this.#context.init();
16
17
  }
17
- async addMedia(payload) {
18
+ async addMedia(original, { imageConverter, } = {}) {
18
19
  this.#checkStatus();
19
- const uid = await this.#context.asyncQueue(() => createMedia(this.#context, payload));
20
+ const originalHash = calculateMediaHash(original.binaryFile);
21
+ this.#context.logger.debug(`Calculated hash for ${original.originalName || "unnamed media"}: ${originalHash}`);
22
+ const existingMedia = await findMediaByOriginalHash(this.#context.cn(), originalHash);
23
+ let input = {
24
+ ...original,
25
+ originalHash,
26
+ existingMediaUid: existingMedia?.uid,
27
+ };
28
+ if (original.mediaType.startsWith("image/")) {
29
+ if (existingMedia) {
30
+ if (!isImage(existingMedia))
31
+ throw new Error("existing media should be an image");
32
+ input = {
33
+ ...input,
34
+ image: {
35
+ width: existingMedia.width,
36
+ height: existingMedia.height,
37
+ lossless: existingMedia.lossless,
38
+ },
39
+ };
40
+ }
41
+ else if (imageConverter) {
42
+ const { binaryFile, width, height, mediaType, lossless, weightB } = await imageConverter({
43
+ binaryFile: original.binaryFile,
44
+ mediaType: original.mediaType,
45
+ });
46
+ input = {
47
+ ...input,
48
+ binaryFile,
49
+ mediaType,
50
+ weightB,
51
+ image: { width, height, lossless },
52
+ };
53
+ }
54
+ if (!input.image)
55
+ throw new Error("Image data is required for image media");
56
+ }
57
+ const uid = await this.#context.asyncQueue(() => createMedia(this.#context, input));
20
58
  const media = await getMedia(this.#context.cn(), uid);
21
59
  if (!media)
22
60
  throw new Error(`should have a media '${uid}'`);
@@ -88,4 +126,7 @@ export class MediaStorage {
88
126
  }
89
127
  }
90
128
  }
129
+ function isImage(media) {
130
+ return "width" in media && "height" in media;
131
+ }
91
132
  //# sourceMappingURL=media-storage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"media-storage.js","sourceRoot":"","sources":["../src/media-storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"media-storage.js","sourceRoot":"","sources":["../src/media-storage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EACL,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,uBAAuB,EACvB,0BAA0B,EAC1B,sBAAsB,EACtB,QAAQ,EACR,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAsB5B,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAA4B;IACnE,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,YAAY,CAAC,UAAU,EAAE,CAAC;IAChC,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,OAAO,YAAY;IACvB,QAAQ,CAAsB;IAE9B,YAAY,OAA4B;QACtC,IAAI,CAAC,QAAQ,GAAG,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,QAA4B,EAC5B,EACE,cAAc,MAGZ,EAAE;QAEN,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpB,MAAM,YAAY,GAAG,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC7D,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CACxB,uBAAuB,QAAQ,CAAC,YAAY,IAAI,eAAe,KAAK,YAAY,EAAE,CACnF,CAAC;QAEF,MAAM,aAAa,GAAG,MAAM,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC;QACtF,IAAI,KAAK,GAA+B;YACtC,GAAG,QAAQ;YACX,YAAY;YACZ,gBAAgB,EAAE,aAAa,EAAE,GAAG;SACrC,CAAC;QAEF,IAAI,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5C,IAAI,aAAa,EAAE,CAAC;gBAClB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;gBAClF,KAAK,GAAG;oBACN,GAAG,KAAK;oBACR,KAAK,EAAE;wBACL,KAAK,EAAE,aAAa,CAAC,KAAK;wBAC1B,MAAM,EAAE,aAAa,CAAC,MAAM;wBAC5B,QAAQ,EAAE,aAAa,CAAC,QAAQ;qBACjC;iBACF,CAAC;YACJ,CAAC;iBAAM,IAAI,cAAc,EAAE,CAAC;gBAC1B,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,cAAc,CAAC;oBACvF,UAAU,EAAE,QAAQ,CAAC,UAAU;oBAC/B,SAAS,EAAE,QAAQ,CAAC,SAAS;iBAC9B,CAAC,CAAC;gBAEH,KAAK,GAAG;oBACN,GAAG,KAAK;oBACR,UAAU;oBACV,SAAS;oBACT,OAAO;oBACP,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;iBACnC,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC9E,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;QAEpF,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,GAAG,CAAC,CAAC;QAC5D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAA2B;QAC7C,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,OAAO,MAAM,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1E,CAAC;IAID,KAAK,CAAC,SAAS,CACb,OAAmD;QAEnD,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;YACxB,OAAO,MAAM,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACrE,CAAC;QACD,OAAO,MAAM,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,OAA6C;QAE7C,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;YACxB,OAAO,MAAM,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,GAAW;QAClC,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,OAAO,MAAM,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;IAC3D,CAAC;IAaD,KAAK,CAAC,WAAW,CACf,OAA6D;QAE7D,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,KAAK,IAAI,OAAO,EAAE,CAAC;YACrB,OAAO,MAAM,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,MAAM,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAmD;QACpE,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;YACxB,OAAO,MAAM,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAChE,CAAC;QACD,OAAO,MAAM,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,OAA6C;QACpE,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,MAAM,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QACtD,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAA2B;QAC7C,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,MAAM,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC5C,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,YAAY,EAA6C;QACnF,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,OAAO,MAAM,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,KAAK,CAAC,0BAA0B;QAC9B,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,OAAO,MAAM,0BAA0B,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,WAAW;YAAE,OAAO;QACjD,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,WAAW,CAAC;QACnC,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC;IACrC,CAAC;IAED,YAAY;QACV,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;CACF;AAED,SAAS,OAAO,CAAC,KAAoB;IACnC,OAAO,OAAO,IAAI,KAAK,IAAI,QAAQ,IAAI,KAAK,CAAC;AAC/C,CAAC"}
@@ -1,8 +1,8 @@
1
1
  import type { Knex } from "knex";
2
- import type { Image, ImageWithBinary, Media, MediaWithBinary } from "./data-types.js";
2
+ import type { InternalNewMediaWithHandle } from "./internal-types.js";
3
3
  import type { MediaStorageContext } from "./media-storage-context.js";
4
- import type { NewMediaWithHandle, ReorderMediasInput } from "./media-storage-types.js";
5
- export declare function createMedia(ctx: MediaStorageContext, payload: NewMediaWithHandle): Promise<string>;
4
+ import type { Image, ImageWithBinary, Media, MediaWithBinary, ReorderMediasInput } from "./public-types.js";
5
+ export declare function createMedia(ctx: MediaStorageContext, payload: InternalNewMediaWithHandle): Promise<string>;
6
6
  export declare function getFirstImageForHandle(cn: Knex, handle: string): Promise<Image | undefined>;
7
7
  export declare function getMediasByHandle(cn: Knex, handle: string): Promise<(Image | Media)[]>;
8
8
  export declare function getMediasByHandles(cn: Knex, handles: string[]): Promise<Map<string, Image | Media>>;
@@ -12,6 +12,7 @@ export declare function countMediasByNodeId(cn: Knex, nodeId: string, options?:
12
12
  }): Promise<number>;
13
13
  export declare function getAttachedDocumentsWeight(cn: Knex): Promise<number>;
14
14
  export declare function getMediaByHandle(cn: Knex, handle: string): Promise<Media | Image | undefined>;
15
+ export declare function findMediaByOriginalHash(cn: Knex, originalHash: string): Promise<Media | Image | undefined>;
15
16
  export declare function getMediaWithBinary(cn: Knex, uid: string): Promise<MediaWithBinary | ImageWithBinary | undefined>;
16
17
  /**
17
18
  * @returns the deleted media uid
@@ -3,6 +3,44 @@ import { generateResourceVersion } from "@paroicms/internal-server-lib";
3
3
  import { randomUUID } from "node:crypto";
4
4
  import { formatImage, formatImageWithBinary, formatMedia, formatMediaWithBinary, } from "./helpers/data-formatters.helpers.js";
5
5
  export async function createMedia(ctx, payload) {
6
+ // If we already have the existingMediaUid from the earlier check, use it directly
7
+ if (payload.existingMediaUid) {
8
+ return await reuseExistingMedia(ctx, payload.existingMediaUid, payload);
9
+ }
10
+ // Create new media if no match was found
11
+ return await createNewMedia(ctx, payload);
12
+ }
13
+ /**
14
+ * Reuse existing media by adding a new handle to it if needed
15
+ */
16
+ async function reuseExistingMedia(ctx, existingMediaUid, payload) {
17
+ ctx.logger.debug(`Reusing existing media ${existingMediaUid} with hash ${payload.originalHash}`);
18
+ // Check if handle already exists for this media
19
+ const handleExists = await ctx
20
+ .cn()
21
+ .from("PaMediaHandle")
22
+ .where({ mediaUid: existingMediaUid, handle: payload.handle })
23
+ .first();
24
+ if (!handleExists) {
25
+ // Add new handle to existing media
26
+ const maxNum = payload.replace ? await getMaxOrderNum(ctx.cn(), payload.handle) : undefined;
27
+ if (payload.replace)
28
+ await deleteHandle(ctx.cn(), payload.handle);
29
+ await ctx
30
+ .cn()("PaMediaHandle")
31
+ .insert({
32
+ mediaUid: existingMediaUid,
33
+ handle: payload.handle,
34
+ orderNum: maxNum === undefined ? 1 : maxNum + 1,
35
+ nodeId: payload.nodeId,
36
+ });
37
+ }
38
+ return existingMediaUid;
39
+ }
40
+ /**
41
+ * Create a new media record
42
+ */
43
+ async function createNewMedia(ctx, payload) {
6
44
  const uid = randomUUID();
7
45
  const resourceVersion = generateResourceVersion();
8
46
  const maxNum = payload.replace ? await getMaxOrderNum(ctx.cn(), payload.handle) : undefined;
@@ -17,6 +55,7 @@ export async function createMedia(ctx, payload) {
17
55
  attachedData: payload.attachedData,
18
56
  mediaType: payload.mediaType,
19
57
  weightB: payload.weightB,
58
+ originalHash: payload.originalHash,
20
59
  });
21
60
  if (payload.image) {
22
61
  await tx("PaImage").insert({
@@ -34,7 +73,10 @@ export async function createMedia(ctx, payload) {
34
73
  return uid;
35
74
  }
36
75
  async function getMaxOrderNum(cn, handle) {
37
- const row = await cn("PaMediaHandle").where("handle", handle).max("orderNum as maxNum").first();
76
+ const row = (await cn("PaMediaHandle")
77
+ .where("handle", handle)
78
+ .max("orderNum as maxNum")
79
+ .first());
38
80
  return nbValOrUndef(row?.maxNum);
39
81
  }
40
82
  export async function getFirstImageForHandle(cn, handle) {
@@ -90,7 +132,7 @@ export async function countMediasByNodeId(cn, nodeId, options = {}) {
90
132
  if (options.exceptHandle) {
91
133
  query.whereNot("h.handle", options.exceptHandle);
92
134
  }
93
- const row = await query.first();
135
+ const row = (await query.first());
94
136
  return nbVal(row?.cnt);
95
137
  }
96
138
  export async function getAttachedDocumentsWeight(cn) {
@@ -109,8 +151,16 @@ export async function getMediaByHandle(cn, handle) {
109
151
  return;
110
152
  return isDef(row.width) ? formatImage(row) : formatMedia(row);
111
153
  }
154
+ export async function findMediaByOriginalHash(cn, originalHash) {
155
+ const row = await buildMediaQuery(cn).where({ originalHash }).first();
156
+ if (!row)
157
+ return;
158
+ return isDef(row.width) ? formatImage(row) : formatMedia(row);
159
+ }
112
160
  export async function getMediaWithBinary(cn, uid) {
113
- const row = await buildMediaQuery(cn, { includeBinary: true }).where("m.uid", uid).first();
161
+ const row = await buildMediaQuery(cn, { includeBinary: true })
162
+ .where("m.uid", uid)
163
+ .first();
114
164
  if (!row)
115
165
  return;
116
166
  return isDef(row.width) ? formatImageWithBinary(row) : formatMediaWithBinary(row);
@@ -1 +1 @@
1
- {"version":3,"file":"media.queries.js","sourceRoot":"","sources":["../src/media.queries.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"media.queries.js","sourceRoot":"","sources":["../src/media.queries.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ export interface ReorderMediasInput {
2
+ handle: string;
3
+ mediaUids: string[];
4
+ }
5
+ export interface NewMediaPayload {
6
+ mediaType: string;
7
+ weightB: number;
8
+ binaryFile: Buffer;
9
+ attachedData?: string;
10
+ originalName?: string;
11
+ image?: ImageProperties;
12
+ }
13
+ export interface ImageProperties {
14
+ width: number;
15
+ height: number;
16
+ lossless?: boolean;
17
+ }
18
+ export interface NewMediaWithHandle extends NewMediaPayload {
19
+ handle: string;
20
+ replace?: boolean;
21
+ nodeId: string;
22
+ }
23
+ export type ImageConverterFn = (image: {
24
+ binaryFile: Buffer;
25
+ mediaType: string;
26
+ }) => Promise<{
27
+ binaryFile: Buffer;
28
+ width: number;
29
+ height: number;
30
+ weightB: number;
31
+ mediaType: string;
32
+ lossless: boolean | undefined;
33
+ }>;
34
+ export interface MediaBase {
35
+ uid: string;
36
+ resourceVersion: string;
37
+ mediaType: string;
38
+ modifiedTs: Date;
39
+ weightB: number;
40
+ attachedData?: string;
41
+ originalName?: string;
42
+ }
43
+ export interface Media extends MediaBase {
44
+ kind: "media";
45
+ }
46
+ export interface Image extends MediaBase {
47
+ kind: "image";
48
+ height: number;
49
+ width: number;
50
+ lossless?: boolean;
51
+ }
52
+ export interface MediaWithBinary extends Media {
53
+ binaryFile: Buffer;
54
+ }
55
+ export interface ImageWithBinary extends Image {
56
+ binaryFile: Buffer;
57
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=public-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-types.js","sourceRoot":"","sources":["../src/public-types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paroicms/server-database-media-storage",
3
- "version": "1.16.2",
3
+ "version": "1.18.0",
4
4
  "description": "A library to make back-end for media galleries.",
5
5
  "keywords": [
6
6
  "paroicms",
@@ -33,10 +33,10 @@
33
33
  "dependencies": {
34
34
  "@paroi/async-lib": "~0.3.1",
35
35
  "@paroi/data-formatters-lib": "~0.4.0",
36
- "@paroicms/internal-anywhere-lib": "1.26.0",
37
- "@paroicms/internal-server-lib": "1.14.0",
38
- "@paroicms/public-anywhere-lib": "0.20.0",
39
- "@paroicms/public-server-lib": "0.30.0"
36
+ "@paroicms/internal-anywhere-lib": "1.27.0",
37
+ "@paroicms/internal-server-lib": "1.15.0",
38
+ "@paroicms/public-anywhere-lib": "0.21.0",
39
+ "@paroicms/public-server-lib": "0.31.0"
40
40
  },
41
41
  "peerDependencies": {
42
42
  "knex": "~3.1.0"
@@ -1,24 +0,0 @@
1
- export interface MediaBase {
2
- uid: string;
3
- resourceVersion: string;
4
- mediaType: string;
5
- modifiedTs: Date;
6
- weightB: number;
7
- attachedData?: string;
8
- originalName?: string;
9
- }
10
- export interface Media extends MediaBase {
11
- kind: "media";
12
- }
13
- export interface Image extends MediaBase {
14
- kind: "image";
15
- height: number;
16
- width: number;
17
- lossless?: boolean;
18
- }
19
- export interface MediaWithBinary extends Media {
20
- binaryFile: Buffer;
21
- }
22
- export interface ImageWithBinary extends Image {
23
- binaryFile: Buffer;
24
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data-types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"data-types.js","sourceRoot":"","sources":["../src/data-types.ts"],"names":[],"mappings":""}
@@ -1,22 +0,0 @@
1
- export interface ReorderMediasInput {
2
- handle: string;
3
- mediaUids: string[];
4
- }
5
- export interface NewMediaPayload {
6
- mediaType: string;
7
- weightB: number;
8
- binaryFile: Buffer;
9
- attachedData?: string;
10
- originalName?: string;
11
- image?: ImageProperties;
12
- }
13
- export interface ImageProperties {
14
- width: number;
15
- height: number;
16
- lossless?: boolean;
17
- }
18
- export interface NewMediaWithHandle extends NewMediaPayload {
19
- handle: string;
20
- replace?: boolean;
21
- nodeId: string;
22
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=media-storage-types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"media-storage-types.js","sourceRoot":"","sources":["../src/media-storage-types.ts"],"names":[],"mappings":""}