UNPKG

@lucidcms/core

Version:

The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.

1 lines 2.3 kB
{"version":3,"file":"build-runtime-schema.mjs","names":[],"sources":["../../../../../src/libs/collection/schema/runtime/build-runtime-schema.ts"],"sourcesContent":["import type { CollectionSchema, CollectionSchemaTable } from \"../types.js\";\nimport type { SchemaConfigDiff } from \"./diff-snapshot-vs-config.js\";\n\n/**\n * Builds a runtime-safe schema by removing additive config changes that are not\n * yet present in the persisted migration snapshot.\n */\nconst buildRuntimeSchema = (\n\tlocalSchema: CollectionSchema,\n\tdiff: SchemaConfigDiff,\n): CollectionSchema => {\n\tconst filteredTables: CollectionSchemaTable[] = [];\n\n\tfor (const table of localSchema.tables) {\n\t\tif (diff.missingTableNames.has(table.name)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst missingColumns = diff.missingColumnsByTable.get(table.name);\n\t\tconst missingIndexes = diff.missingIndexesByTable.get(table.name);\n\t\tif (\n\t\t\t(!missingColumns || missingColumns.size === 0) &&\n\t\t\t(!missingIndexes || missingIndexes.size === 0)\n\t\t) {\n\t\t\tfilteredTables.push(table);\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst filteredColumns = missingColumns\n\t\t\t? table.columns.filter((column) => !missingColumns.has(column.name))\n\t\t\t: table.columns;\n\t\tif (filteredColumns.length === 0) continue;\n\n\t\tconst filteredIndexes = missingIndexes\n\t\t\t? (table.indexes ?? []).filter((index) => !missingIndexes.has(index.name))\n\t\t\t: table.indexes;\n\n\t\tfilteredTables.push({\n\t\t\t...table,\n\t\t\tcolumns: filteredColumns,\n\t\t\tindexes: filteredIndexes,\n\t\t});\n\t}\n\n\treturn {\n\t\t...localSchema,\n\t\ttables: filteredTables,\n\t};\n};\n\nexport default buildRuntimeSchema;\n"],"mappings":"AAOA,MAAM,GACL,EACA,IACsB,CACtB,IAAM,EAA0C,CAAC,EAEjD,IAAK,IAAM,KAAS,EAAY,OAAQ,CACvC,GAAI,EAAK,kBAAkB,IAAI,EAAM,IAAI,EACxC,SAGD,IAAM,EAAiB,EAAK,sBAAsB,IAAI,EAAM,IAAI,EAC1D,EAAiB,EAAK,sBAAsB,IAAI,EAAM,IAAI,EAChE,IACE,CAAC,GAAkB,EAAe,OAAS,KAC3C,CAAC,GAAkB,EAAe,OAAS,GAC3C,CACD,EAAe,KAAK,CAAK,EACzB,QACD,CAEA,IAAM,EAAkB,EACrB,EAAM,QAAQ,OAAQ,GAAW,CAAC,EAAe,IAAI,EAAO,IAAI,CAAC,EACjE,EAAM,QACT,GAAI,EAAgB,SAAW,EAAG,SAElC,IAAM,EAAkB,GACpB,EAAM,SAAW,CAAC,EAAA,CAAG,OAAQ,GAAU,CAAC,EAAe,IAAI,EAAM,IAAI,CAAC,EACvE,EAAM,QAET,EAAe,KAAK,CACnB,GAAG,EACH,QAAS,EACT,QAAS,CACV,CAAC,CACF,CAEA,MAAO,CACN,GAAG,EACH,OAAQ,CACT,CACD"}