@paroicms/server-database-media-storage 1.18.4 → 1.19.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.
- package/ddl/medias.ddl.sql +15 -8
- package/dist/db-init/ddl-migration.d.ts +1 -1
- package/dist/db-init/ddl-migration.js +67 -4
- package/dist/db-init/ddl-migration.js.map +1 -1
- package/dist/internal-types.d.ts +1 -1
- package/dist/media-storage-context.d.ts +1 -1
- package/dist/media-storage-context.js.map +1 -1
- package/dist/media-storage.d.ts +33 -36
- package/dist/media-storage.js +154 -123
- package/dist/media-storage.js.map +1 -1
- package/dist/media.queries.d.ts +34 -17
- package/dist/media.queries.js +204 -75
- package/dist/media.queries.js.map +1 -1
- package/dist/public-types.d.ts +24 -16
- package/package.json +5 -5
- package/dist/helpers/data-formatters.helpers.d.ts +0 -5
- package/dist/helpers/data-formatters.helpers.js +0 -41
- package/dist/helpers/data-formatters.helpers.js.map +0 -1
package/ddl/medias.ddl.sql
CHANGED
|
@@ -8,16 +8,15 @@ create table PaMetadata (
|
|
|
8
8
|
primary key (dbSchema, k)
|
|
9
9
|
);
|
|
10
10
|
|
|
11
|
-
insert into PaMetadata (dbSchema, k, val) values ('medias', 'dbSchemaVersion', '
|
|
11
|
+
insert into PaMetadata (dbSchema, k, val) values ('medias', 'dbSchemaVersion', '9');
|
|
12
12
|
|
|
13
13
|
create table PaMedia (
|
|
14
|
-
|
|
14
|
+
id varchar(36) not null primary key,
|
|
15
15
|
resourceVersion varchar(100) not null,
|
|
16
16
|
mediaType varchar(100) not null,
|
|
17
17
|
weightB integer not null,
|
|
18
18
|
modifiedTs timestamp not null default current_timestamp,
|
|
19
19
|
binaryFile blob not null,
|
|
20
|
-
attachedData text,
|
|
21
20
|
originalName varchar(200),
|
|
22
21
|
originalHash varchar(200)
|
|
23
22
|
);
|
|
@@ -25,16 +24,24 @@ create table PaMedia (
|
|
|
25
24
|
create index PaMedia_originalHash_idx on PaMedia (originalHash);
|
|
26
25
|
|
|
27
26
|
create table PaImage (
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
id varchar(36) not null primary key references PaMedia (id) on delete cascade,
|
|
28
|
+
rawWidth integer not null,
|
|
29
|
+
rawHeight integer not null,
|
|
30
|
+
pixelRatio real,
|
|
31
31
|
lossless tinyint(1)
|
|
32
32
|
);
|
|
33
33
|
|
|
34
34
|
create table PaMediaHandle (
|
|
35
|
-
|
|
35
|
+
mediaId varchar(36) not null references PaMedia (id) on delete cascade,
|
|
36
36
|
handle varchar(200) not null,
|
|
37
37
|
orderNum integer,
|
|
38
38
|
nodeId bigint,
|
|
39
|
-
primary key (
|
|
39
|
+
primary key (mediaId, handle)
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
create table PaAttachedData (
|
|
43
|
+
mediaId char(36) not null references PaMedia (id) on delete cascade,
|
|
44
|
+
language varchar(5) not null,
|
|
45
|
+
val text not null,
|
|
46
|
+
primary key (mediaId, language)
|
|
40
47
|
);
|
|
@@ -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 =
|
|
4
|
+
export declare const currentDbSchemaVersion = 9;
|
|
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 =
|
|
4
|
+
export const currentDbSchemaVersion = 9;
|
|
5
5
|
export async function migrateMediasDb(cn, { fromVersion, logger }) {
|
|
6
6
|
const toVersion = currentDbSchemaVersion;
|
|
7
7
|
let currentVersion = fromVersion;
|
|
@@ -52,13 +52,76 @@ export async function migrateMediasDb(cn, { fromVersion, logger }) {
|
|
|
52
52
|
await setMetadataDbSchemaVersion(cn, { dbSchemaName, value: 8 });
|
|
53
53
|
currentVersion = 8;
|
|
54
54
|
}
|
|
55
|
+
if (currentVersion === 8) {
|
|
56
|
+
await migrateFromVersion8To9(cn, logger);
|
|
57
|
+
await setMetadataDbSchemaVersion(cn, { dbSchemaName, value: 9 });
|
|
58
|
+
currentVersion = 9;
|
|
59
|
+
}
|
|
55
60
|
if (currentVersion !== toVersion) {
|
|
56
61
|
throw new Error(`version of ${dbSchemaName} database should be '${toVersion}', but is '${currentVersion}'`);
|
|
57
62
|
}
|
|
58
63
|
logger.info(`${dbSchemaName} database was migrated from ${fromVersion} to ${currentVersion}`);
|
|
59
64
|
}
|
|
60
|
-
function removeExtensionFromFileName(
|
|
61
|
-
const i =
|
|
62
|
-
return i === -1 ?
|
|
65
|
+
function removeExtensionFromFileName(filename) {
|
|
66
|
+
const i = filename.lastIndexOf(".");
|
|
67
|
+
return i === -1 ? filename : filename.slice(0, i);
|
|
68
|
+
}
|
|
69
|
+
async function migrateFromVersion8To9(cn, logger) {
|
|
70
|
+
// Rename columns in PaMedia table
|
|
71
|
+
await cn.raw("alter table PaMedia rename column uid to id");
|
|
72
|
+
// Update PaImage table
|
|
73
|
+
await cn.raw("alter table PaImage rename column uid to id");
|
|
74
|
+
await cn.raw("alter table PaImage rename column width to rawWidth");
|
|
75
|
+
await cn.raw("alter table PaImage rename column height to rawHeight");
|
|
76
|
+
await cn.raw("alter table PaImage add pixelRatio real");
|
|
77
|
+
// Update PaMediaHandle table
|
|
78
|
+
await cn.raw("alter table PaMediaHandle rename column mediaUid to mediaId");
|
|
79
|
+
// Update the foreign key reference in PaAttachedData
|
|
80
|
+
await cn.raw(`
|
|
81
|
+
create table PaAttachedData (
|
|
82
|
+
mediaId char(36) not null references PaMedia (id) on delete cascade,
|
|
83
|
+
language varchar(5) not null,
|
|
84
|
+
val text not null,
|
|
85
|
+
primary key (mediaId, language)
|
|
86
|
+
)
|
|
87
|
+
`);
|
|
88
|
+
// Migrate attached data from PaMedia.attachedData to new PaAttachedData table
|
|
89
|
+
const attachedDataRows = await cn("PaMedia")
|
|
90
|
+
.select("id", "attachedData")
|
|
91
|
+
.whereNotNull("attachedData");
|
|
92
|
+
const attachedDataList = attachedDataRows.map((row) => ({
|
|
93
|
+
mediaId: strVal(row.id),
|
|
94
|
+
attachedDataStr: strVal(row.attachedData),
|
|
95
|
+
}));
|
|
96
|
+
// Re-insert the migrated data with the new mediaId column name
|
|
97
|
+
await migrateAttachedDataToNewTable(cn, attachedDataList, logger);
|
|
98
|
+
// Remove the old attachedData column
|
|
99
|
+
await cn.raw("alter table PaMedia drop column attachedData");
|
|
100
|
+
}
|
|
101
|
+
async function migrateAttachedDataToNewTable(cn, attachedDataList, logger) {
|
|
102
|
+
for (const { mediaId, attachedDataStr } of attachedDataList) {
|
|
103
|
+
try {
|
|
104
|
+
const oldAttachedData = JSON.parse(attachedDataStr);
|
|
105
|
+
const captionValue = oldAttachedData.caption;
|
|
106
|
+
if (typeof captionValue !== "string")
|
|
107
|
+
continue;
|
|
108
|
+
// Parse the nested JSON string to extract language-specific captions
|
|
109
|
+
const languageData = JSON.parse(captionValue);
|
|
110
|
+
// Insert each language variant
|
|
111
|
+
for (const [language, caption] of Object.entries(languageData)) {
|
|
112
|
+
if (typeof language === "string" && typeof caption === "string") {
|
|
113
|
+
const newVal = JSON.stringify({ caption });
|
|
114
|
+
await cn("PaAttachedData").insert({
|
|
115
|
+
mediaId,
|
|
116
|
+
language,
|
|
117
|
+
val: newVal,
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
logger.warn(`Could not parse attachedData for media ${mediaId}: ${attachedDataStr}`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
63
126
|
}
|
|
64
127
|
//# sourceMappingURL=ddl-migration.js.map
|
|
@@ -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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"}
|
package/dist/internal-types.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import type { Knex } from "knex";
|
|
|
3
3
|
import type { MediaStorageOptions } from "./media-storage.js";
|
|
4
4
|
export declare class MediaStorageContext {
|
|
5
5
|
#private;
|
|
6
|
-
status: "ready" | "
|
|
6
|
+
status: "ready" | "closed";
|
|
7
7
|
canCreate: boolean;
|
|
8
8
|
logger: AppLogger;
|
|
9
9
|
logNextQuery: (count?: number | undefined) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media-storage-context.js","sourceRoot":"","sources":["../src/media-storage-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGpD,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAGpE,MAAM,OAAO,mBAAmB;IAC9B,MAAM,
|
|
1
|
+
{"version":3,"file":"media-storage-context.js","sourceRoot":"","sources":["../src/media-storage-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGpD,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAGpE,MAAM,OAAO,mBAAmB;IAC9B,MAAM,GAAuB,OAAO,CAAC;IACrC,SAAS,CAAU;IACnB,MAAM,CAAY;IAClB,YAAY,CAAuC;IACnD,UAAU,GAAG,gBAAgB,EAAE,CAAC;IAChC,cAAc,CAAS;IAEvB,GAAG,CAAQ;IAEX,YAAY,OAA4B;QACtC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;QAC3C,IAAI,CAAC,YAAY,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,GAAG,MAAM,4BAA4B,CAAC;YAC9D,UAAU,EAAE,IAAI,CAAC,cAAc;YAC/B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACd,MAAM,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,yBAAyB,CAAC,CAAC;IACjD,CAAC;IAED,EAAE;QACA,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;CACF"}
|
package/dist/media-storage.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import type { MLocalizedAttachedData, WithAttachedData } from "@paroicms/public-anywhere-lib";
|
|
1
2
|
import type { AppLogger } from "@paroicms/public-server-lib";
|
|
2
|
-
import type {
|
|
3
|
+
import type { ImageConverterFn, ImageMd, MediaMd, MediaWithBinary, NewMediaWithHandle, ReorderMediasInput } from "./public-types.js";
|
|
3
4
|
export interface MediaStorageOptions {
|
|
4
5
|
canCreate: boolean;
|
|
5
6
|
storage: MediaStorageConf;
|
|
@@ -9,43 +10,33 @@ export interface MediaStorageConf {
|
|
|
9
10
|
type: "sqlite";
|
|
10
11
|
file: string;
|
|
11
12
|
}
|
|
12
|
-
export
|
|
13
|
-
|
|
14
|
-
#private;
|
|
15
|
-
constructor(options: MediaStorageOptions);
|
|
16
|
-
initialise(): Promise<void>;
|
|
17
|
-
addMedia(original: NewMediaWithHandle, { imageConverter, }?: {
|
|
13
|
+
export interface MediaStorage {
|
|
14
|
+
addMedia(original: NewMediaWithHandle, options?: {
|
|
18
15
|
imageConverter?: ImageConverterFn;
|
|
19
|
-
}): Promise<
|
|
16
|
+
}): Promise<MediaMd>;
|
|
20
17
|
getFirstImage(options: {
|
|
21
18
|
handle: string;
|
|
22
|
-
|
|
19
|
+
withAttachedData?: WithAttachedData;
|
|
20
|
+
}): Promise<ImageMd | undefined>;
|
|
23
21
|
getMedias(options: {
|
|
24
22
|
handle: string;
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
withAttachedData?: WithAttachedData;
|
|
24
|
+
}): Promise<MediaMd[]>;
|
|
25
|
+
getMediasMap(options: {
|
|
27
26
|
handles: string[];
|
|
28
|
-
|
|
27
|
+
withAttachedData?: WithAttachedData;
|
|
28
|
+
}): Promise<Map<string, MediaMd>>;
|
|
29
29
|
getMedia(options: {
|
|
30
30
|
handle: string;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
*/
|
|
39
|
-
deleteMedia(options: {
|
|
40
|
-
handle: string;
|
|
41
|
-
}): Promise<string[]>;
|
|
42
|
-
/**
|
|
43
|
-
* Delete the media if it is attached only to the `handle`. Remove the handle from the media
|
|
44
|
-
* otherwise.
|
|
45
|
-
* @returns a list of deleted media uid
|
|
46
|
-
*/
|
|
31
|
+
withAttachedData?: WithAttachedData;
|
|
32
|
+
}): Promise<MediaMd | undefined>;
|
|
33
|
+
getMedia(options: {
|
|
34
|
+
mediaId: string;
|
|
35
|
+
withAttachedData?: WithAttachedData;
|
|
36
|
+
}): Promise<MediaMd | undefined>;
|
|
37
|
+
getMediaWithBinary(mediaId: string): Promise<MediaWithBinary | undefined>;
|
|
47
38
|
deleteMedia(options: {
|
|
48
|
-
|
|
39
|
+
mediaId?: string;
|
|
49
40
|
handle: string;
|
|
50
41
|
}): Promise<string[]>;
|
|
51
42
|
deleteMedias(options: {
|
|
@@ -53,15 +44,21 @@ export declare class MediaStorage {
|
|
|
53
44
|
} | {
|
|
54
45
|
handles: string[];
|
|
55
46
|
}): Promise<string[]>;
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
47
|
+
setAttachedData(options: {
|
|
48
|
+
mediaId: string;
|
|
49
|
+
language: string;
|
|
50
|
+
value: MLocalizedAttachedData | null;
|
|
51
|
+
}): Promise<void>;
|
|
52
|
+
updatePixelRatio(options: {
|
|
53
|
+
mediaId: string;
|
|
54
|
+
pixelRatio: number | null;
|
|
55
|
+
}): Promise<void>;
|
|
56
|
+
reorderMedias(options: ReorderMediasInput): Promise<MediaMd[]>;
|
|
57
|
+
countMedias(options: {
|
|
62
58
|
nodeId: string;
|
|
63
59
|
exceptHandle?: string;
|
|
64
60
|
}): Promise<number>;
|
|
65
|
-
|
|
61
|
+
getTotalDocumentsWeight(): Promise<number>;
|
|
66
62
|
close(): Promise<void>;
|
|
67
63
|
}
|
|
64
|
+
export declare function createMediaStorage(options: MediaStorageOptions): Promise<MediaStorage>;
|
package/dist/media-storage.js
CHANGED
|
@@ -1,132 +1,163 @@
|
|
|
1
1
|
import { calculateMediaHash } from "./helpers/media-hash.helper.js";
|
|
2
2
|
import { MediaStorageContext } from "./media-storage-context.js";
|
|
3
|
-
import { countMediasByNodeId,
|
|
3
|
+
import { countMediasByNodeId, deleteHandle, deleteHandles, deleteMediaWithHandle, findMediaByOriginalHash, insertMedia, loadAttachedDataForLanguages, loadAttachedDocumentsWeight, loadFirstImageForHandle, loadMedia, loadMediaByHandle, loadMediaWithBinary, loadMediasByHandle, loadMediasByHandles, reorderMedias, saveAttachedData, updateMediaPixelRatio, } from "./media.queries.js";
|
|
4
4
|
export async function createMediaStorage(options) {
|
|
5
|
-
const
|
|
6
|
-
await
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
constructor(options) {
|
|
12
|
-
this.#context = new MediaStorageContext(options);
|
|
13
|
-
}
|
|
14
|
-
async initialise() {
|
|
15
|
-
this.#checkStatus();
|
|
16
|
-
await this.#context.init();
|
|
5
|
+
const context = new MediaStorageContext(options);
|
|
6
|
+
await context.init();
|
|
7
|
+
function checkStatus() {
|
|
8
|
+
if (context.status !== "ready") {
|
|
9
|
+
throw new Error(`MediaStorage is ${context.status}`);
|
|
10
|
+
}
|
|
17
11
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
if (
|
|
30
|
-
if (
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
12
|
+
return {
|
|
13
|
+
async addMedia(original, { imageConverter } = {}) {
|
|
14
|
+
checkStatus();
|
|
15
|
+
const originalHash = calculateMediaHash(original.binaryFile);
|
|
16
|
+
context.logger.debug(`Calculated hash for ${original.originalName || "unnamed media"}: ${originalHash}`);
|
|
17
|
+
const existingMedia = await findMediaByOriginalHash(context.cn(), originalHash);
|
|
18
|
+
let input = {
|
|
19
|
+
...original,
|
|
20
|
+
originalHash,
|
|
21
|
+
existingMediaId: existingMedia?.id,
|
|
22
|
+
};
|
|
23
|
+
if (original.mediaType.startsWith("image/")) {
|
|
24
|
+
if (existingMedia) {
|
|
25
|
+
if (existingMedia.kind !== "image")
|
|
26
|
+
throw new Error("existing media should be an image");
|
|
27
|
+
input = {
|
|
28
|
+
...input,
|
|
29
|
+
image: {
|
|
30
|
+
rawWidth: existingMedia.rawWidth,
|
|
31
|
+
rawHeight: existingMedia.rawHeight,
|
|
32
|
+
lossless: existingMedia.lossless,
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
else if (imageConverter) {
|
|
37
|
+
const { binaryFile, rawWidth, rawHeight, mediaType, lossless, weightB } = await imageConverter({
|
|
38
|
+
binaryFile: original.binaryFile,
|
|
39
|
+
mediaType: original.mediaType,
|
|
40
|
+
});
|
|
41
|
+
input = {
|
|
42
|
+
...input,
|
|
43
|
+
binaryFile,
|
|
44
|
+
mediaType,
|
|
45
|
+
weightB,
|
|
46
|
+
image: { rawWidth, rawHeight, lossless },
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
if (!input.image)
|
|
50
|
+
throw new Error("Image data is required for image media");
|
|
40
51
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
52
|
+
const id = await context.asyncQueue(() => insertMedia(context, input));
|
|
53
|
+
const media = await loadMedia(context.cn(), id, undefined);
|
|
54
|
+
if (!media)
|
|
55
|
+
throw new Error(`should have a media '${id}'`);
|
|
56
|
+
return media;
|
|
57
|
+
},
|
|
58
|
+
async getFirstImage(options) {
|
|
59
|
+
checkStatus();
|
|
60
|
+
const { withAttachedData } = options;
|
|
61
|
+
const oneAdLanguage = withAttachedData && withAttachedData !== true ? withAttachedData : undefined;
|
|
62
|
+
const cn = context.cn();
|
|
63
|
+
const result = await loadFirstImageForHandle(cn, options.handle, oneAdLanguage);
|
|
64
|
+
await populateAttachedDataIfNeeded(cn, result, withAttachedData);
|
|
65
|
+
return result;
|
|
66
|
+
},
|
|
67
|
+
async getMedias(options) {
|
|
68
|
+
checkStatus();
|
|
69
|
+
const { withAttachedData } = options;
|
|
70
|
+
const oneAdLanguage = withAttachedData && withAttachedData !== true ? withAttachedData : undefined;
|
|
71
|
+
const cn = context.cn();
|
|
72
|
+
const result = await loadMediasByHandle(cn, options.handle, oneAdLanguage);
|
|
73
|
+
await populateAttachedDataIfNeeded(cn, result, withAttachedData);
|
|
74
|
+
return result;
|
|
75
|
+
},
|
|
76
|
+
async getMediasMap(options) {
|
|
77
|
+
checkStatus();
|
|
78
|
+
const { withAttachedData } = options;
|
|
79
|
+
const oneAdLanguage = withAttachedData && withAttachedData !== true ? withAttachedData : undefined;
|
|
80
|
+
const cn = context.cn();
|
|
81
|
+
const result = await loadMediasByHandles(cn, options.handles, oneAdLanguage);
|
|
82
|
+
await populateAttachedDataIfNeeded(cn, Array.from(result.values()), withAttachedData);
|
|
83
|
+
return result;
|
|
84
|
+
},
|
|
85
|
+
async getMedia(options) {
|
|
86
|
+
checkStatus();
|
|
87
|
+
const { withAttachedData } = options;
|
|
88
|
+
const oneAdLanguage = withAttachedData && withAttachedData !== true ? withAttachedData : undefined;
|
|
89
|
+
const cn = context.cn();
|
|
90
|
+
if ("handle" in options) {
|
|
91
|
+
const result = await loadMediaByHandle(cn, options.handle, oneAdLanguage);
|
|
92
|
+
await populateAttachedDataIfNeeded(cn, result, withAttachedData);
|
|
93
|
+
return result;
|
|
53
94
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
}
|
|
109
|
-
async countMedias({ nodeId, exceptHandle }) {
|
|
110
|
-
this.#checkStatus();
|
|
111
|
-
return await countMediasByNodeId(this.#context.cn(), nodeId, { exceptHandle });
|
|
112
|
-
}
|
|
113
|
-
async getAttachedDocumentsWeight() {
|
|
114
|
-
this.#checkStatus();
|
|
115
|
-
return await getAttachedDocumentsWeight(this.#context.cn());
|
|
116
|
-
}
|
|
117
|
-
async close() {
|
|
118
|
-
if (this.#context.status === "destroyed")
|
|
119
|
-
return;
|
|
120
|
-
this.#context.status = "destroyed";
|
|
121
|
-
await this.#context.cn().destroy();
|
|
122
|
-
}
|
|
123
|
-
#checkStatus() {
|
|
124
|
-
if (this.#context.status !== "ready") {
|
|
125
|
-
throw new Error(`MediaStorage is ${this.#context.status}`);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
95
|
+
const result = await loadMedia(cn, options.mediaId, oneAdLanguage);
|
|
96
|
+
await populateAttachedDataIfNeeded(cn, result, withAttachedData);
|
|
97
|
+
return result;
|
|
98
|
+
},
|
|
99
|
+
async getMediaWithBinary(mediaId) {
|
|
100
|
+
checkStatus();
|
|
101
|
+
return await loadMediaWithBinary(context.cn(), mediaId);
|
|
102
|
+
},
|
|
103
|
+
async deleteMedia({ mediaId, handle }) {
|
|
104
|
+
checkStatus();
|
|
105
|
+
if (mediaId !== undefined) {
|
|
106
|
+
return await deleteMediaWithHandle(context.cn(), { mediaId, handle });
|
|
107
|
+
}
|
|
108
|
+
return await deleteHandle(context.cn(), handle);
|
|
109
|
+
},
|
|
110
|
+
async deleteMedias(options) {
|
|
111
|
+
checkStatus();
|
|
112
|
+
if ("handle" in options) {
|
|
113
|
+
return await deleteHandle(context.cn(), options.handle);
|
|
114
|
+
}
|
|
115
|
+
return await deleteHandles(context.cn(), options.handles);
|
|
116
|
+
},
|
|
117
|
+
async setAttachedData(options) {
|
|
118
|
+
checkStatus();
|
|
119
|
+
await saveAttachedData(context.cn(), options);
|
|
120
|
+
},
|
|
121
|
+
async updatePixelRatio(options) {
|
|
122
|
+
checkStatus();
|
|
123
|
+
await updateMediaPixelRatio(context.cn(), options);
|
|
124
|
+
},
|
|
125
|
+
async reorderMedias(options) {
|
|
126
|
+
checkStatus();
|
|
127
|
+
await reorderMedias(context, options);
|
|
128
|
+
const { withAttachedData } = options;
|
|
129
|
+
const oneAdLanguage = withAttachedData && withAttachedData !== true ? withAttachedData : undefined;
|
|
130
|
+
const cn = context.cn();
|
|
131
|
+
const result = await loadMediasByHandle(cn, options.handle, oneAdLanguage);
|
|
132
|
+
await populateAttachedDataIfNeeded(cn, result, withAttachedData);
|
|
133
|
+
return result;
|
|
134
|
+
},
|
|
135
|
+
async countMedias({ nodeId, exceptHandle }) {
|
|
136
|
+
checkStatus();
|
|
137
|
+
return await countMediasByNodeId(context.cn(), nodeId, { exceptHandle });
|
|
138
|
+
},
|
|
139
|
+
async getTotalDocumentsWeight() {
|
|
140
|
+
checkStatus();
|
|
141
|
+
return await loadAttachedDocumentsWeight(context.cn());
|
|
142
|
+
},
|
|
143
|
+
async close() {
|
|
144
|
+
if (context.status === "closed")
|
|
145
|
+
return;
|
|
146
|
+
context.status = "closed";
|
|
147
|
+
await context.cn().destroy();
|
|
148
|
+
},
|
|
149
|
+
};
|
|
128
150
|
}
|
|
129
|
-
|
|
130
|
-
|
|
151
|
+
/**
|
|
152
|
+
* Populates attached data only when there are several languages to load.
|
|
153
|
+
*/
|
|
154
|
+
async function populateAttachedDataIfNeeded(cn, mediaOrList, withAttachedData) {
|
|
155
|
+
if (!mediaOrList || withAttachedData !== true)
|
|
156
|
+
return;
|
|
157
|
+
const list = Array.isArray(mediaOrList) ? mediaOrList : [mediaOrList];
|
|
158
|
+
const map = await loadAttachedDataForLanguages(cn, list.map((m) => m.id));
|
|
159
|
+
for (const media of list) {
|
|
160
|
+
media.attachedData = map.get(media.id);
|
|
161
|
+
}
|
|
131
162
|
}
|
|
132
163
|
//# sourceMappingURL=media-storage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media-storage.js","sourceRoot":"","sources":["../src/media-storage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"media-storage.js","sourceRoot":"","sources":["../src/media-storage.ts"],"names":[],"mappings":"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"}
|