@prisma-next/family-sql 0.14.0-dev.3 → 0.14.0-dev.31
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/dist/{control-adapter-Cmw9LvEP.d.mts → control-adapter-B2q9WN1V.d.mts} +13 -5
- package/dist/{control-adapter-Cmw9LvEP.d.mts.map → control-adapter-B2q9WN1V.d.mts.map} +1 -1
- package/dist/control-adapter.d.mts +1 -1
- package/dist/control.d.mts +2 -2
- package/dist/control.d.mts.map +1 -1
- package/dist/control.mjs +51 -12
- package/dist/control.mjs.map +1 -1
- package/dist/ir.d.mts +9 -6
- package/dist/ir.d.mts.map +1 -1
- package/dist/ir.mjs +1 -1
- package/dist/migration.d.mts +1 -1
- package/dist/schema-verify.d.mts +2 -2
- package/dist/schema-verify.mjs +1 -1
- package/dist/{sql-contract-serializer-BR2vC7Z-.mjs → sql-contract-serializer-CYtXg_zs.mjs} +17 -20
- package/dist/sql-contract-serializer-CYtXg_zs.mjs.map +1 -0
- package/dist/{types-kgstZ_Zd.d.mts → types-BxsFkHYv.d.mts} +4 -4
- package/dist/{types-kgstZ_Zd.d.mts.map → types-BxsFkHYv.d.mts.map} +1 -1
- package/dist/{verify-sql-schema-thU-jKpf.d.mts → verify-sql-schema-B8uEjw2s.d.mts} +2 -2
- package/dist/{verify-sql-schema-thU-jKpf.d.mts.map → verify-sql-schema-B8uEjw2s.d.mts.map} +1 -1
- package/dist/{verify-sql-schema-xT4udQLQ.mjs → verify-sql-schema-CEY7b78t.mjs} +28 -22
- package/dist/verify-sql-schema-CEY7b78t.mjs.map +1 -0
- package/package.json +21 -22
- package/src/core/control-adapter.ts +19 -2
- package/src/core/control-instance.ts +69 -4
- package/src/core/ir/sql-contract-serializer-base.ts +23 -55
- package/src/core/ir/sql-contract-serializer.ts +5 -7
- package/src/core/migrations/contract-to-schema-ir.ts +7 -5
- package/src/core/migrations/field-event-planner.ts +8 -3
- package/src/core/psl-contract-infer/sql-schema-ir-to-psl-ast.ts +2 -2
- package/src/core/schema-verify/verify-sql-schema.ts +16 -12
- package/dist/sql-contract-serializer-BR2vC7Z-.mjs.map +0 -1
- package/dist/test-utils.d.mts +0 -2
- package/dist/test-utils.mjs +0 -2
- package/dist/verify-sql-schema-xT4udQLQ.mjs.map +0 -1
- package/src/exports/test-utils.ts +0 -9
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { n as NativeTypeNormalizer, t as DefaultNormalizer } from "./verify-sql-schema-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { n as NativeTypeNormalizer, t as DefaultNormalizer } from "./verify-sql-schema-B8uEjw2s.mjs";
|
|
2
|
+
import { Contract, ContractMarkerRecord, LedgerEntryRecord } from "@prisma-next/contract/types";
|
|
3
|
+
import { ControlAdapterInstance, ControlStack, SchemaDiffIssue } from "@prisma-next/framework-components/control";
|
|
4
|
+
import { SqlControlDriverInstance, SqlStorage } from "@prisma-next/sql-contract/types";
|
|
5
5
|
import { AnyQueryAst, DdlNode, LoweredStatement, LowererContext, SqlExecuteRequest } from "@prisma-next/sql-relational-core/ast";
|
|
6
6
|
import { SqlSchemaIR } from "@prisma-next/sql-schema-ir/types";
|
|
7
7
|
|
|
@@ -134,6 +134,14 @@ interface SqlControlAdapter<TTarget extends string = string> extends ControlAdap
|
|
|
134
134
|
* before comparison with contract native types during schema verification.
|
|
135
135
|
*/
|
|
136
136
|
readonly normalizeNativeType?: NativeTypeNormalizer;
|
|
137
|
+
/**
|
|
138
|
+
* Optional hook for collecting target-specific diff issues during schema
|
|
139
|
+
* verification. Called after the relational SQL verification pass; returns
|
|
140
|
+
* generic `SchemaDiffIssue[]` (coordinate + outcome + message — no target
|
|
141
|
+
* naming) that are folded into `VerifyDatabaseSchemaResult.schema.schemaDiffIssues`
|
|
142
|
+
* and counted as failures when non-empty.
|
|
143
|
+
*/
|
|
144
|
+
collectSchemaDiffIssues?(contract: Contract<SqlStorage>, schema: SqlSchemaIR): readonly SchemaDiffIssue[];
|
|
137
145
|
/**
|
|
138
146
|
* Ordered DDL queries that bootstrap marker/ledger control tables for migration
|
|
139
147
|
* runners. Postgres includes `CREATE SCHEMA`; SQLite does not.
|
|
@@ -162,4 +170,4 @@ interface SqlControlAdapterDescriptor<TTarget extends string = string> {
|
|
|
162
170
|
}
|
|
163
171
|
//#endregion
|
|
164
172
|
export { SqlControlAdapterDescriptor as i, Lowerer as n, SqlControlAdapter as r, ExecuteRequestLowerer as t };
|
|
165
|
-
//# sourceMappingURL=control-adapter-
|
|
173
|
+
//# sourceMappingURL=control-adapter-B2q9WN1V.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control-adapter-
|
|
1
|
+
{"version":3,"file":"control-adapter-B2q9WN1V.d.mts","names":[],"sources":["../src/core/control-adapter.ts"],"mappings":";;;;;;;;;;AA4BA;;;;;UAAiB,OAAA;EACf,KAAA,CAAM,GAAA,EAAK,WAAA,GAAc,OAAA,EAAS,OAAA,EAAS,cAAA,YAA0B,gBAAA;AAAA;;;;;;;UAStD,qBAAA,SAA8B,OAAA;EAC7C,qBAAA,CACE,GAAA,EAAK,WAAA,GAAc,OAAA,EACnB,OAAA,GAAU,cAAA,YACT,OAAA,CAAQ,iBAAA;AAAA;AAb0E;AASvF;;;;;AATuF,UAsBtE,iBAAA,0CACP,sBAAA,QAA8B,OAAA,GACpC,qBAAA;EAXS;;;;;;;;;;;;;;;EA2BX,UAAA,CACE,MAAA,EAAQ,wBAAA,CAAyB,OAAA,GACjC,KAAA,WACC,OAAA,CAAQ,oBAAA;EArBI;;;;;;;EA8Bf,cAAA,CACE,MAAA,EAAQ,wBAAA,CAAyB,OAAA,IAChC,OAAA,CAAQ,WAAA,SAAoB,oBAAA;EADI;;;;EAOnC,UAAA,CACE,MAAA,EAAQ,wBAAA,CAAyB,OAAA,GACjC,KAAA,YACC,OAAA,UAAiB,iBAAA;EAFe;;;;;;EAUnC,YAAA,CACE,MAAA,EAAQ,wBAAA,CAAyB,OAAA,GACjC,KAAA,UACA,WAAA;IAAA,SACW,WAAA;IAAA,SACA,WAAA;IAAA,SACA,UAAA;EAAA,IAEV,OAAA;EA0BO;;;;;;EAlBV,UAAA,CACE,MAAA,EAAQ,wBAAA,CAAyB,OAAA,GACjC,KAAA,UACA,WAAA;IAAA,SACW,WAAA;IAAA,SACA,WAAA;IAAA,SACA,UAAA;EAAA,IAEV,OAAA;EA+EkB;;;;;;;EAtErB,YAAA,CACE,MAAA,EAAQ,wBAAA,CAAyB,OAAA,GACjC,KAAA,UACA,YAAA,UACA,WAAA;IAAA,SACW,WAAA;IAAA,SACA,WAAA;IAAA,SACA,UAAA;EAAA,IAEV,OAAA;EA1FmC;;;;;;EAkGtC,gBAAA,CACE,MAAA,EAAQ,wBAAA,CAAyB,OAAA,GACjC,KAAA,UACA,KAAA;IAAA,SACW,MAAA;IAAA,SACA,IAAA;IAAA,SACA,EAAA;IAAA,SACA,aAAA;IAAA,SACA,aAAA;IAAA,SACA,UAAA;EAAA,IAEV,OAAA;EA9EQ;;;;;;;;;;;;EA4FX,UAAA,CACE,MAAA,EAAQ,wBAAA,CAAyB,OAAA,GACjC,QAAA,YACA,MAAA,YACC,OAAA,CAAQ,WAAA;EA7ET;;;;;EAAA,SAoFO,gBAAA,GAAmB,iBAAA;EAtE5B;;;;;EAAA,SA6ES,mBAAA,GAAsB,oBAAA;EAxElB;;;;;;;EAiFb,uBAAA,EACE,QAAA,EAAU,QAAA,CAAS,UAAA,GACnB,MAAA,EAAQ,WAAA,YACE,eAAA;EAtEV;;;;EA4EF,4BAAA,aAAyC,OAAA;EA1EvC;;;;EAgFF,0BAAA,aAAuC,OAAA;AAAA;;;;;;;UASxB,2BAAA;EAzEb;;;;;;EAgFF,MAAA,CAAO,KAAA,EAAO,YAAA,QAAoB,OAAA,IAAW,iBAAA,CAAkB,OAAA;AAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as SqlControlAdapterDescriptor, n as Lowerer, r as SqlControlAdapter, t as ExecuteRequestLowerer } from "./control-adapter-
|
|
1
|
+
import { i as SqlControlAdapterDescriptor, n as Lowerer, r as SqlControlAdapter, t as ExecuteRequestLowerer } from "./control-adapter-B2q9WN1V.mjs";
|
|
2
2
|
export type { ExecuteRequestLowerer, Lowerer, SqlControlAdapter, SqlControlAdapterDescriptor };
|
package/dist/control.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { A as SqlPlannerResult, C as SqlMigrationRunnerResult, D as SqlPlannerConflictKind, E as SqlPlannerConflict, M as StorageTypePlanResult, N as SqlControlFamilyInstance, O as SqlPlannerConflictLocation, S as SqlMigrationRunnerFailure, T as SqlPlanTargetDetails, _ as SqlMigrationPlannerPlanOptions, a as FieldEvent, b as SqlMigrationRunnerExecuteCallbacks, c as SqlControlAdapterDescriptor, d as SqlMigrationPlan, f as SqlMigrationPlanContractInfo, g as SqlMigrationPlanner, h as SqlMigrationPlanOperationTarget, i as ExpandNativeTypeInput, j as SqlPlannerSuccessResult, k as SqlPlannerFailureResult, l as SqlControlExtensionDescriptor, m as SqlMigrationPlanOperationStep, n as CodecControlHooks, o as FieldEventContext, p as SqlMigrationPlanOperation, r as CreateSqlMigrationPlanOptions, s as ResolveIdentityValueInput, t as AnyRecord, u as SqlControlTargetDescriptor, v as SqlMigrationRunner, w as SqlMigrationRunnerSuccessValue, x as SqlMigrationRunnerExecuteOptions, y as SqlMigrationRunnerErrorCode } from "./types-
|
|
1
|
+
import { A as SqlPlannerResult, C as SqlMigrationRunnerResult, D as SqlPlannerConflictKind, E as SqlPlannerConflict, M as StorageTypePlanResult, N as SqlControlFamilyInstance, O as SqlPlannerConflictLocation, S as SqlMigrationRunnerFailure, T as SqlPlanTargetDetails, _ as SqlMigrationPlannerPlanOptions, a as FieldEvent, b as SqlMigrationRunnerExecuteCallbacks, c as SqlControlAdapterDescriptor, d as SqlMigrationPlan, f as SqlMigrationPlanContractInfo, g as SqlMigrationPlanner, h as SqlMigrationPlanOperationTarget, i as ExpandNativeTypeInput, j as SqlPlannerSuccessResult, k as SqlPlannerFailureResult, l as SqlControlExtensionDescriptor, m as SqlMigrationPlanOperationStep, n as CodecControlHooks, o as FieldEventContext, p as SqlMigrationPlanOperation, r as CreateSqlMigrationPlanOptions, s as ResolveIdentityValueInput, t as AnyRecord, u as SqlControlTargetDescriptor, v as SqlMigrationRunner, w as SqlMigrationRunnerSuccessValue, x as SqlMigrationRunnerExecuteOptions, y as SqlMigrationRunnerErrorCode } from "./types-BxsFkHYv.mjs";
|
|
2
|
+
import { ColumnDefault, Contract, ControlPolicy } from "@prisma-next/contract/types";
|
|
2
3
|
import { ControlFamilyDescriptor, ControlStack, MigrationOperationClass, MigrationOperationPolicy, MigrationOperationPolicy as MigrationOperationPolicy$1, MigrationPlan, MigrationPlanOperation, MigrationPlanner, MigrationPlannerConflict, MigrationPlannerConflict as MigrationPlannerConflict$1, MigrationPlannerResult, MutationDefaultGeneratorDescriptor, OpFactoryCall, TargetMigrationsCapability, assembleAuthoringContributions } from "@prisma-next/framework-components/control";
|
|
3
4
|
import { SqlStorage, StorageColumn } from "@prisma-next/sql-contract/types";
|
|
4
|
-
import { ColumnDefault, Contract, ControlPolicy } from "@prisma-next/contract/types";
|
|
5
5
|
import { NotOk, Ok } from "@prisma-next/utils/result";
|
|
6
6
|
import { SqlSchemaIR } from "@prisma-next/sql-schema-ir/types";
|
|
7
7
|
import { TargetBoundComponentDescriptor } from "@prisma-next/framework-components/components";
|
package/dist/control.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control.d.mts","names":[],"sources":["../src/core/control-descriptor.ts","../src/core/assembly.ts","../src/core/migrations/contract-to-schema-ir.ts","../src/core/migrations/control-policy.ts","../src/core/migrations/field-event-planner.ts","../src/core/migrations/plan-helpers.ts","../src/core/migrations/policies.ts","../src/core/timestamp-now-generator.ts","../src/exports/control.ts"],"mappings":";;;;;;;;;;cAWa,mBAAA,YACA,uBAAA,QAA+B,wBAAA;EAAA,SAEjC,IAAA;EAAA,SACA,EAAA;EAAA,SACA,QAAA;EAAA,SACA,OAAA;EAAA,SACA,QAAA,EAAU,WAAA;EAAA,SACV,SAAA;IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOT,MAAA,2BACE,KAAA,EAAO,YAAA,QAAoB,SAAA,IAC1B,wBAAA;AAAA;;;iBCNW,wBAAA,CACd,WAAA,EAAa,aAAA,CAAc,8BAAA,mBAC1B,GAAA,SAAY,iBAAA;;;;;;;;;ADbf;;;;
|
|
1
|
+
{"version":3,"file":"control.d.mts","names":[],"sources":["../src/core/control-descriptor.ts","../src/core/assembly.ts","../src/core/migrations/contract-to-schema-ir.ts","../src/core/migrations/control-policy.ts","../src/core/migrations/field-event-planner.ts","../src/core/migrations/plan-helpers.ts","../src/core/migrations/policies.ts","../src/core/timestamp-now-generator.ts","../src/exports/control.ts"],"mappings":"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"}
|
package/dist/control.mjs
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
import { i as sqlFamilyPslBlockDescriptors, n as sqlFamilyAuthoringFieldPresets, r as sqlFamilyEntityTypes, t as sqlFamilyAuthoringTypes } from "./authoring-type-constructors-CjFfO6LM.mjs";
|
|
2
|
-
import { t as SqlContractSerializer } from "./sql-contract-serializer-
|
|
3
|
-
import { a as contractToSchemaIR, c as extractCodecControlHooks, o as detectDestructiveChanges, s as resolveValueSetValues, t as verifySqlSchema } from "./verify-sql-schema-
|
|
2
|
+
import { t as SqlContractSerializer } from "./sql-contract-serializer-CYtXg_zs.mjs";
|
|
3
|
+
import { a as contractToSchemaIR, c as extractCodecControlHooks, o as detectDestructiveChanges, s as resolveValueSetValues, t as verifySqlSchema } from "./verify-sql-schema-CEY7b78t.mjs";
|
|
4
4
|
import { t as collectSupportedCodecTypeIds } from "./verify-C-G0obRm.mjs";
|
|
5
5
|
import { n as temporalAuthoringPresets, r as timestampNowControlDescriptor } from "./timestamp-now-generator-CloimujU.mjs";
|
|
6
6
|
import { sqlEmission } from "@prisma-next/sql-contract-emitter";
|
|
7
|
-
import {
|
|
7
|
+
import { blindCast } from "@prisma-next/utils/casts";
|
|
8
|
+
import { effectiveControlPolicy } from "@prisma-next/contract/types";
|
|
9
|
+
import { APP_SPACE_ID, SchemaTreeNode, VERIFY_CODE_HASH_MISMATCH, VERIFY_CODE_MARKER_MISSING, VERIFY_CODE_TARGET_MISMATCH, assembleAuthoringContributions, dispositionForCategory } from "@prisma-next/framework-components/control";
|
|
10
|
+
import { isPlainRecord } from "@prisma-next/framework-components/ir";
|
|
8
11
|
import { assertDescriptorSelfConsistency } from "@prisma-next/migration-tools/spaces";
|
|
9
12
|
import { sqlContractCanonicalizationHooks } from "@prisma-next/sql-contract/canonicalization-hooks";
|
|
10
13
|
import { defaultIndexName } from "@prisma-next/sql-schema-ir/naming";
|
|
11
14
|
import { ifDefined } from "@prisma-next/utils/defined";
|
|
12
|
-
import {
|
|
15
|
+
import { isStorageTable } from "@prisma-next/sql-contract/types";
|
|
13
16
|
import { UNSPECIFIED_PSL_NAMESPACE_ID, makePslNamespace, makePslNamespaceEntries } from "@prisma-next/framework-components/psl-ast";
|
|
14
|
-
import { effectiveControlPolicy } from "@prisma-next/contract/types";
|
|
15
17
|
import { notOk, ok } from "@prisma-next/utils/result";
|
|
16
18
|
//#region src/core/operation-preview.ts
|
|
17
19
|
function isDdlStatement(sqlStatement) {
|
|
@@ -693,7 +695,7 @@ function buildScalarField(column, table, typeMap, enumNameMap, fieldNameMap, nam
|
|
|
693
695
|
name: fieldName,
|
|
694
696
|
typeName: `Unsupported("${escapePslString(resolution.nativeType)}")`,
|
|
695
697
|
optional: column.nullable,
|
|
696
|
-
list:
|
|
698
|
+
list: column.many === true,
|
|
697
699
|
attributes: attrs,
|
|
698
700
|
span: SYNTHETIC_SPAN
|
|
699
701
|
};
|
|
@@ -722,7 +724,7 @@ function buildScalarField(column, table, typeMap, enumNameMap, fieldNameMap, nam
|
|
|
722
724
|
name: fieldName,
|
|
723
725
|
typeName,
|
|
724
726
|
optional: column.nullable,
|
|
725
|
-
list:
|
|
727
|
+
list: column.many === true,
|
|
726
728
|
attributes,
|
|
727
729
|
span: SYNTHETIC_SPAN
|
|
728
730
|
};
|
|
@@ -1123,8 +1125,10 @@ function createSqlFamilyInstance(stack) {
|
|
|
1123
1125
|
let controlAdapter;
|
|
1124
1126
|
const getControlAdapter = () => controlAdapter ??= adapter.create(stack);
|
|
1125
1127
|
const targetSerializer = target.contractSerializer;
|
|
1126
|
-
const deserializeWithTargetSerializer = (
|
|
1127
|
-
|
|
1128
|
+
const deserializeWithTargetSerializer = (contractOrJson) => {
|
|
1129
|
+
const serializer = targetSerializer ?? new SqlContractSerializer();
|
|
1130
|
+
const json = targetSerializer !== void 0 && !isPlainRecord(contractOrJson) ? targetSerializer.serializeContract(blindCast(contractOrJson)) : contractOrJson;
|
|
1131
|
+
return serializer.deserializeContract(json);
|
|
1128
1132
|
};
|
|
1129
1133
|
return {
|
|
1130
1134
|
familyId: "sql",
|
|
@@ -1228,7 +1232,7 @@ function createSqlFamilyInstance(stack) {
|
|
|
1228
1232
|
verifySchema(options) {
|
|
1229
1233
|
const contract = deserializeWithTargetSerializer(options.contract);
|
|
1230
1234
|
const controlAdapter = getControlAdapter();
|
|
1231
|
-
|
|
1235
|
+
const sqlResult = verifySqlSchema({
|
|
1232
1236
|
contract,
|
|
1233
1237
|
schema: options.schema,
|
|
1234
1238
|
strict: options.strict,
|
|
@@ -1237,6 +1241,23 @@ function createSqlFamilyInstance(stack) {
|
|
|
1237
1241
|
...ifDefined("normalizeDefault", controlAdapter.normalizeDefault),
|
|
1238
1242
|
...ifDefined("normalizeNativeType", controlAdapter.normalizeNativeType)
|
|
1239
1243
|
});
|
|
1244
|
+
const schemaDiffIssues = filterSchemaDiffIssues(controlAdapter.collectSchemaDiffIssues?.(contract, options.schema) ?? [], contract.defaultControlPolicy);
|
|
1245
|
+
if (schemaDiffIssues.length === 0) return sqlResult;
|
|
1246
|
+
const totalFails = sqlResult.schema.counts.fail + schemaDiffIssues.length;
|
|
1247
|
+
return {
|
|
1248
|
+
...sqlResult,
|
|
1249
|
+
ok: false,
|
|
1250
|
+
code: sqlResult.code ?? "PN-RUN-3010",
|
|
1251
|
+
summary: `Database schema does not satisfy contract (${totalFails} failure${totalFails === 1 ? "" : "s"})`,
|
|
1252
|
+
schema: {
|
|
1253
|
+
...sqlResult.schema,
|
|
1254
|
+
schemaDiffIssues,
|
|
1255
|
+
counts: {
|
|
1256
|
+
...sqlResult.schema.counts,
|
|
1257
|
+
fail: totalFails
|
|
1258
|
+
}
|
|
1259
|
+
}
|
|
1260
|
+
};
|
|
1240
1261
|
},
|
|
1241
1262
|
async sign(options) {
|
|
1242
1263
|
const { driver, contract: contractInput, contractPath, configPath } = options;
|
|
@@ -1429,6 +1450,24 @@ function createSqlFamilyInstance(stack) {
|
|
|
1429
1450
|
}
|
|
1430
1451
|
};
|
|
1431
1452
|
}
|
|
1453
|
+
/**
|
|
1454
|
+
* Filters schema diff issues (from `collectSchemaDiffIssues`) through the
|
|
1455
|
+
* contract's `defaultControlPolicy`. Issues whose outcome maps to a suppressed
|
|
1456
|
+
* category under the effective policy are removed. This mirrors the control-policy
|
|
1457
|
+
* filtering applied by `verifySqlSchema` for table/column-level findings.
|
|
1458
|
+
*
|
|
1459
|
+
* Outcome → category mapping:
|
|
1460
|
+
* - `'extra'` → `'extraAuxiliary'` (an extra auxiliary entity, e.g. an RLS policy)
|
|
1461
|
+
* - `'missing'` → `'declaredMissing'`
|
|
1462
|
+
* - `'mismatch'` → `'declaredIncompatible'`
|
|
1463
|
+
*/
|
|
1464
|
+
function filterSchemaDiffIssues(issues, defaultControlPolicy) {
|
|
1465
|
+
if (issues.length === 0) return issues;
|
|
1466
|
+
const policy = effectiveControlPolicy(void 0, defaultControlPolicy);
|
|
1467
|
+
return issues.filter((issue) => {
|
|
1468
|
+
return dispositionForCategory(policy, issue.outcome === "extra" ? "extraAuxiliary" : issue.outcome === "missing" ? "declaredMissing" : "declaredIncompatible") !== "suppress";
|
|
1469
|
+
});
|
|
1470
|
+
}
|
|
1432
1471
|
//#endregion
|
|
1433
1472
|
//#region src/core/control-descriptor.ts
|
|
1434
1473
|
var SqlFamilyDescriptor = class {
|
|
@@ -1635,8 +1674,8 @@ function planFieldEventOperations(options) {
|
|
|
1635
1674
|
for (const tableName of tableNames) {
|
|
1636
1675
|
const priorTableRaw = priorTables?.[tableName];
|
|
1637
1676
|
const newTableRaw = newTables?.[tableName];
|
|
1638
|
-
const priorTable = priorTableRaw
|
|
1639
|
-
const newTable = newTableRaw
|
|
1677
|
+
const priorTable = isStorageTable(priorTableRaw) ? priorTableRaw : void 0;
|
|
1678
|
+
const newTable = isStorageTable(newTableRaw) ? newTableRaw : void 0;
|
|
1640
1679
|
const fieldNames = unionSorted(priorTable ? Object.keys(priorTable.columns) : [], newTable ? Object.keys(newTable.columns) : []);
|
|
1641
1680
|
for (const fieldName of fieldNames) {
|
|
1642
1681
|
const priorField = priorTable?.columns[fieldName];
|