@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
1 lines • 4.71 kB
Source Map (JSON)
{"version":3,"file":"prime-runtime-schemas.mjs","names":[],"sources":["../../../../../src/libs/collection/schema/runtime/prime-runtime-schemas.ts"],"sourcesContent":["import type { ServiceFn } from \"../../../../utils/services/types.js\";\nimport { copy } from \"../../../i18n/index.js\";\nimport { CollectionMigrationsRepository } from \"../../../repositories/index.js\";\nimport inferSchema from \"../infer-schema.js\";\nimport buildRuntimeSchema from \"./build-runtime-schema.js\";\nimport diffSnapshotVsConfig from \"./diff-snapshot-vs-config.js\";\nimport { hasRuntimeSchema, setRuntimeSchema } from \"./runtime-schema-cache.js\";\n\n/**\n * Warms runtime schema cache entries for one or more collections.\n */\nconst primeRuntimeSchemas: ServiceFn<\n\t[\n\t\t{\n\t\t\tcollectionKeys?: string[];\n\t\t},\n\t],\n\tundefined\n> = async (context, data) => {\n\tconst CollectionMigrations = new CollectionMigrationsRepository(\n\t\tcontext.db.client,\n\t\tcontext.config.db,\n\t);\n\n\tconst keys =\n\t\tdata.collectionKeys ?? context.config.collections.map((c) => c.key);\n\tconst keyCacheStatus = await Promise.all(\n\t\tkeys.map(async (key) => {\n\t\t\treturn (await hasRuntimeSchema(context, key)) ? null : key;\n\t\t}),\n\t);\n\tconst nonCachedKeys = keyCacheStatus.filter(\n\t\t(key): key is string => key !== null,\n\t);\n\n\tif (nonCachedKeys.length === 0) {\n\t\treturn {\n\t\t\tdata: undefined,\n\t\t\terror: undefined,\n\t\t};\n\t}\n\n\tconst latestMigrationsRes =\n\t\tawait CollectionMigrations.selectLatestByCollectionKeysMap({\n\t\t\tcollectionKeys: nonCachedKeys,\n\t\t\tvalidation: {\n\t\t\t\tenabled: true,\n\t\t\t},\n\t\t});\n\tif (latestMigrationsRes.error) return latestMigrationsRes;\n\n\tconst latestMigrationsByCollection = new Map(\n\t\tlatestMigrationsRes.data.map((migration) => [\n\t\t\tmigration.collection_key,\n\t\t\tmigration,\n\t\t]),\n\t);\n\n\tfor (const collectionKey of nonCachedKeys) {\n\t\tconst collection = context.config.collections.find(\n\t\t\t(c) => c.key === collectionKey,\n\t\t);\n\t\tif (!collection) {\n\t\t\treturn {\n\t\t\t\tdata: undefined,\n\t\t\t\terror: {\n\t\t\t\t\tmessage: copy(\"server:core.collections.not.found.message\"),\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tconst localSchemaRes = inferSchema(collection, context.config.db);\n\t\tif (localSchemaRes.error) return localSchemaRes;\n\n\t\tconst latestMigration = latestMigrationsByCollection.get(collectionKey);\n\t\tif (!latestMigration) {\n\t\t\treturn {\n\t\t\t\tdata: undefined,\n\t\t\t\terror: {\n\t\t\t\t\ttype: \"basic\",\n\t\t\t\t\tname: copy(\"server:core.error.schema.migration.required.name\"),\n\t\t\t\t\tmessage: copy(\"server:core.error.schema.migration.required.message\"),\n\t\t\t\t\tstatus: 400,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tconst diff = diffSnapshotVsConfig(\n\t\t\tlatestMigration.collection_schema,\n\t\t\tlocalSchemaRes.data,\n\t\t);\n\n\t\tconst finalSchema = buildRuntimeSchema(localSchemaRes.data, diff);\n\n\t\ttry {\n\t\t\tawait setRuntimeSchema(context, collectionKey, finalSchema);\n\t\t} catch (error) {\n\t\t\treturn {\n\t\t\t\tdata: undefined,\n\t\t\t\terror: {\n\t\t\t\t\tmessage: copy(\"server:core.errors.unknown\", {\n\t\t\t\t\t\tdefaultMessage:\n\t\t\t\t\t\t\terror instanceof Error\n\t\t\t\t\t\t\t\t? error.message\n\t\t\t\t\t\t\t\t: \"An unknown error occurred\",\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t}\n\n\treturn {\n\t\tdata: undefined,\n\t\terror: undefined,\n\t};\n};\n\nexport default primeRuntimeSchemas;\n"],"mappings":"2TAWA,MAAM,EAOF,MAAO,EAAS,IAAS,CAC5B,IAAM,EAAuB,IAAI,EAChC,EAAQ,GAAG,OACX,EAAQ,OAAO,EAChB,EAEM,EACL,EAAK,gBAAkB,EAAQ,OAAO,YAAY,IAAK,GAAM,EAAE,GAAG,EAM7D,GAAgB,MALO,QAAQ,IACpC,EAAK,IAAI,KAAO,IACP,MAAM,EAAiB,EAAS,CAAG,EAAK,KAAO,CACvD,CACF,EAAA,CACqC,OACnC,GAAuB,IAAQ,IACjC,EAEA,GAAI,EAAc,SAAW,EAC5B,MAAO,CACN,KAAM,IAAA,GACN,MAAO,IAAA,EACR,EAGD,IAAM,EACL,MAAM,EAAqB,gCAAgC,CAC1D,eAAgB,EAChB,WAAY,CACX,QAAS,EACV,CACD,CAAC,EACF,GAAI,EAAoB,MAAO,OAAO,EAEtC,IAAM,EAA+B,IAAI,IACxC,EAAoB,KAAK,IAAK,GAAc,CAC3C,EAAU,eACV,CACD,CAAC,CACF,EAEA,IAAK,IAAM,KAAiB,EAAe,CAC1C,IAAM,EAAa,EAAQ,OAAO,YAAY,KAC5C,GAAM,EAAE,MAAQ,CAClB,EACA,GAAI,CAAC,EACJ,MAAO,CACN,KAAM,IAAA,GACN,MAAO,CACN,QAAS,EAAK,2CAA2C,CAC1D,CACD,EAGD,IAAM,EAAiB,EAAY,EAAY,EAAQ,OAAO,EAAE,EAChE,GAAI,EAAe,MAAO,OAAO,EAEjC,IAAM,EAAkB,EAA6B,IAAI,CAAa,EACtE,GAAI,CAAC,EACJ,MAAO,CACN,KAAM,IAAA,GACN,MAAO,CACN,KAAM,QACN,KAAM,EAAK,kDAAkD,EAC7D,QAAS,EAAK,qDAAqD,EACnE,OAAQ,GACT,CACD,EAGD,IAAM,EAAO,EACZ,EAAgB,kBAChB,EAAe,IAChB,EAEM,EAAc,EAAmB,EAAe,KAAM,CAAI,EAEhE,GAAI,CACH,MAAM,EAAiB,EAAS,EAAe,CAAW,CAC3D,OAAS,EAAO,CACf,MAAO,CACN,KAAM,IAAA,GACN,MAAO,CACN,QAAS,EAAK,6BAA8B,CAC3C,eACC,aAAiB,MACd,EAAM,QACN,2BACL,CAAC,CACF,CACD,CACD,CACD,CAEA,MAAO,CACN,KAAM,IAAA,GACN,MAAO,IAAA,EACR,CACD"}