@paroicms/server 1.102.3 → 1.103.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/README.md +1 -16
- package/ddl/main.ddl.sql +92 -0
- package/dist/admin-backend/account/account.queries.d.ts +3 -3
- package/dist/admin-backend/account/account.queries.js.map +1 -1
- package/dist/admin-backend/account/account.resolver.d.ts +1 -1
- package/dist/admin-backend/account/account.resolver.js +9 -0
- package/dist/admin-backend/account/account.resolver.js.map +1 -1
- package/dist/admin-backend/auth/auth.service.d.ts +12 -3
- package/dist/admin-backend/auth/auth.service.js +7 -7
- package/dist/admin-backend/auth/auth.service.js.map +1 -1
- package/dist/admin-backend/backup/backup.controller.js +2 -1
- package/dist/admin-backend/backup/backup.controller.js.map +1 -1
- package/dist/admin-backend/backup/backup.resolver.d.ts +1 -1
- package/dist/admin-backend/backup/backup.resolver.js +2 -0
- package/dist/admin-backend/backup/backup.resolver.js.map +1 -1
- package/dist/admin-backend/backup/hardened-backup.service.js +2 -1
- package/dist/admin-backend/backup/hardened-backup.service.js.map +1 -1
- package/dist/admin-backend/document/document.resolver.d.ts +1 -1
- package/dist/admin-backend/document/document.resolver.extend.d.ts +1 -1
- package/dist/admin-backend/document/document.resolver.extend.js +2 -0
- package/dist/admin-backend/document/document.resolver.extend.js.map +1 -1
- package/dist/admin-backend/document/document.resolver.js +9 -0
- package/dist/admin-backend/document/document.resolver.js.map +1 -1
- package/dist/admin-backend/document/load-documents.queries.d.ts +1 -1
- package/dist/admin-backend/document/load-documents.queries.js.map +1 -1
- package/dist/admin-backend/document/save-documents.queries.js +1 -1
- package/dist/admin-backend/document/save-documents.queries.js.map +1 -1
- package/dist/admin-backend/fields/fields.resolver.d.ts +1 -1
- package/dist/admin-backend/fields/fields.resolver.js +8 -0
- package/dist/admin-backend/fields/fields.resolver.js.map +1 -1
- package/dist/admin-backend/lnode/lnode-wrap.resolver.d.ts +1 -1
- package/dist/admin-backend/lnode/lnode-wrap.resolver.js +9 -0
- package/dist/admin-backend/lnode/lnode-wrap.resolver.js.map +1 -1
- package/dist/admin-backend/lnode/lnode.queries.js +1 -1
- package/dist/admin-backend/lnode/lnode.queries.js.map +1 -1
- package/dist/admin-backend/login/login.controller.d.ts +2 -2
- package/dist/admin-backend/login/login.controller.js +17 -5
- package/dist/admin-backend/login/login.controller.js.map +1 -1
- package/dist/admin-backend/media/media.resolver.d.ts +1 -1
- package/dist/admin-backend/media/media.resolver.extend.d.ts +1 -1
- package/dist/admin-backend/media/media.resolver.extend.js +2 -0
- package/dist/admin-backend/media/media.resolver.extend.js.map +1 -1
- package/dist/admin-backend/media/media.resolver.js +11 -0
- package/dist/admin-backend/media/media.resolver.js.map +1 -1
- package/dist/admin-backend/migration/migration.resolver.d.ts +3 -0
- package/dist/admin-backend/migration/migration.resolver.js +38 -0
- package/dist/admin-backend/migration/migration.resolver.js.map +1 -0
- package/dist/admin-backend/node/node.queries.js +1 -1
- package/dist/admin-backend/node/node.queries.js.map +1 -1
- package/dist/admin-backend/node/node.resolver.d.ts +1 -1
- package/dist/admin-backend/node/node.resolver.extend.d.ts +1 -1
- package/dist/admin-backend/node/node.resolver.extend.js +2 -0
- package/dist/admin-backend/node/node.resolver.extend.js.map +1 -1
- package/dist/admin-backend/node/node.resolver.js +5 -0
- package/dist/admin-backend/node/node.resolver.js.map +1 -1
- package/dist/admin-backend/part/part.queries.js +1 -1
- package/dist/admin-backend/part/part.queries.js.map +1 -1
- package/dist/admin-backend/part/part.resolver.d.ts +1 -1
- package/dist/admin-backend/part/part.resolver.extend.d.ts +1 -1
- package/dist/admin-backend/part/part.resolver.extend.js +3 -0
- package/dist/admin-backend/part/part.resolver.extend.js.map +1 -1
- package/dist/admin-backend/part/part.resolver.js +7 -0
- package/dist/admin-backend/part/part.resolver.js.map +1 -1
- package/dist/admin-backend/site-constants/site-constants.resolver.d.ts +1 -1
- package/dist/admin-backend/site-constants/site-constants.resolver.js +7 -1
- package/dist/admin-backend/site-constants/site-constants.resolver.js.map +1 -1
- package/dist/admin-backend/unprotected/unprotected.resolver.js +14 -3
- package/dist/admin-backend/unprotected/unprotected.resolver.js.map +1 -1
- package/dist/common/data-format.d.ts +1 -1
- package/dist/common/data-format.js.map +1 -1
- package/dist/connector/app-conf/app-conf-formatter.d.ts +3 -0
- package/dist/connector/app-conf/app-conf-formatter.js +144 -0
- package/dist/connector/app-conf/app-conf-formatter.js.map +1 -0
- package/dist/connector/app-conf/app-conf-reader.d.ts +3 -0
- package/dist/connector/app-conf/app-conf-reader.js +11 -0
- package/dist/connector/app-conf/app-conf-reader.js.map +1 -0
- package/dist/connector/app-conf/app-conf.types.d.ts +45 -0
- package/dist/connector/app-conf/app-conf.types.js +2 -0
- package/dist/connector/app-conf/app-conf.types.js.map +1 -0
- package/dist/connector/db-init/db-constants.d.ts +2 -0
- package/dist/connector/db-init/db-constants.js +3 -0
- package/dist/connector/db-init/db-constants.js.map +1 -0
- package/dist/connector/db-init/db-init.d.ts +10 -0
- package/dist/connector/db-init/db-init.js +42 -0
- package/dist/connector/db-init/db-init.js.map +1 -0
- package/dist/connector/db-init/ddl-migration.d.ts +6 -0
- package/dist/connector/db-init/ddl-migration.js +185 -0
- package/dist/connector/db-init/ddl-migration.js.map +1 -0
- package/dist/connector/db-init/init-node-queries.d.ts +12 -0
- package/dist/connector/db-init/init-node-queries.js +96 -0
- package/dist/connector/db-init/init-node-queries.js.map +1 -0
- package/dist/connector/db-init/load-routing-documents.d.ts +3 -0
- package/dist/connector/db-init/load-routing-documents.js +85 -0
- package/dist/connector/db-init/load-routing-documents.js.map +1 -0
- package/dist/connector/db-init/populate-routing-documents.d.ts +4 -0
- package/dist/connector/db-init/populate-routing-documents.js +68 -0
- package/dist/connector/db-init/populate-routing-documents.js.map +1 -0
- package/dist/connector/media-storage.d.ts +4 -0
- package/dist/connector/media-storage.js +14 -0
- package/dist/connector/media-storage.js.map +1 -0
- package/dist/connector/plugin-loader/init-plugins.d.ts +8 -0
- package/dist/connector/plugin-loader/init-plugins.js +98 -0
- package/dist/connector/plugin-loader/init-plugins.js.map +1 -0
- package/dist/connector/plugin-loader/plugin-loader.d.ts +8 -0
- package/dist/connector/plugin-loader/plugin-loader.js +76 -0
- package/dist/connector/plugin-loader/plugin-loader.js.map +1 -0
- package/dist/connector/plugin-loader/plugin-public-helpers.d.ts +2 -0
- package/dist/connector/plugin-loader/plugin-public-helpers.js +4 -0
- package/dist/connector/plugin-loader/plugin-public-helpers.js.map +1 -0
- package/dist/connector/plugin-loader/plugin-types.d.ts +53 -0
- package/dist/connector/plugin-loader/plugin-types.js +2 -0
- package/dist/connector/plugin-loader/plugin-types.js.map +1 -0
- package/dist/connector/public-site-context-types.d.ts +16 -0
- package/dist/connector/public-site-context-types.js +2 -0
- package/dist/connector/public-site-context-types.js.map +1 -0
- package/dist/connector/row-types.d.ts +59 -0
- package/dist/connector/row-types.js +2 -0
- package/dist/connector/row-types.js.map +1 -0
- package/dist/connector/single-site-builder/default-config.d.ts +3 -0
- package/dist/connector/single-site-builder/default-config.js +24 -0
- package/dist/connector/single-site-builder/default-config.js.map +1 -0
- package/dist/connector/single-site-builder/default-readme.d.ts +1 -0
- package/dist/connector/single-site-builder/default-readme.js +4 -0
- package/dist/connector/single-site-builder/default-readme.js.map +1 -0
- package/dist/connector/single-site-builder/site-builder.d.ts +27 -0
- package/dist/connector/single-site-builder/site-builder.js +91 -0
- package/dist/connector/single-site-builder/site-builder.js.map +1 -0
- package/dist/connector/site-backup/archiver.helper.d.ts +12 -0
- package/dist/connector/site-backup/archiver.helper.js +36 -0
- package/dist/connector/site-backup/archiver.helper.js.map +1 -0
- package/dist/connector/site-backup/backup-tasks.d.ts +14 -0
- package/dist/connector/site-backup/backup-tasks.js +42 -0
- package/dist/connector/site-backup/backup-tasks.js.map +1 -0
- package/dist/connector/site-backup/backup.d.ts +12 -0
- package/dist/connector/site-backup/backup.helper.d.ts +3 -0
- package/dist/connector/site-backup/backup.helper.js +8 -0
- package/dist/connector/site-backup/backup.helper.js.map +1 -0
- package/dist/connector/site-backup/backup.js +34 -0
- package/dist/connector/site-backup/backup.js.map +1 -0
- package/dist/connector/site-conf/site-conf.d.ts +8 -0
- package/dist/connector/site-conf/site-conf.js +117 -0
- package/dist/connector/site-conf/site-conf.js.map +1 -0
- package/dist/connector/site-conf/site-place-types.d.ts +5 -0
- package/dist/connector/site-conf/site-place-types.js +2 -0
- package/dist/connector/site-conf/site-place-types.js.map +1 -0
- package/dist/connector/site-schema/common-schema-reader.d.ts +2 -0
- package/dist/connector/site-schema/common-schema-reader.js +56 -0
- package/dist/connector/site-schema/common-schema-reader.js.map +1 -0
- package/dist/connector/site-schema/common-schema-types.d.ts +13 -0
- package/dist/connector/site-schema/common-schema-types.js +2 -0
- package/dist/connector/site-schema/common-schema-types.js.map +1 -0
- package/dist/connector/site-schema/default-media-policy.d.ts +3 -0
- package/dist/connector/site-schema/default-media-policy.js +21 -0
- package/dist/connector/site-schema/default-media-policy.js.map +1 -0
- package/dist/connector/site-schema/read-locales.d.ts +23 -0
- package/dist/connector/site-schema/read-locales.js +214 -0
- package/dist/connector/site-schema/read-locales.js.map +1 -0
- package/dist/connector/site-schema/schema-lib.d.ts +29 -0
- package/dist/connector/site-schema/schema-lib.js +62 -0
- package/dist/connector/site-schema/schema-lib.js.map +1 -0
- package/dist/connector/site-schema/site-configuration.d.ts +4 -0
- package/dist/connector/site-schema/site-configuration.js +2 -0
- package/dist/connector/site-schema/site-configuration.js.map +1 -0
- package/dist/connector/site-schema/site-schema-factory.d.ts +21 -0
- package/dist/connector/site-schema/site-schema-factory.js +574 -0
- package/dist/connector/site-schema/site-schema-factory.js.map +1 -0
- package/dist/connector/site-schema/site-schema-helpers.d.ts +3 -0
- package/dist/connector/site-schema/site-schema-helpers.js +7 -0
- package/dist/connector/site-schema/site-schema-helpers.js.map +1 -0
- package/dist/connector/site-schema/site-schema-lib-reader.d.ts +8 -0
- package/dist/connector/site-schema/site-schema-lib-reader.js +42 -0
- package/dist/connector/site-schema/site-schema-lib-reader.js.map +1 -0
- package/dist/connector/site-schema/site-schema-public-helpers.d.ts +3 -0
- package/dist/connector/site-schema/site-schema-public-helpers.js +15 -0
- package/dist/connector/site-schema/site-schema-public-helpers.js.map +1 -0
- package/dist/connector/theme-conf/theme-conf-reader.d.ts +4 -0
- package/dist/connector/theme-conf/theme-conf-reader.js +31 -0
- package/dist/connector/theme-conf/theme-conf-reader.js.map +1 -0
- package/dist/context.d.ts +3 -3
- package/dist/context.js +3 -3
- package/dist/context.js.map +1 -1
- package/dist/express/http-helpers.d.ts +3 -3
- package/dist/express/http-redirection-url.d.ts +1 -1
- package/dist/express/local-testing-route.js +5 -1
- package/dist/express/local-testing-route.js.map +1 -1
- package/dist/express/route-handler-wrapper.d.ts +9 -1
- package/dist/express/route-handler-wrapper.js +25 -2
- package/dist/express/route-handler-wrapper.js.map +1 -1
- package/dist/express/site-middleware.js +3 -6
- package/dist/express/site-middleware.js.map +1 -1
- package/dist/express/static-files.req-handler.d.ts +2 -2
- package/dist/express/static-files.req-handler.js +3 -3
- package/dist/express/static-files.req-handler.js.map +1 -1
- package/dist/graphql/apollo-server-init.js +2 -0
- package/dist/graphql/apollo-server-init.js.map +1 -1
- package/dist/graphql/graphql.types.d.ts +7 -2
- package/dist/graphql/graphql.types.js +6 -1
- package/dist/graphql/graphql.types.js.map +1 -1
- package/dist/helpers/special-account.helpers.d.ts +1 -1
- package/dist/helpers/special-account.helpers.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/maintenance/maintenance-task.js +4 -2
- package/dist/maintenance/maintenance-task.js.map +1 -1
- package/dist/plugin-services/make-backend-plugin-service.d.ts +1 -1
- package/dist/plugin-services/make-backend-plugin-service.js +3 -3
- package/dist/plugin-services/make-backend-plugin-service.js.map +1 -1
- package/dist/public-api/password-reset/password-reset.service.js.map +1 -1
- package/dist/rendered-site/feed/feed-generator.js +1 -1
- package/dist/rendered-site/feed/feed-generator.js.map +1 -1
- package/dist/rendered-site/liquidjs-filters/head-tags-filter.d.ts +1 -1
- package/dist/rendered-site/liquidjs-filters/open-graph-filter.d.ts +1 -1
- package/dist/rendered-site/liquidjs-filters/plugin-asset-url-filter.js +1 -1
- package/dist/rendered-site/liquidjs-filters/plugin-asset-url-filter.js.map +1 -1
- package/dist/rendered-site/liquidjs-tags/get-docs-tag.js +1 -1
- package/dist/rendered-site/liquidjs-tags/get-docs-tag.js.map +1 -1
- package/dist/rendered-site/liquidjs-tags/get-paginated-docs-tag.js +1 -1
- package/dist/rendered-site/liquidjs-tags/get-paginated-docs-tag.js.map +1 -1
- package/dist/rendered-site/page-route/make-url.js +1 -1
- package/dist/rendered-site/page-route/make-url.js.map +1 -1
- package/dist/rendering-payload/doc-values.queries.js +1 -1
- package/dist/rendering-payload/doc-values.queries.js.map +1 -1
- package/dist/rendering-payload/excerpt.queries.js +1 -1
- package/dist/rendering-payload/excerpt.queries.js.map +1 -1
- package/dist/rendering-payload/get-siblings.queries.js +1 -1
- package/dist/rendering-payload/get-siblings.queries.js.map +1 -1
- package/dist/rendering-payload/parts.queries.js +1 -1
- package/dist/rendering-payload/parts.queries.js.map +1 -1
- package/dist/rendering-payload/translations.queries.js +1 -1
- package/dist/rendering-payload/translations.queries.js.map +1 -1
- package/dist/running-server/running-server-connector.d.ts +2 -0
- package/dist/{helpers/running-instance-connector.js → running-server/running-server-connector.js} +17 -5
- package/dist/running-server/running-server-connector.js.map +1 -0
- package/dist/running-server/single-site-generator.d.ts +2 -0
- package/dist/running-server/single-site-generator.js +23 -0
- package/dist/running-server/single-site-generator.js.map +1 -0
- package/dist/site-context/core-plugin/core-hooks.d.ts +1 -1
- package/dist/site-context/core-plugin/create-core-plugin.d.ts +1 -1
- package/dist/site-context/core-plugin/create-core-plugin.js.map +1 -1
- package/dist/site-context/load-site-context.d.ts +2 -2
- package/dist/site-context/load-site-context.js +54 -3
- package/dist/site-context/load-site-context.js.map +1 -1
- package/dist/site-context/site-context.d.ts +7 -7
- package/dist/site-context/site-context.js +17 -7
- package/dist/site-context/site-context.js.map +1 -1
- package/dist/site-context/site-context.types.d.ts +26 -3
- package/dist/site-schema-migration/migrations/site-schema-migration-6-to-7.d.ts +9 -0
- package/dist/site-schema-migration/migrations/site-schema-migration-6-to-7.js +61 -0
- package/dist/site-schema-migration/migrations/site-schema-migration-6-to-7.js.map +1 -0
- package/dist/site-schema-migration/migrations/site-schema-migration-7-to-8.d.ts +9 -0
- package/dist/site-schema-migration/migrations/site-schema-migration-7-to-8.js +54 -0
- package/dist/site-schema-migration/migrations/site-schema-migration-7-to-8.js.map +1 -0
- package/dist/site-schema-migration/migrations/site-schema-migration-8-to-9.d.ts +9 -0
- package/dist/site-schema-migration/migrations/site-schema-migration-8-to-9.js +44 -0
- package/dist/site-schema-migration/migrations/site-schema-migration-8-to-9.js.map +1 -0
- package/dist/site-schema-migration/site-schema-migration.d.ts +3 -0
- package/dist/site-schema-migration/site-schema-migration.js +43 -0
- package/dist/site-schema-migration/site-schema-migration.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +11 -9
- package/schema.graphql +21 -0
- package/site-schema-lib/common-schema.json +40 -0
- package/site-schema-lib/common-schema.l10n.de.json +10 -0
- package/site-schema-lib/common-schema.l10n.en.json +10 -0
- package/site-schema-lib/common-schema.l10n.es.json +10 -0
- package/site-schema-lib/common-schema.l10n.fr.json +10 -0
- package/site-schema-lib/common-schema.l10n.it.json +10 -0
- package/site-schema-lib/common-schema.l10n.pt.json +10 -0
- package/site-schema-lib/field-lib.site-schema.json +84 -0
- package/site-schema-lib/field-lib.site-schema.l10n.de.json +38 -0
- package/site-schema-lib/field-lib.site-schema.l10n.en.json +38 -0
- package/site-schema-lib/field-lib.site-schema.l10n.es.json +38 -0
- package/site-schema-lib/field-lib.site-schema.l10n.fr.json +41 -0
- package/site-schema-lib/field-lib.site-schema.l10n.it.json +38 -0
- package/site-schema-lib/field-lib.site-schema.l10n.pt.json +38 -0
- package/dist/helpers/running-instance-connector.d.ts +0 -2
- package/dist/helpers/running-instance-connector.js.map +0 -1
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { createOrOpenSqliteConnection, createSqlLogger, getMetadataDbSchemaVersion, } from "@paroicms/internal-server-lib";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { packageDir } from "../../context.js";
|
|
4
|
+
import { mainDbSchemaName, mainDbSchemaVersion } from "./db-constants.js";
|
|
5
|
+
import { migrateMainDb } from "./ddl-migration.js";
|
|
6
|
+
export async function createOrOpenMainConnection(dataDir, { logger, canCreate }) {
|
|
7
|
+
const { logNextQuery, knexLogger } = createSqlLogger({
|
|
8
|
+
logger,
|
|
9
|
+
dbSchemaName: mainDbSchemaName,
|
|
10
|
+
});
|
|
11
|
+
const { cn, isNewDatabase } = await createOrOpenSqliteConnection({
|
|
12
|
+
canCreate,
|
|
13
|
+
dbSchemaName: mainDbSchemaName,
|
|
14
|
+
sqliteFile: join(dataDir, "main.sqlite"),
|
|
15
|
+
ddlFile: join(packageDir, "ddl", "main.ddl.sql"),
|
|
16
|
+
migrateDb,
|
|
17
|
+
knexLogger,
|
|
18
|
+
logger,
|
|
19
|
+
});
|
|
20
|
+
async function migrateDb(cn) {
|
|
21
|
+
const dbVersion = await getMetadataDbSchemaVersion(cn, {
|
|
22
|
+
dbSchemaName: mainDbSchemaName,
|
|
23
|
+
});
|
|
24
|
+
if (dbVersion === mainDbSchemaVersion) {
|
|
25
|
+
return {
|
|
26
|
+
migrated: false,
|
|
27
|
+
schemaVersion: dbVersion,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
await migrateMainDb(cn, {
|
|
31
|
+
fromVersion: dbVersion,
|
|
32
|
+
logger,
|
|
33
|
+
});
|
|
34
|
+
return {
|
|
35
|
+
migrated: true,
|
|
36
|
+
fromVersion: dbVersion,
|
|
37
|
+
schemaVersion: mainDbSchemaVersion,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
return { cn, logNextQuery, isNewDatabase };
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=db-init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db-init.js","sourceRoot":"","sources":["../../../src/connector/db-init/db-init.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,eAAe,EAEf,0BAA0B,GAC3B,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,OAAe,EACf,EAAE,MAAM,EAAE,SAAS,EAA6C;IAMhE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,eAAe,CAAC;QACnD,MAAM;QACN,YAAY,EAAE,gBAAgB;KAC/B,CAAC,CAAC;IAEH,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,GAAG,MAAM,4BAA4B,CAAC;QAC/D,SAAS;QACT,YAAY,EAAE,gBAAgB;QAC9B,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC;QACxC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,cAAc,CAAC;QAChD,SAAS;QACT,UAAU;QACV,MAAM;KACP,CAAC,CAAC;IAEH,KAAK,UAAU,SAAS,CAAC,EAAQ;QAC/B,MAAM,SAAS,GAAG,MAAM,0BAA0B,CAAC,EAAE,EAAE;YACrD,YAAY,EAAE,gBAAgB;SAC/B,CAAC,CAAC;QACH,IAAI,SAAS,KAAK,mBAAmB,EAAE,CAAC;YACtC,OAAO;gBACL,QAAQ,EAAE,KAAK;gBACf,aAAa,EAAE,SAAS;aACzB,CAAC;QACJ,CAAC;QACD,MAAM,aAAa,CAAC,EAAE,EAAE;YACtB,WAAW,EAAE,SAAS;YACtB,MAAM;SACP,CAAC,CAAC;QACH,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,SAAS;YACtB,aAAa,EAAE,mBAAmB;SACnC,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { setMetadataDbSchemaVersion } from "@paroicms/internal-server-lib";
|
|
2
|
+
import { type } from "arktype";
|
|
3
|
+
import { mainDbSchemaName, mainDbSchemaVersion } from "./db-constants.js";
|
|
4
|
+
export async function migrateMainDb(cn, { fromVersion, logger }) {
|
|
5
|
+
const toVersion = mainDbSchemaVersion;
|
|
6
|
+
let currentVersion = fromVersion;
|
|
7
|
+
if (currentVersion === 6) {
|
|
8
|
+
await setMetadataDbSchemaVersion(cn, { dbSchemaName: mainDbSchemaName, value: 7 });
|
|
9
|
+
currentVersion = 7;
|
|
10
|
+
}
|
|
11
|
+
if (currentVersion === 7) {
|
|
12
|
+
await cn.raw(`create table PaOrderedLeaf (
|
|
13
|
+
leafId integer not null primary key references PaLeaf (id) on delete cascade,
|
|
14
|
+
orderNum integer not null
|
|
15
|
+
)`);
|
|
16
|
+
await cn.raw(`create table PaPartLeaf (
|
|
17
|
+
leafId integer not null primary key references PaLeaf (id) on delete cascade,
|
|
18
|
+
listName varchar(100) not null,
|
|
19
|
+
documentLeafId integer not null references PaLeaf (id)
|
|
20
|
+
)`);
|
|
21
|
+
await cn.raw(`insert into PaOrderedLeaf (leafId, orderNum)
|
|
22
|
+
select leafId, itemNum from PaLeafItem`);
|
|
23
|
+
await cn.raw(`insert into PaPartLeaf (leafId, listName, documentLeafId)
|
|
24
|
+
select i.leafId, i.listName, l.parentId
|
|
25
|
+
from PaLeafItem i
|
|
26
|
+
inner join PaLeaf l on l.id = i.leafId`);
|
|
27
|
+
await cn.raw("drop table PaLeafItem");
|
|
28
|
+
await cn.raw("alter table PaTermFlag rename column flaggedId to labeledId");
|
|
29
|
+
await cn.raw("alter table PaTermFlag rename to PaLabeling");
|
|
30
|
+
await setMetadataDbSchemaVersion(cn, { dbSchemaName: mainDbSchemaName, value: 8 });
|
|
31
|
+
currentVersion = 8;
|
|
32
|
+
}
|
|
33
|
+
if (currentVersion === 8) {
|
|
34
|
+
await cn.raw("alter table PaLeaf rename column leafType to typeName");
|
|
35
|
+
await setMetadataDbSchemaVersion(cn, { dbSchemaName: mainDbSchemaName, value: 9 });
|
|
36
|
+
currentVersion = 9;
|
|
37
|
+
}
|
|
38
|
+
if (currentVersion === 9) {
|
|
39
|
+
await cn.raw("alter table PaLeaf rename to PaNode");
|
|
40
|
+
await cn.raw("drop index if exists PaLeaf_typeName_idx");
|
|
41
|
+
await cn.raw("drop index if exists PaLeaf_leafType_idx");
|
|
42
|
+
await cn.raw("create index PaNode_typeName_idx on PaNode (typeName)");
|
|
43
|
+
await cn.raw("alter table PaOrderedLeaf rename to PaOrderedNode");
|
|
44
|
+
await cn.raw("alter table PaOrderedNode rename column leafId to nodeId");
|
|
45
|
+
await cn.raw("alter table PaPartLeaf rename to PaPartNode");
|
|
46
|
+
await cn.raw("alter table PaPartNode rename column leafId to nodeId");
|
|
47
|
+
await cn.raw("alter table PaPartNode rename column documentLeafId to documentNodeId");
|
|
48
|
+
await cn.raw("drop index if exists PaPartLeaf_listName_idx");
|
|
49
|
+
await cn.raw("create index PaPartNode_listName_idx on PaPartNode (listName)");
|
|
50
|
+
await cn.raw("alter table PaSection rename to PaNodel");
|
|
51
|
+
await cn.raw("alter table PaNodel rename column leafId to nodeId");
|
|
52
|
+
await cn.raw("alter table PaNodel rename column lang to language");
|
|
53
|
+
await cn.raw("alter table PaDocument rename column leafId to nodeId");
|
|
54
|
+
await cn.raw("alter table PaDocument rename column lang to language");
|
|
55
|
+
await cn.raw("alter table PaFieldVarchar rename column leafId to nodeId");
|
|
56
|
+
await cn.raw("alter table PaFieldVarchar rename column lang to language");
|
|
57
|
+
await cn.raw("alter table PaFieldText rename column leafId to nodeId");
|
|
58
|
+
await cn.raw("alter table PaFieldText rename column lang to language");
|
|
59
|
+
await cn.raw("update PaPartNode set listName = '_subParts' where listName = 'subParts'");
|
|
60
|
+
await setMetadataDbSchemaVersion(cn, { dbSchemaName: mainDbSchemaName, value: 10 });
|
|
61
|
+
currentVersion = 10;
|
|
62
|
+
}
|
|
63
|
+
if (currentVersion === 10) {
|
|
64
|
+
await cn.raw(`create table PaFieldLabeling (
|
|
65
|
+
field varchar(100) not null,
|
|
66
|
+
nodeId integer not null references PaNode (id) on delete cascade,
|
|
67
|
+
termId integer not null references PaNode (id),
|
|
68
|
+
orderNum integer,
|
|
69
|
+
primary key (field, nodeId, termId)
|
|
70
|
+
)`);
|
|
71
|
+
await cn.raw(`insert into PaFieldLabeling (field, nodeId, termId)
|
|
72
|
+
select tax.typeName, PaLabeling.labeledId, PaLabeling.termId
|
|
73
|
+
from PaLabeling
|
|
74
|
+
join PaNode term on term.id = PaLabeling.termId
|
|
75
|
+
join PaNode tax on tax.id = term.parentId`);
|
|
76
|
+
await cn.raw("drop table PaLabeling");
|
|
77
|
+
await cn.raw(`update PaFieldText set dataType = 'json' where dataType = 'quillDelta'`);
|
|
78
|
+
await setMetadataDbSchemaVersion(cn, { dbSchemaName: mainDbSchemaName, value: 11 });
|
|
79
|
+
currentVersion = 11;
|
|
80
|
+
}
|
|
81
|
+
if (currentVersion === 11) {
|
|
82
|
+
await migrateAllQuillDeltaFieldsFrom11to12(cn, logger);
|
|
83
|
+
await setMetadataDbSchemaVersion(cn, { dbSchemaName: mainDbSchemaName, value: 12 });
|
|
84
|
+
currentVersion = 12;
|
|
85
|
+
}
|
|
86
|
+
if (currentVersion === 12) {
|
|
87
|
+
await cn.raw("alter table PaNodel rename to PaLNode");
|
|
88
|
+
await setMetadataDbSchemaVersion(cn, { dbSchemaName: mainDbSchemaName, value: 13 });
|
|
89
|
+
currentVersion = 13;
|
|
90
|
+
}
|
|
91
|
+
if (currentVersion === 13) {
|
|
92
|
+
await cn.raw("update PaFieldVarchar set field = 'buttonLabel' where field = 'shortTitle'");
|
|
93
|
+
await setMetadataDbSchemaVersion(cn, { dbSchemaName: mainDbSchemaName, value: 14 });
|
|
94
|
+
currentVersion = 14;
|
|
95
|
+
}
|
|
96
|
+
if (currentVersion !== toVersion) {
|
|
97
|
+
throw new Error(`version of ${mainDbSchemaName} database should be '${toVersion}', but is '${currentVersion}'`);
|
|
98
|
+
}
|
|
99
|
+
logger.info(`${mainDbSchemaName} database was migrated from ${fromVersion} to ${currentVersion}`);
|
|
100
|
+
}
|
|
101
|
+
async function migrateAllQuillDeltaFieldsFrom11to12(cn, logger) {
|
|
102
|
+
let count = 0;
|
|
103
|
+
const rows = await cn("PaFieldText")
|
|
104
|
+
.select("field", "nodeId", "language", "val")
|
|
105
|
+
.where("dataType", "json")
|
|
106
|
+
.whereNotNull("val");
|
|
107
|
+
const RowAT = type({
|
|
108
|
+
field: "string",
|
|
109
|
+
nodeId: "number",
|
|
110
|
+
language: "string",
|
|
111
|
+
val: "string",
|
|
112
|
+
"+": "reject",
|
|
113
|
+
}).pipe((r) => ({
|
|
114
|
+
...r,
|
|
115
|
+
nodeId: String(r.nodeId),
|
|
116
|
+
}));
|
|
117
|
+
for (const row of rows) {
|
|
118
|
+
let fieldValue;
|
|
119
|
+
try {
|
|
120
|
+
const validatedRow = RowAT.assert(row);
|
|
121
|
+
fieldValue = {
|
|
122
|
+
...validatedRow,
|
|
123
|
+
val: JSON.parse(validatedRow.val),
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
logger.error(`Error parsing JSON for field "${row.field}" on nodeId ${row.nodeId} in language "${row.language}"`, error);
|
|
128
|
+
continue;
|
|
129
|
+
}
|
|
130
|
+
const newVal = migrateQuillDeltaFrom11to12(fieldValue.val, logger);
|
|
131
|
+
if (newVal) {
|
|
132
|
+
await cn("PaFieldText")
|
|
133
|
+
.update({ val: JSON.stringify(newVal) })
|
|
134
|
+
.where({
|
|
135
|
+
field: fieldValue.field,
|
|
136
|
+
nodeId: fieldValue.nodeId,
|
|
137
|
+
language: fieldValue.language,
|
|
138
|
+
});
|
|
139
|
+
++count;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
if (count > 0) {
|
|
143
|
+
logger.info(`Migrated ${count} quill delta field(s) in ${mainDbSchemaName} database`);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
function migrateQuillDeltaFrom11to12(delta, logger) {
|
|
147
|
+
if (!delta?.ops || !Array.isArray(delta.ops))
|
|
148
|
+
return;
|
|
149
|
+
const { ops } = delta;
|
|
150
|
+
let modified = false;
|
|
151
|
+
const newOps = ops
|
|
152
|
+
.map((op) => {
|
|
153
|
+
if (!op.insert || typeof op.insert !== "object")
|
|
154
|
+
return op;
|
|
155
|
+
if (Object.keys(op.insert).length !== 1)
|
|
156
|
+
return op;
|
|
157
|
+
if (!op.insert.img || typeof op.insert.img !== "object")
|
|
158
|
+
return op;
|
|
159
|
+
const { uid, align, variant, zoom, href } = op.insert.img;
|
|
160
|
+
if (!uid || !align || !variant) {
|
|
161
|
+
logger.warn(`Quill Delta migration, remove incomplete image: ${JSON.stringify(op.insert)}`);
|
|
162
|
+
modified = true;
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
const { insert, ...opRest } = op;
|
|
166
|
+
modified = true;
|
|
167
|
+
return {
|
|
168
|
+
insert: {
|
|
169
|
+
media: {
|
|
170
|
+
mediaId: uid,
|
|
171
|
+
resizeRule: variant,
|
|
172
|
+
align,
|
|
173
|
+
zoomable: zoom === "none" ? undefined : true,
|
|
174
|
+
href: href,
|
|
175
|
+
},
|
|
176
|
+
},
|
|
177
|
+
...opRest,
|
|
178
|
+
};
|
|
179
|
+
})
|
|
180
|
+
.filter(Boolean);
|
|
181
|
+
if (modified) {
|
|
182
|
+
return { ops: newOps };
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=ddl-migration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ddl-migration.js","sourceRoot":"","sources":["../../../src/connector/db-init/ddl-migration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAE3E,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE1E,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,EAAQ,EACR,EAAE,WAAW,EAAE,MAAM,EAA8C;IAEnE,MAAM,SAAS,GAAG,mBAAmB,CAAC;IACtC,IAAI,cAAc,GAAG,WAAW,CAAC;IAEjC,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;QAEzB,MAAM,0BAA0B,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACnF,cAAc,GAAG,CAAC,CAAC;IACrB,CAAC;IAED,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,EAAE,CAAC,GAAG,CAAC;;;EAGf,CAAC,CAAC;QAEA,MAAM,EAAE,CAAC,GAAG,CAAC;;;;EAIf,CAAC,CAAC;QAEA,MAAM,EAAE,CAAC,GAAG,CAAC;uCACsB,CAAC,CAAC;QAErC,MAAM,EAAE,CAAC,GAAG,CAAC;;;uCAGsB,CAAC,CAAC;QAErC,MAAM,EAAE,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QAEtC,MAAM,EAAE,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;QAC5E,MAAM,EAAE,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;QAE5D,MAAM,0BAA0B,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACnF,cAAc,GAAG,CAAC,CAAC;IACrB,CAAC;IAED,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,EAAE,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;QAEtE,MAAM,0BAA0B,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACnF,cAAc,GAAG,CAAC,CAAC;IACrB,CAAC;IAED,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,EAAE,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;QAEpD,MAAM,EAAE,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;QACzD,MAAM,EAAE,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;QACzD,MAAM,EAAE,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;QAEtE,MAAM,EAAE,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;QAClE,MAAM,EAAE,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;QAEzE,MAAM,EAAE,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;QAC5D,MAAM,EAAE,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;QACtE,MAAM,EAAE,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;QAEtF,MAAM,EAAE,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;QAC7D,MAAM,EAAE,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;QAE9E,MAAM,EAAE,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QACxD,MAAM,EAAE,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;QACnE,MAAM,EAAE,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;QAEnE,MAAM,EAAE,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;QACtE,MAAM,EAAE,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;QAEtE,MAAM,EAAE,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;QAC1E,MAAM,EAAE,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;QAE1E,MAAM,EAAE,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;QACvE,MAAM,EAAE,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;QAEvE,MAAM,EAAE,CAAC,GAAG,CAAC,0EAA0E,CAAC,CAAC;QAEzF,MAAM,0BAA0B,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,gBAAgB,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACpF,cAAc,GAAG,EAAE,CAAC;IACtB,CAAC;IAED,IAAI,cAAc,KAAK,EAAE,EAAE,CAAC;QAE1B,MAAM,EAAE,CAAC,GAAG,CAAC;;;;;;EAMf,CAAC,CAAC;QAGA,MAAM,EAAE,CAAC,GAAG,CAAC;;;;0CAIyB,CAAC,CAAC;QAGxC,MAAM,EAAE,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QAGtC,MAAM,EAAE,CAAC,GAAG,CAAC,wEAAwE,CAAC,CAAC;QAEvF,MAAM,0BAA0B,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,gBAAgB,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACpF,cAAc,GAAG,EAAE,CAAC;IACtB,CAAC;IAED,IAAI,cAAc,KAAK,EAAE,EAAE,CAAC;QAC1B,MAAM,oCAAoC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACvD,MAAM,0BAA0B,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,gBAAgB,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACpF,cAAc,GAAG,EAAE,CAAC;IACtB,CAAC;IAED,IAAI,cAAc,KAAK,EAAE,EAAE,CAAC;QAC1B,MAAM,EAAE,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QACtD,MAAM,0BAA0B,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,gBAAgB,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACpF,cAAc,GAAG,EAAE,CAAC;IACtB,CAAC;IAED,IAAI,cAAc,KAAK,EAAE,EAAE,CAAC;QAC1B,MAAM,EAAE,CAAC,GAAG,CAAC,4EAA4E,CAAC,CAAC;QAC3F,MAAM,0BAA0B,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,gBAAgB,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACpF,cAAc,GAAG,EAAE,CAAC;IACtB,CAAC;IAED,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CACb,cAAc,gBAAgB,wBAAwB,SAAS,cAAc,cAAc,GAAG,CAC/F,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,GAAG,gBAAgB,+BAA+B,WAAW,OAAO,cAAc,EAAE,CAAC,CAAC;AACpG,CAAC;AAED,KAAK,UAAU,oCAAoC,CAAC,EAAQ,EAAE,MAAiB;IAC7E,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC;SACjC,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC;SAC5C,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC;SACzB,YAAY,CAAC,KAAK,CAAC,CAAC;IAEvB,MAAM,KAAK,GAAG,IAAI,CAAC;QACjB,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,QAAQ;QAClB,GAAG,EAAE,QAAQ;QACb,GAAG,EAAE,QAAQ;KACd,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACd,GAAG,CAAC;QACJ,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;KACzB,CAAC,CAAC,CAAC;IAEJ,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,UAA2B,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvC,UAAU,GAAG;gBACX,GAAG,YAAY;gBACf,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC;aAClC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CACV,iCAAiC,GAAG,CAAC,KAAK,eAAe,GAAG,CAAC,MAAM,iBAAiB,GAAG,CAAC,QAAQ,GAAG,EACnG,KAAK,CACN,CAAC;YACF,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,2BAA2B,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACnE,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,EAAE,CAAC,aAAa,CAAC;iBACpB,MAAM,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;iBACvC,KAAK,CAAC;gBACL,KAAK,EAAE,UAAU,CAAC,KAAK;gBACvB,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,QAAQ,EAAE,UAAU,CAAC,QAAQ;aAC9B,CAAC,CAAC;YACL,EAAE,KAAK,CAAC;QACV,CAAC;IACH,CAAC;IAED,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,MAAM,CAAC,IAAI,CAAC,YAAY,KAAK,4BAA4B,gBAAgB,WAAW,CAAC,CAAC;IACxF,CAAC;AACH,CAAC;AASD,SAAS,2BAA2B,CAAC,KAAU,EAAE,MAAiB;IAChE,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;QAAE,OAAO;IACrD,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;IACtB,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,MAAM,MAAM,GAAG,GAAG;SACf,GAAG,CAAC,CAAC,EAAO,EAAE,EAAE;QACf,IAAI,CAAC,EAAE,CAAC,MAAM,IAAI,OAAO,EAAE,CAAC,MAAM,KAAK,QAAQ;YAAE,OAAO,EAAE,CAAC;QAC3D,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACnD,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,IAAI,OAAO,EAAE,CAAC,MAAM,CAAC,GAAG,KAAK,QAAQ;YAAE,OAAO,EAAE,CAAC;QAEnE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;QAE1D,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC,mDAAmD,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC5F,QAAQ,GAAG,IAAI,CAAC;YAChB,OAAO;QACT,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,CAAC;QAEjC,QAAQ,GAAG,IAAI,CAAC;QAChB,OAAO;YACL,MAAM,EAAE;gBACN,KAAK,EAAE;oBACL,OAAO,EAAE,GAAG;oBACZ,UAAU,EAAE,OAAO;oBACnB,KAAK;oBACL,QAAQ,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;oBAC5C,IAAI,EAAE,IAAI;iBACX;aACF;YACD,GAAG,MAAM;SACV,CAAC;IACJ,CAAC,CAAC;SACD,MAAM,CAAC,OAAO,CAAC,CAAC;IAEnB,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;IACzB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ScSiteSchema } from "@paroicms/public-anywhere-lib";
|
|
2
|
+
import type { Knex } from "knex";
|
|
3
|
+
import type { NodeRow } from "../row-types.js";
|
|
4
|
+
export declare function createNode(siteSchema: ScSiteSchema, cn: Knex | Knex.Transaction, { parentId, depth, typeName, }: {
|
|
5
|
+
parentId?: string;
|
|
6
|
+
depth?: number;
|
|
7
|
+
typeName: string;
|
|
8
|
+
}): Promise<NodeRow>;
|
|
9
|
+
export declare function isTypeNameChildOf(siteSchema: ScSiteSchema, { parentTypeName, typeName }: {
|
|
10
|
+
parentTypeName: string;
|
|
11
|
+
typeName: string;
|
|
12
|
+
}): boolean;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { getNodeTypeByName } from "@paroicms/internal-anywhere-lib";
|
|
2
|
+
import { makeDefaultRelativeId, parseSqliteDateTime } from "@paroicms/internal-server-lib";
|
|
3
|
+
import { type } from "arktype";
|
|
4
|
+
const CreateNodeParentNodeAT = type({
|
|
5
|
+
typeName: "string",
|
|
6
|
+
depth: "number",
|
|
7
|
+
"+": "reject",
|
|
8
|
+
});
|
|
9
|
+
const CreateNodeInsertedAT = type({
|
|
10
|
+
id: "number",
|
|
11
|
+
publishDate: "string|number|Date",
|
|
12
|
+
"+": "reject",
|
|
13
|
+
}).pipe((r) => ({
|
|
14
|
+
id: String(r.id),
|
|
15
|
+
publishDate: parseSqliteDateTime(r.publishDate),
|
|
16
|
+
}));
|
|
17
|
+
export async function createNode(siteSchema, cn, { parentId, depth, typeName, }) {
|
|
18
|
+
const nodeType = getNodeTypeByName(siteSchema, typeName);
|
|
19
|
+
const documentType = nodeType.kind === "document" ? nodeType : undefined;
|
|
20
|
+
let nodeDepth = depth;
|
|
21
|
+
if (nodeDepth === undefined) {
|
|
22
|
+
if (!parentId)
|
|
23
|
+
throw new Error("parentId not provided");
|
|
24
|
+
const row = await cn("PaNode").select("typeName", "depth").where("id", parentId).first();
|
|
25
|
+
if (!row)
|
|
26
|
+
throw new Error(`cannot find parent node '${parentId}'`);
|
|
27
|
+
const parentNode = CreateNodeParentNodeAT.assert(row);
|
|
28
|
+
nodeDepth = parentNode.depth + 1;
|
|
29
|
+
if (!isTypeNameChildOf(siteSchema, { typeName, parentTypeName: parentNode.typeName })) {
|
|
30
|
+
throw new Error(`invalid parentTypeName '${parentNode.typeName}'`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
const makeRelativeId = provideRelativeIdGenerator(documentType && documentType.documentKind === "regular"
|
|
34
|
+
? documentType.relativeIdGenerator
|
|
35
|
+
: undefined);
|
|
36
|
+
let attempt = 0;
|
|
37
|
+
while (true) {
|
|
38
|
+
const newRelativeId = makeRelativeId();
|
|
39
|
+
try {
|
|
40
|
+
const [inserted] = await cn("PaNode")
|
|
41
|
+
.insert({
|
|
42
|
+
parentId,
|
|
43
|
+
relativeId: newRelativeId,
|
|
44
|
+
depth: nodeDepth,
|
|
45
|
+
typeName,
|
|
46
|
+
publishDate: cn.fn.now(),
|
|
47
|
+
})
|
|
48
|
+
.returning(["id", "publishDate"]);
|
|
49
|
+
const { id: newId, publishDate } = CreateNodeInsertedAT.assert(inserted);
|
|
50
|
+
return {
|
|
51
|
+
id: newId,
|
|
52
|
+
relativeId: newRelativeId,
|
|
53
|
+
depth: nodeDepth,
|
|
54
|
+
typeName,
|
|
55
|
+
publishDate,
|
|
56
|
+
parentId,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
catch (err) {
|
|
60
|
+
if (++attempt === 20)
|
|
61
|
+
throw err;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
export function isTypeNameChildOf(siteSchema, { parentTypeName, typeName }) {
|
|
66
|
+
const parentType = getNodeTypeByName(siteSchema, parentTypeName);
|
|
67
|
+
if (parentType.kind === "site") {
|
|
68
|
+
return typeName === "home";
|
|
69
|
+
}
|
|
70
|
+
if (parentType.kind === "document") {
|
|
71
|
+
const childType = getNodeTypeByName(siteSchema, typeName);
|
|
72
|
+
if (childType.kind === "document") {
|
|
73
|
+
return ((parentType.regularChildren?.includes(childType.typeName) ||
|
|
74
|
+
parentType.routingChildren?.includes(childType.typeName)) ??
|
|
75
|
+
false);
|
|
76
|
+
}
|
|
77
|
+
for (const listType of parentType.lists ?? []) {
|
|
78
|
+
if (listType.parts.includes(typeName))
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
if (parentType.kind === "part") {
|
|
83
|
+
if (parentType.list?.parts.includes(typeName))
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
function provideRelativeIdGenerator(rim) {
|
|
89
|
+
const makerName = rim?.[0] ?? "default";
|
|
90
|
+
if (makerName === "default") {
|
|
91
|
+
const size = rim ? Number(rim[1]) : undefined;
|
|
92
|
+
return () => makeDefaultRelativeId({ size });
|
|
93
|
+
}
|
|
94
|
+
throw new Error(`Invalid relativeId maker name '${makerName}'`);
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=init-node-queries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init-node-queries.js","sourceRoot":"","sources":["../../../src/connector/db-init/init-node-queries.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { getRoutingDocumentTypeByName } from "@paroicms/internal-anywhere-lib";
|
|
2
|
+
import { encodeLNodeId } from "@paroicms/public-anywhere-lib";
|
|
3
|
+
import { type } from "arktype";
|
|
4
|
+
export async function loadRoutingDocuments(cn, siteSchema) {
|
|
5
|
+
const siteNodeId = await loadSiteNodeId(cn);
|
|
6
|
+
if (siteNodeId === undefined)
|
|
7
|
+
throw new Error("Missing siteNodeId");
|
|
8
|
+
const { home: routingIds } = await loadChildRoutingIds(cn, siteSchema, siteNodeId, [
|
|
9
|
+
siteSchema.nodeTypes.home,
|
|
10
|
+
]);
|
|
11
|
+
return {
|
|
12
|
+
siteNodeId,
|
|
13
|
+
homeIds: routingIds,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
const LoadSiteNodeIdAT = type({
|
|
17
|
+
id: "number",
|
|
18
|
+
"+": "reject",
|
|
19
|
+
}).pipe((r) => ({
|
|
20
|
+
id: String(r.id),
|
|
21
|
+
}));
|
|
22
|
+
async function loadSiteNodeId(cn) {
|
|
23
|
+
const rows = await cn("PaNode")
|
|
24
|
+
.select("id")
|
|
25
|
+
.where("depth", -1)
|
|
26
|
+
.andWhere("typeName", "_site");
|
|
27
|
+
if (rows.length === 0)
|
|
28
|
+
return;
|
|
29
|
+
if (rows.length !== 1)
|
|
30
|
+
throw new Error(`it should not exist '${rows.length}' site nodes`);
|
|
31
|
+
const [row] = rows;
|
|
32
|
+
return LoadSiteNodeIdAT.assert(row).id;
|
|
33
|
+
}
|
|
34
|
+
const LoadChildRoutingIdsAT = type({
|
|
35
|
+
nodeId: "number",
|
|
36
|
+
language: "string",
|
|
37
|
+
typeName: "string",
|
|
38
|
+
"+": "reject",
|
|
39
|
+
}).pipe((r) => ({
|
|
40
|
+
nodeId: String(r.nodeId),
|
|
41
|
+
language: r.language,
|
|
42
|
+
typeName: r.typeName,
|
|
43
|
+
}));
|
|
44
|
+
async function loadChildRoutingIds(cn, siteSchema, parentNodeId, childTypes) {
|
|
45
|
+
const rows = await cn("PaLNode as s")
|
|
46
|
+
.select("s.nodeId", "s.language", "l.typeName")
|
|
47
|
+
.innerJoin("PaNode as l", "l.id", "s.nodeId")
|
|
48
|
+
.where("l.parentId", parentNodeId)
|
|
49
|
+
.whereIn("l.typeName", childTypes.map((t) => t.typeName))
|
|
50
|
+
.whereIn("s.language", siteSchema.languages);
|
|
51
|
+
const formattedRows = rows.map((row) => LoadChildRoutingIdsAT.assert(row));
|
|
52
|
+
const map = new Map();
|
|
53
|
+
for (const row of formattedRows) {
|
|
54
|
+
let ids = map.get(row.typeName);
|
|
55
|
+
if (!ids) {
|
|
56
|
+
ids = {
|
|
57
|
+
nodeId: row.nodeId,
|
|
58
|
+
typeName: row.typeName,
|
|
59
|
+
lNodeIds: {},
|
|
60
|
+
};
|
|
61
|
+
map.set(row.typeName, ids);
|
|
62
|
+
}
|
|
63
|
+
ids.lNodeIds[row.language] = encodeLNodeId(row);
|
|
64
|
+
}
|
|
65
|
+
for (const childType of childTypes) {
|
|
66
|
+
const ids = map.get(childType.typeName);
|
|
67
|
+
if (!ids) {
|
|
68
|
+
throw new Error(`missing document-type '${childType.typeName}' in the database, for parent '${parentNodeId}'`);
|
|
69
|
+
}
|
|
70
|
+
const languages = Object.keys(ids.lNodeIds);
|
|
71
|
+
if (languages.length !== siteSchema.languages.length) {
|
|
72
|
+
throw new Error(`missing lNode(s) for '${childType.typeName}' in the database, found languages '${languages.join(",")}'`);
|
|
73
|
+
}
|
|
74
|
+
const subTypes = routingChildrenOf(siteSchema, childType);
|
|
75
|
+
if (subTypes.length > 0) {
|
|
76
|
+
ids.children = await loadChildRoutingIds(cn, siteSchema, ids.nodeId, subTypes);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return Object.fromEntries(map);
|
|
80
|
+
}
|
|
81
|
+
function routingChildrenOf(siteSchema, documentType) {
|
|
82
|
+
const typeNames = documentType.routingChildren ?? [];
|
|
83
|
+
return typeNames.map((typeName) => getRoutingDocumentTypeByName(siteSchema, typeName));
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=load-routing-documents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-routing-documents.js","sourceRoot":"","sources":["../../../src/connector/db-init/load-routing-documents.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ScSiteSchema } from "@paroicms/public-anywhere-lib";
|
|
2
|
+
import { type AppLogger } from "@paroicms/public-server-lib";
|
|
3
|
+
import type { Knex } from "knex";
|
|
4
|
+
export declare function populateRoutingDocuments(cn: Knex, siteSchema: ScSiteSchema, logger: AppLogger): Promise<void>;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { getRoutingDocumentTypeByName } from "@paroicms/internal-anywhere-lib";
|
|
2
|
+
import { createSimpleTranslator, } from "@paroicms/public-server-lib";
|
|
3
|
+
import { mainDbSchemaName } from "./db-constants.js";
|
|
4
|
+
import { createNode } from "./init-node-queries.js";
|
|
5
|
+
export async function populateRoutingDocuments(cn, siteSchema, logger) {
|
|
6
|
+
logger.info(`Populate '${mainDbSchemaName}' database with initial data…`);
|
|
7
|
+
const schemaI18n = createSimpleTranslator({ labels: siteSchema.l10n, logger });
|
|
8
|
+
await populateInitialData(cn, siteSchema, schemaI18n);
|
|
9
|
+
}
|
|
10
|
+
async function populateInitialData(cn, siteSchema, schemaI18n) {
|
|
11
|
+
const homeNodeId = await cn.transaction(async (tx) => {
|
|
12
|
+
const siteNode = await createNode(siteSchema, tx, {
|
|
13
|
+
depth: -1,
|
|
14
|
+
typeName: "_site",
|
|
15
|
+
});
|
|
16
|
+
const documentType = siteSchema.nodeTypes.home;
|
|
17
|
+
const homeNode = await createNode(siteSchema, tx, {
|
|
18
|
+
depth: 0,
|
|
19
|
+
typeName: documentType.typeName,
|
|
20
|
+
parentId: siteNode.id,
|
|
21
|
+
});
|
|
22
|
+
const makeTitle = (language) => schemaI18n.translate({
|
|
23
|
+
key: `nodeTypes.${documentType.typeName}.label`,
|
|
24
|
+
language,
|
|
25
|
+
defaultValue: documentType.typeName,
|
|
26
|
+
});
|
|
27
|
+
await populateRoutingDocumentLNodes(tx, {
|
|
28
|
+
nodeId: homeNode.id,
|
|
29
|
+
languages: siteSchema.languages,
|
|
30
|
+
withDocument: !documentType.redirectTo,
|
|
31
|
+
makeTitle,
|
|
32
|
+
});
|
|
33
|
+
await populateChildRoutingDocuments(tx, siteSchema, documentType, homeNode.id, 1, schemaI18n);
|
|
34
|
+
return homeNode.id;
|
|
35
|
+
});
|
|
36
|
+
return homeNodeId;
|
|
37
|
+
}
|
|
38
|
+
async function populateChildRoutingDocuments(cn, siteSchema, parentType, parentNodeId, childDepth, schemaI18n) {
|
|
39
|
+
for (const typeName of parentType.routingChildren ?? []) {
|
|
40
|
+
const documentType = getRoutingDocumentTypeByName(siteSchema, typeName);
|
|
41
|
+
const node = await createNode(siteSchema, cn, {
|
|
42
|
+
parentId: parentNodeId,
|
|
43
|
+
depth: childDepth,
|
|
44
|
+
typeName,
|
|
45
|
+
});
|
|
46
|
+
const makeTitle = (language) => schemaI18n.translate({
|
|
47
|
+
key: `nodeTypes.${documentType.typeName}.label`,
|
|
48
|
+
language,
|
|
49
|
+
defaultValue: documentType.typeName,
|
|
50
|
+
});
|
|
51
|
+
await populateRoutingDocumentLNodes(cn, {
|
|
52
|
+
nodeId: node.id,
|
|
53
|
+
languages: siteSchema.languages,
|
|
54
|
+
withDocument: !documentType.redirectTo,
|
|
55
|
+
makeTitle,
|
|
56
|
+
});
|
|
57
|
+
await populateChildRoutingDocuments(cn, siteSchema, documentType, node.id, childDepth + 1, schemaI18n);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
async function populateRoutingDocumentLNodes(cn, { nodeId, languages, withDocument, makeTitle, }) {
|
|
61
|
+
for (const language of languages) {
|
|
62
|
+
await cn("PaLNode").insert({ language, nodeId, ready: true });
|
|
63
|
+
if (withDocument) {
|
|
64
|
+
await cn("PaDocument").insert({ language, nodeId, title: makeTitle(language) });
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=populate-routing-documents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"populate-routing-documents.js","sourceRoot":"","sources":["../../../src/connector/db-init/populate-routing-documents.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { PublicSiteContext } from "./public-site-context-types.js";
|
|
2
|
+
export declare function initializeMediaStorage(siteContext: Pick<PublicSiteContext, "logger" | "dataDir">, options: {
|
|
3
|
+
canCreate?: boolean;
|
|
4
|
+
}): Promise<import("@paroicms/server-database-media-storage").MediaStorage>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { join } from "node:path";
|
|
2
|
+
import { createMediaStorage } from "@paroicms/server-database-media-storage";
|
|
3
|
+
export async function initializeMediaStorage(siteContext, options) {
|
|
4
|
+
const { logger, dataDir } = siteContext;
|
|
5
|
+
return await createMediaStorage({
|
|
6
|
+
canCreate: !!options.canCreate,
|
|
7
|
+
logger,
|
|
8
|
+
storage: {
|
|
9
|
+
type: "sqlite",
|
|
10
|
+
file: join(dataDir, "medias.sqlite"),
|
|
11
|
+
},
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=media-storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-storage.js","sourceRoot":"","sources":["../../src/connector/media-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAG7E,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,WAA0D,EAC1D,OAAgC;IAEhC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC;IACxC,OAAO,MAAM,kBAAkB,CAAC;QAC9B,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS;QAC9B,MAAM;QACN,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC;SACrC;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { AppLogger, JtPluginRef, PluginStaticConfigurations, RegisteredSite } from "@paroicms/public-server-lib";
|
|
2
|
+
import type { InitializingSitePlugin } from "./plugin-types.js";
|
|
3
|
+
export declare function initialiseSitePlugins({ logger, regSite, pluginStaticConfigurations, pluginNamesOrRefs, }: {
|
|
4
|
+
logger: AppLogger;
|
|
5
|
+
regSite: RegisteredSite;
|
|
6
|
+
pluginStaticConfigurations: PluginStaticConfigurations;
|
|
7
|
+
pluginNamesOrRefs: (string | JtPluginRef)[] | undefined;
|
|
8
|
+
}): Promise<InitializingSitePlugin[]>;
|