@supabase/pg-delta 1.0.0-alpha.10 → 1.0.0-alpha.11
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/cli/commands/declarative-export.js +12 -17
- package/dist/cli/commands/plan.js +10 -13
- package/dist/cli/commands/sync.js +8 -12
- package/dist/cli/utils/integrations.d.ts +30 -6
- package/dist/cli/utils/integrations.js +98 -6
- package/dist/core/change-utils.d.ts +9 -0
- package/dist/core/change-utils.js +71 -0
- package/dist/core/change.types.d.ts +22 -0
- package/dist/core/change.types.js +37 -1
- package/dist/core/depend.js +25 -0
- package/dist/core/export/file-mapper.d.ts +2 -2
- package/dist/core/integrations/filter/dsl.d.ts +78 -74
- package/dist/core/integrations/filter/dsl.js +127 -79
- package/dist/core/integrations/filter/flatten.d.ts +51 -0
- package/dist/core/integrations/filter/flatten.js +116 -0
- package/dist/core/integrations/integration-dsl.d.ts +17 -1
- package/dist/core/integrations/merge.d.ts +20 -0
- package/dist/core/integrations/merge.js +60 -0
- package/dist/core/integrations/serialize/dsl.d.ts +7 -4
- package/dist/core/integrations/serialize/dsl.js +2 -2
- package/dist/core/integrations/supabase.js +23 -8
- package/dist/core/objects/aggregate/changes/aggregate.types.d.ts +1 -0
- package/dist/core/objects/base.change.d.ts +10 -0
- package/dist/core/objects/base.change.js +10 -0
- package/dist/core/objects/base.model.d.ts +4 -1
- package/dist/core/objects/base.model.js +5 -2
- package/dist/core/objects/collation/changes/collation.types.d.ts +1 -0
- package/dist/core/objects/domain/changes/domain.create.d.ts +1 -1
- package/dist/core/objects/domain/changes/domain.create.js +7 -1
- package/dist/core/objects/domain/changes/domain.types.d.ts +1 -0
- package/dist/core/objects/event-trigger/changes/event-trigger.types.d.ts +1 -0
- package/dist/core/objects/extension/changes/extension.types.d.ts +1 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.types.d.ts +1 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper.types.d.ts +1 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.types.d.ts +1 -0
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.types.d.ts +1 -0
- package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.types.d.ts +1 -0
- package/dist/core/objects/index/changes/index.types.d.ts +1 -0
- package/dist/core/objects/language/changes/language.types.d.ts +1 -0
- package/dist/core/objects/materialized-view/changes/materialized-view.types.d.ts +1 -0
- package/dist/core/objects/procedure/changes/procedure.types.d.ts +1 -0
- package/dist/core/objects/publication/changes/publication.types.d.ts +1 -0
- package/dist/core/objects/rls-policy/changes/rls-policy.types.d.ts +1 -0
- package/dist/core/objects/role/changes/role.types.d.ts +1 -0
- package/dist/core/objects/rule/changes/rule.types.d.ts +1 -0
- package/dist/core/objects/schema/changes/schema.types.d.ts +1 -0
- package/dist/core/objects/sequence/changes/sequence.types.d.ts +1 -0
- package/dist/core/objects/subscription/changes/subscription.types.d.ts +1 -0
- package/dist/core/objects/table/changes/table.types.d.ts +1 -0
- package/dist/core/objects/trigger/changes/trigger.types.d.ts +1 -0
- package/dist/core/objects/type/composite-type/changes/composite-type.types.d.ts +1 -0
- package/dist/core/objects/type/enum/changes/enum.types.d.ts +1 -0
- package/dist/core/objects/type/range/changes/range.types.d.ts +1 -0
- package/dist/core/objects/type/type.types.d.ts +1 -0
- package/dist/core/objects/view/changes/view.types.d.ts +1 -0
- package/dist/core/objects/view/view.diff.js +24 -13
- package/dist/core/postgres-config.d.ts +2 -2
- package/dist/core/sort/custom-constraints.js +1 -1
- package/dist/core/sort/logical-sort.js +3 -24
- package/package.json +5 -1
- package/src/cli/commands/declarative-export.ts +19 -27
- package/src/cli/commands/plan.ts +14 -20
- package/src/cli/commands/sync.ts +8 -15
- package/src/cli/utils/integrations.test.ts +210 -3
- package/src/cli/utils/integrations.ts +134 -6
- package/src/core/catalog.snapshot.test.ts +11 -2
- package/src/core/change-utils.test.ts +61 -0
- package/src/core/change-utils.ts +73 -0
- package/src/core/change.types.ts +50 -0
- package/src/core/depend.ts +25 -0
- package/src/core/export/file-mapper.ts +7 -2
- package/src/core/integrations/filter/dsl.test.ts +299 -60
- package/src/core/integrations/filter/dsl.ts +208 -169
- package/src/core/integrations/filter/flatten.test.ts +282 -0
- package/src/core/integrations/filter/flatten.ts +150 -0
- package/src/core/integrations/integration-dsl.ts +17 -1
- package/src/core/integrations/merge.test.ts +128 -0
- package/src/core/integrations/merge.ts +72 -0
- package/src/core/integrations/serialize/dsl.test.ts +6 -6
- package/src/core/integrations/serialize/dsl.ts +7 -4
- package/src/core/integrations/supabase.ts +23 -8
- package/src/core/objects/aggregate/changes/aggregate.types.ts +1 -0
- package/src/core/objects/base.change.ts +10 -0
- package/src/core/objects/base.model.test.ts +43 -0
- package/src/core/objects/base.model.ts +5 -2
- package/src/core/objects/collation/changes/collation.types.ts +1 -0
- package/src/core/objects/domain/changes/domain.create.ts +17 -1
- package/src/core/objects/domain/changes/domain.types.ts +1 -0
- package/src/core/objects/event-trigger/changes/event-trigger.types.ts +1 -0
- package/src/core/objects/extension/changes/extension.types.ts +1 -0
- package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.types.ts +1 -0
- package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper.types.ts +1 -0
- package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.types.ts +1 -0
- package/src/core/objects/foreign-data-wrapper/server/changes/server.types.ts +1 -0
- package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.types.ts +1 -0
- package/src/core/objects/index/changes/index.types.ts +1 -0
- package/src/core/objects/language/changes/language.types.ts +1 -0
- package/src/core/objects/materialized-view/changes/materialized-view.types.ts +1 -0
- package/src/core/objects/procedure/changes/procedure.types.ts +1 -0
- package/src/core/objects/publication/changes/publication.types.ts +1 -0
- package/src/core/objects/rls-policy/changes/rls-policy.types.ts +1 -0
- package/src/core/objects/role/changes/role.types.ts +1 -0
- package/src/core/objects/rule/changes/rule.types.ts +1 -0
- package/src/core/objects/schema/changes/schema.types.ts +1 -0
- package/src/core/objects/sequence/changes/sequence.types.ts +1 -0
- package/src/core/objects/subscription/changes/subscription.types.ts +1 -0
- package/src/core/objects/table/changes/table.types.ts +1 -0
- package/src/core/objects/trigger/changes/trigger.types.ts +1 -0
- package/src/core/objects/type/composite-type/changes/composite-type.types.ts +1 -0
- package/src/core/objects/type/enum/changes/enum.types.ts +1 -0
- package/src/core/objects/type/range/changes/range.types.ts +1 -0
- package/src/core/objects/type/type.types.ts +1 -0
- package/src/core/objects/view/changes/view.types.ts +1 -0
- package/src/core/objects/view/view.diff.test.ts +96 -0
- package/src/core/objects/view/view.diff.ts +30 -15
- package/src/core/postgres-config.ts +2 -2
- package/src/core/sort/custom-constraints.ts +1 -1
- package/src/core/sort/logical-sort.ts +3 -27
- package/src/typedoc.ts +248 -0
- package/dist/core/integrations/filter/extractors.d.ts +0 -12
- package/dist/core/integrations/filter/extractors.js +0 -178
- package/src/core/integrations/filter/extractors.test.ts +0 -244
- package/src/core/integrations/filter/extractors.ts +0 -187
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { diffObjects } from "../base.diff.ts";
|
|
2
|
+
import { normalizeColumns } from "../base.model.ts";
|
|
2
3
|
import {
|
|
3
4
|
diffPrivileges,
|
|
4
5
|
emitColumnPrivilegeChanges,
|
|
@@ -43,19 +44,17 @@ export function diffViews(
|
|
|
43
44
|
const { created, dropped, altered } = diffObjects(main, branch);
|
|
44
45
|
|
|
45
46
|
const changes: ViewChange[] = [];
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
const v = branch[viewId];
|
|
49
|
-
changes.push(new CreateView({ view: v }));
|
|
47
|
+
const appendCreateViewChanges = (view: View) => {
|
|
48
|
+
changes.push(new CreateView({ view }));
|
|
50
49
|
|
|
51
50
|
// OWNER: If the view should be owned by someone other than the current user,
|
|
52
51
|
// emit ALTER VIEW ... OWNER TO after creation
|
|
53
|
-
if (
|
|
54
|
-
changes.push(new AlterViewChangeOwner({ view
|
|
52
|
+
if (view.owner !== ctx.currentUser) {
|
|
53
|
+
changes.push(new AlterViewChangeOwner({ view, owner: view.owner }));
|
|
55
54
|
}
|
|
56
55
|
|
|
57
|
-
if (
|
|
58
|
-
changes.push(new CreateCommentOnView({ view
|
|
56
|
+
if (view.comment !== null) {
|
|
57
|
+
changes.push(new CreateCommentOnView({ view }));
|
|
59
58
|
}
|
|
60
59
|
|
|
61
60
|
// PRIVILEGES: For created objects, compare against default privileges state
|
|
@@ -66,26 +65,26 @@ export function diffViews(
|
|
|
66
65
|
const effectiveDefaults = ctx.defaultPrivilegeState.getEffectiveDefaults(
|
|
67
66
|
ctx.currentUser,
|
|
68
67
|
"view",
|
|
69
|
-
|
|
68
|
+
view.schema ?? "",
|
|
70
69
|
);
|
|
71
70
|
const creatorFilteredDefaults =
|
|
72
|
-
|
|
71
|
+
view.owner !== ctx.currentUser
|
|
73
72
|
? effectiveDefaults.filter((p) => p.grantee !== ctx.currentUser)
|
|
74
73
|
: effectiveDefaults;
|
|
75
|
-
const desiredPrivileges =
|
|
74
|
+
const desiredPrivileges = view.privileges;
|
|
76
75
|
// Filter out owner privileges - owner always has ALL privileges implicitly
|
|
77
76
|
// and shouldn't be compared. Use the view owner as the reference.
|
|
78
77
|
const privilegeResults = diffPrivileges(
|
|
79
78
|
creatorFilteredDefaults,
|
|
80
79
|
desiredPrivileges,
|
|
81
|
-
|
|
80
|
+
view.owner,
|
|
82
81
|
);
|
|
83
82
|
|
|
84
83
|
changes.push(
|
|
85
84
|
...(emitColumnPrivilegeChanges(
|
|
86
85
|
privilegeResults,
|
|
87
|
-
|
|
88
|
-
|
|
86
|
+
view,
|
|
87
|
+
view,
|
|
89
88
|
"view",
|
|
90
89
|
{
|
|
91
90
|
Grant: GrantViewPrivileges,
|
|
@@ -96,6 +95,10 @@ export function diffViews(
|
|
|
96
95
|
ctx.version,
|
|
97
96
|
) as ViewChange[]),
|
|
98
97
|
);
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
for (const viewId of created) {
|
|
101
|
+
appendCreateViewChanges(branch[viewId]);
|
|
99
102
|
}
|
|
100
103
|
|
|
101
104
|
for (const viewId of dropped) {
|
|
@@ -128,7 +131,19 @@ export function diffViews(
|
|
|
128
131
|
{ options: deepEqual },
|
|
129
132
|
);
|
|
130
133
|
|
|
131
|
-
|
|
134
|
+
// Normalize columns (strip position, sort by name) to match stableSnapshot().
|
|
135
|
+
// Position-only differences are safe to ignore here because column order in a
|
|
136
|
+
// view is determined by its definition, which is already checked above via
|
|
137
|
+
// NON_ALTERABLE_FIELDS - a position change always implies a definition change.
|
|
138
|
+
if (
|
|
139
|
+
!deepEqual(
|
|
140
|
+
normalizeColumns(mainView.columns),
|
|
141
|
+
normalizeColumns(branchView.columns),
|
|
142
|
+
)
|
|
143
|
+
) {
|
|
144
|
+
changes.push(new DropView({ view: mainView }));
|
|
145
|
+
appendCreateViewChanges(branchView);
|
|
146
|
+
} else if (nonAlterablePropsChanged) {
|
|
132
147
|
// Replace the entire view using CREATE OR REPLACE to avoid drop when possible
|
|
133
148
|
changes.push(new CreateView({ view: branchView, orReplace: true }));
|
|
134
149
|
} else {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* PostgreSQL connection configuration with custom type handlers.
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
import type { PoolClient, PoolConfig } from "pg";
|
|
5
|
+
import type { ClientBase, PoolClient, PoolConfig } from "pg";
|
|
6
6
|
import { escapeIdentifier, Pool, types } from "pg";
|
|
7
7
|
import { parseSslConfig } from "./plan/ssl-config.ts";
|
|
8
8
|
|
|
@@ -115,7 +115,7 @@ const DEFAULT_CONNECT_TIMEOUT_MS =
|
|
|
115
115
|
*/
|
|
116
116
|
interface CreatePoolOptions extends Partial<PoolConfig> {
|
|
117
117
|
/** Called when a new client connects to the pool */
|
|
118
|
-
onConnect?: (client:
|
|
118
|
+
onConnect?: (client: ClientBase) => void | Promise<void>;
|
|
119
119
|
/** Called when an idle client emits an error */
|
|
120
120
|
onError?: (err: Error, client: PoolClient) => void;
|
|
121
121
|
/** Called when a client is acquired from the pool */
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
12
|
import type { Change } from "../change.types.ts";
|
|
13
|
-
import { getSchema } from "../
|
|
13
|
+
import { getSchema } from "../change-utils.ts";
|
|
14
14
|
import { getExecutionPhase, isMetadataStableId, type Phase } from "./utils.ts";
|
|
15
15
|
|
|
16
16
|
/**
|
|
@@ -308,30 +308,6 @@ function getParentStableId(change: Change): string | null {
|
|
|
308
308
|
return requires.length > 0 ? requires[0] : null;
|
|
309
309
|
}
|
|
310
310
|
|
|
311
|
-
/**
|
|
312
|
-
* Extract schema name from a change.
|
|
313
|
-
* Returns the schema name if present, or null for non-schema objects.
|
|
314
|
-
*
|
|
315
|
-
* Uses the getSchema helper which directly accesses schema properties from change objects.
|
|
316
|
-
* For default_privilege changes, accesses the inSchema property directly.
|
|
317
|
-
* For event_trigger changes, groups by their function's schema.
|
|
318
|
-
*/
|
|
319
|
-
function extractSchemaFromChange(change: Change): string | null {
|
|
320
|
-
// Handle default_privilege changes specially (they have inSchema property)
|
|
321
|
-
if (change.scope === "default_privilege") {
|
|
322
|
-
// TypeScript doesn't know about inSchema, but we know it exists for default_privilege changes
|
|
323
|
-
return (change as { inSchema: string | null }).inSchema ?? null;
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
// Handle event_trigger changes specially - group by their function's schema
|
|
327
|
-
if (change.objectType === "event_trigger") {
|
|
328
|
-
return change.eventTrigger.function_schema;
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
// Use the getSchema helper for all other changes
|
|
332
|
-
return getSchema(change);
|
|
333
|
-
}
|
|
334
|
-
|
|
335
311
|
/**
|
|
336
312
|
* Get the effective object type for sorting purposes.
|
|
337
313
|
* For sub-entities, returns the parent's object type (table/view/materialized_view).
|
|
@@ -438,8 +414,8 @@ function sortPhase(changes: Change[], phase: Phase): Change[] {
|
|
|
438
414
|
const changeB = b.change;
|
|
439
415
|
|
|
440
416
|
// 1. Compare schemas (group objects by schema)
|
|
441
|
-
const schemaA =
|
|
442
|
-
const schemaB =
|
|
417
|
+
const schemaA = getSchema(changeA);
|
|
418
|
+
const schemaB = getSchema(changeB);
|
|
443
419
|
|
|
444
420
|
// Non-schema objects (roles, languages, extensions, etc.) sort first
|
|
445
421
|
// Use a special prefix to ensure they come before schema objects
|
package/src/typedoc.ts
ADDED
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @supabase/pg-delta — API Reference
|
|
3
|
+
*
|
|
4
|
+
* This module is a dedicated documentation entry point. It re-exports only the
|
|
5
|
+
* types relevant to authoring custom integration filters and does **not** affect
|
|
6
|
+
* the public API surface exposed by the package's main entry point.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
// Filter DSL
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
|
|
15
|
+
export type {
|
|
16
|
+
FilterDSL,
|
|
17
|
+
FilterPattern,
|
|
18
|
+
PathPattern,
|
|
19
|
+
} from "./core/integrations/filter/dsl.ts";
|
|
20
|
+
export type { FlatValue } from "./core/integrations/filter/flatten.ts";
|
|
21
|
+
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
// Integration
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
|
|
26
|
+
export type { IntegrationDSL } from "./core/integrations/integration-dsl.ts";
|
|
27
|
+
export type { SerializeDSL } from "./core/integrations/serialize/dsl.ts";
|
|
28
|
+
|
|
29
|
+
// ---------------------------------------------------------------------------
|
|
30
|
+
// Change Types — Base & Top-Level Unions
|
|
31
|
+
// ---------------------------------------------------------------------------
|
|
32
|
+
|
|
33
|
+
export type {
|
|
34
|
+
Change,
|
|
35
|
+
OBJECT_TYPE_TO_PROPERTY_KEY,
|
|
36
|
+
} from "./core/change.types.ts";
|
|
37
|
+
// Top-level union types (each combines all change variants for an object type)
|
|
38
|
+
export type { AggregateChange } from "./core/objects/aggregate/changes/aggregate.types.ts";
|
|
39
|
+
export { BaseChange } from "./core/objects/base.change.ts";
|
|
40
|
+
export type { CollationChange } from "./core/objects/collation/changes/collation.types.ts";
|
|
41
|
+
export type { DomainChange } from "./core/objects/domain/changes/domain.types.ts";
|
|
42
|
+
export type { EventTriggerChange } from "./core/objects/event-trigger/changes/event-trigger.types.ts";
|
|
43
|
+
export type { ExtensionChange } from "./core/objects/extension/changes/extension.types.ts";
|
|
44
|
+
export type { ForeignDataWrapperChange } from "./core/objects/foreign-data-wrapper/foreign-data-wrapper.types.ts";
|
|
45
|
+
export type { IndexChange } from "./core/objects/index/changes/index.types.ts";
|
|
46
|
+
export type { LanguageChange } from "./core/objects/language/changes/language.types.ts";
|
|
47
|
+
export type { MaterializedViewChange } from "./core/objects/materialized-view/changes/materialized-view.types.ts";
|
|
48
|
+
export type { ProcedureChange } from "./core/objects/procedure/changes/procedure.types.ts";
|
|
49
|
+
export type { PublicationChange } from "./core/objects/publication/changes/publication.types.ts";
|
|
50
|
+
export type { RlsPolicyChange } from "./core/objects/rls-policy/changes/rls-policy.types.ts";
|
|
51
|
+
export type { RoleChange } from "./core/objects/role/changes/role.types.ts";
|
|
52
|
+
export type { RuleChange } from "./core/objects/rule/changes/rule.types.ts";
|
|
53
|
+
export type { SchemaChange } from "./core/objects/schema/changes/schema.types.ts";
|
|
54
|
+
export type { SequenceChange } from "./core/objects/sequence/changes/sequence.types.ts";
|
|
55
|
+
export type { SubscriptionChange } from "./core/objects/subscription/changes/subscription.types.ts";
|
|
56
|
+
export type { TableChange } from "./core/objects/table/changes/table.types.ts";
|
|
57
|
+
export type { TriggerChange } from "./core/objects/trigger/changes/trigger.types.ts";
|
|
58
|
+
export type { TypeChange } from "./core/objects/type/type.types.ts";
|
|
59
|
+
export type { ViewChange } from "./core/objects/view/changes/view.types.ts";
|
|
60
|
+
|
|
61
|
+
// ---------------------------------------------------------------------------
|
|
62
|
+
// Change Types — FDW & Type Sub-Unions
|
|
63
|
+
// ---------------------------------------------------------------------------
|
|
64
|
+
|
|
65
|
+
// Inner FDW union renamed to avoid collision with the outer ForeignDataWrapperChange
|
|
66
|
+
export type { ForeignDataWrapperChange as FDWChange } from "./core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.types.ts";
|
|
67
|
+
export type { ForeignTableChange } from "./core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.types.ts";
|
|
68
|
+
export type { ServerChange } from "./core/objects/foreign-data-wrapper/server/changes/server.types.ts";
|
|
69
|
+
export type { UserMappingChange } from "./core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.types.ts";
|
|
70
|
+
|
|
71
|
+
export type { CompositeTypeChange } from "./core/objects/type/composite-type/changes/composite-type.types.ts";
|
|
72
|
+
export type { EnumChange } from "./core/objects/type/enum/changes/enum.types.ts";
|
|
73
|
+
export type { RangeChange } from "./core/objects/type/range/changes/range.types.ts";
|
|
74
|
+
|
|
75
|
+
// ---------------------------------------------------------------------------
|
|
76
|
+
// Change Types — Concrete Change Classes (all object types)
|
|
77
|
+
// ---------------------------------------------------------------------------
|
|
78
|
+
|
|
79
|
+
// Aggregate
|
|
80
|
+
export * from "./core/objects/aggregate/changes/aggregate.alter.ts";
|
|
81
|
+
export * from "./core/objects/aggregate/changes/aggregate.comment.ts";
|
|
82
|
+
export * from "./core/objects/aggregate/changes/aggregate.create.ts";
|
|
83
|
+
export * from "./core/objects/aggregate/changes/aggregate.drop.ts";
|
|
84
|
+
export * from "./core/objects/aggregate/changes/aggregate.privilege.ts";
|
|
85
|
+
|
|
86
|
+
// Collation
|
|
87
|
+
export * from "./core/objects/collation/changes/collation.alter.ts";
|
|
88
|
+
export * from "./core/objects/collation/changes/collation.comment.ts";
|
|
89
|
+
export * from "./core/objects/collation/changes/collation.create.ts";
|
|
90
|
+
export * from "./core/objects/collation/changes/collation.drop.ts";
|
|
91
|
+
|
|
92
|
+
// Domain
|
|
93
|
+
export * from "./core/objects/domain/changes/domain.alter.ts";
|
|
94
|
+
export * from "./core/objects/domain/changes/domain.comment.ts";
|
|
95
|
+
export * from "./core/objects/domain/changes/domain.create.ts";
|
|
96
|
+
export * from "./core/objects/domain/changes/domain.drop.ts";
|
|
97
|
+
export * from "./core/objects/domain/changes/domain.privilege.ts";
|
|
98
|
+
|
|
99
|
+
// Event Trigger
|
|
100
|
+
export * from "./core/objects/event-trigger/changes/event-trigger.alter.ts";
|
|
101
|
+
export * from "./core/objects/event-trigger/changes/event-trigger.comment.ts";
|
|
102
|
+
export * from "./core/objects/event-trigger/changes/event-trigger.create.ts";
|
|
103
|
+
export * from "./core/objects/event-trigger/changes/event-trigger.drop.ts";
|
|
104
|
+
|
|
105
|
+
// Extension
|
|
106
|
+
export * from "./core/objects/extension/changes/extension.alter.ts";
|
|
107
|
+
export * from "./core/objects/extension/changes/extension.comment.ts";
|
|
108
|
+
export * from "./core/objects/extension/changes/extension.create.ts";
|
|
109
|
+
export * from "./core/objects/extension/changes/extension.drop.ts";
|
|
110
|
+
|
|
111
|
+
// Foreign Data Wrapper — FDW wrapper
|
|
112
|
+
export * from "./core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.ts";
|
|
113
|
+
export * from "./core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.ts";
|
|
114
|
+
export * from "./core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.ts";
|
|
115
|
+
export * from "./core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.ts";
|
|
116
|
+
export * from "./core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.ts";
|
|
117
|
+
|
|
118
|
+
// Foreign Data Wrapper — Foreign Table
|
|
119
|
+
export * from "./core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.ts";
|
|
120
|
+
export * from "./core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.ts";
|
|
121
|
+
export * from "./core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.ts";
|
|
122
|
+
export * from "./core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.ts";
|
|
123
|
+
export * from "./core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.ts";
|
|
124
|
+
|
|
125
|
+
// Foreign Data Wrapper — Server
|
|
126
|
+
export * from "./core/objects/foreign-data-wrapper/server/changes/server.alter.ts";
|
|
127
|
+
export * from "./core/objects/foreign-data-wrapper/server/changes/server.comment.ts";
|
|
128
|
+
export * from "./core/objects/foreign-data-wrapper/server/changes/server.create.ts";
|
|
129
|
+
export * from "./core/objects/foreign-data-wrapper/server/changes/server.drop.ts";
|
|
130
|
+
export * from "./core/objects/foreign-data-wrapper/server/changes/server.privilege.ts";
|
|
131
|
+
|
|
132
|
+
// Foreign Data Wrapper — User Mapping
|
|
133
|
+
export * from "./core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.ts";
|
|
134
|
+
export * from "./core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.ts";
|
|
135
|
+
export * from "./core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.ts";
|
|
136
|
+
|
|
137
|
+
// Index
|
|
138
|
+
export * from "./core/objects/index/changes/index.alter.ts";
|
|
139
|
+
export * from "./core/objects/index/changes/index.comment.ts";
|
|
140
|
+
export * from "./core/objects/index/changes/index.create.ts";
|
|
141
|
+
export * from "./core/objects/index/changes/index.drop.ts";
|
|
142
|
+
|
|
143
|
+
// Language
|
|
144
|
+
export * from "./core/objects/language/changes/language.alter.ts";
|
|
145
|
+
export * from "./core/objects/language/changes/language.comment.ts";
|
|
146
|
+
export * from "./core/objects/language/changes/language.create.ts";
|
|
147
|
+
export * from "./core/objects/language/changes/language.drop.ts";
|
|
148
|
+
export * from "./core/objects/language/changes/language.privilege.ts";
|
|
149
|
+
|
|
150
|
+
// Materialized View
|
|
151
|
+
export * from "./core/objects/materialized-view/changes/materialized-view.alter.ts";
|
|
152
|
+
export * from "./core/objects/materialized-view/changes/materialized-view.comment.ts";
|
|
153
|
+
export * from "./core/objects/materialized-view/changes/materialized-view.create.ts";
|
|
154
|
+
export * from "./core/objects/materialized-view/changes/materialized-view.drop.ts";
|
|
155
|
+
export * from "./core/objects/materialized-view/changes/materialized-view.privilege.ts";
|
|
156
|
+
|
|
157
|
+
// Procedure
|
|
158
|
+
export * from "./core/objects/procedure/changes/procedure.alter.ts";
|
|
159
|
+
export * from "./core/objects/procedure/changes/procedure.comment.ts";
|
|
160
|
+
export * from "./core/objects/procedure/changes/procedure.create.ts";
|
|
161
|
+
export * from "./core/objects/procedure/changes/procedure.drop.ts";
|
|
162
|
+
export * from "./core/objects/procedure/changes/procedure.privilege.ts";
|
|
163
|
+
|
|
164
|
+
// Publication
|
|
165
|
+
export * from "./core/objects/publication/changes/publication.alter.ts";
|
|
166
|
+
export * from "./core/objects/publication/changes/publication.comment.ts";
|
|
167
|
+
export * from "./core/objects/publication/changes/publication.create.ts";
|
|
168
|
+
export * from "./core/objects/publication/changes/publication.drop.ts";
|
|
169
|
+
|
|
170
|
+
// RLS Policy
|
|
171
|
+
export * from "./core/objects/rls-policy/changes/rls-policy.alter.ts";
|
|
172
|
+
export * from "./core/objects/rls-policy/changes/rls-policy.comment.ts";
|
|
173
|
+
export * from "./core/objects/rls-policy/changes/rls-policy.create.ts";
|
|
174
|
+
export * from "./core/objects/rls-policy/changes/rls-policy.drop.ts";
|
|
175
|
+
|
|
176
|
+
// Role
|
|
177
|
+
export * from "./core/objects/role/changes/role.alter.ts";
|
|
178
|
+
export * from "./core/objects/role/changes/role.comment.ts";
|
|
179
|
+
export * from "./core/objects/role/changes/role.create.ts";
|
|
180
|
+
export * from "./core/objects/role/changes/role.drop.ts";
|
|
181
|
+
export * from "./core/objects/role/changes/role.privilege.ts";
|
|
182
|
+
|
|
183
|
+
// Rule
|
|
184
|
+
export * from "./core/objects/rule/changes/rule.alter.ts";
|
|
185
|
+
export * from "./core/objects/rule/changes/rule.comment.ts";
|
|
186
|
+
export * from "./core/objects/rule/changes/rule.create.ts";
|
|
187
|
+
export * from "./core/objects/rule/changes/rule.drop.ts";
|
|
188
|
+
|
|
189
|
+
// Schema
|
|
190
|
+
export * from "./core/objects/schema/changes/schema.alter.ts";
|
|
191
|
+
export * from "./core/objects/schema/changes/schema.comment.ts";
|
|
192
|
+
export * from "./core/objects/schema/changes/schema.create.ts";
|
|
193
|
+
export * from "./core/objects/schema/changes/schema.drop.ts";
|
|
194
|
+
export * from "./core/objects/schema/changes/schema.privilege.ts";
|
|
195
|
+
|
|
196
|
+
// Sequence
|
|
197
|
+
export * from "./core/objects/sequence/changes/sequence.alter.ts";
|
|
198
|
+
export * from "./core/objects/sequence/changes/sequence.comment.ts";
|
|
199
|
+
export * from "./core/objects/sequence/changes/sequence.create.ts";
|
|
200
|
+
export * from "./core/objects/sequence/changes/sequence.drop.ts";
|
|
201
|
+
export * from "./core/objects/sequence/changes/sequence.privilege.ts";
|
|
202
|
+
|
|
203
|
+
// Subscription
|
|
204
|
+
export * from "./core/objects/subscription/changes/subscription.alter.ts";
|
|
205
|
+
export * from "./core/objects/subscription/changes/subscription.comment.ts";
|
|
206
|
+
export * from "./core/objects/subscription/changes/subscription.create.ts";
|
|
207
|
+
export * from "./core/objects/subscription/changes/subscription.drop.ts";
|
|
208
|
+
|
|
209
|
+
// Table
|
|
210
|
+
export * from "./core/objects/table/changes/table.alter.ts";
|
|
211
|
+
export * from "./core/objects/table/changes/table.comment.ts";
|
|
212
|
+
export * from "./core/objects/table/changes/table.create.ts";
|
|
213
|
+
export * from "./core/objects/table/changes/table.drop.ts";
|
|
214
|
+
export * from "./core/objects/table/changes/table.privilege.ts";
|
|
215
|
+
|
|
216
|
+
// Trigger
|
|
217
|
+
export * from "./core/objects/trigger/changes/trigger.alter.ts";
|
|
218
|
+
export * from "./core/objects/trigger/changes/trigger.comment.ts";
|
|
219
|
+
export * from "./core/objects/trigger/changes/trigger.create.ts";
|
|
220
|
+
export * from "./core/objects/trigger/changes/trigger.drop.ts";
|
|
221
|
+
|
|
222
|
+
// Type — Composite
|
|
223
|
+
export * from "./core/objects/type/composite-type/changes/composite-type.alter.ts";
|
|
224
|
+
export * from "./core/objects/type/composite-type/changes/composite-type.comment.ts";
|
|
225
|
+
export * from "./core/objects/type/composite-type/changes/composite-type.create.ts";
|
|
226
|
+
export * from "./core/objects/type/composite-type/changes/composite-type.drop.ts";
|
|
227
|
+
export * from "./core/objects/type/composite-type/changes/composite-type.privilege.ts";
|
|
228
|
+
|
|
229
|
+
// Type — Enum
|
|
230
|
+
export * from "./core/objects/type/enum/changes/enum.alter.ts";
|
|
231
|
+
export * from "./core/objects/type/enum/changes/enum.comment.ts";
|
|
232
|
+
export * from "./core/objects/type/enum/changes/enum.create.ts";
|
|
233
|
+
export * from "./core/objects/type/enum/changes/enum.drop.ts";
|
|
234
|
+
export * from "./core/objects/type/enum/changes/enum.privilege.ts";
|
|
235
|
+
|
|
236
|
+
// Type — Range
|
|
237
|
+
export * from "./core/objects/type/range/changes/range.alter.ts";
|
|
238
|
+
export * from "./core/objects/type/range/changes/range.comment.ts";
|
|
239
|
+
export * from "./core/objects/type/range/changes/range.create.ts";
|
|
240
|
+
export * from "./core/objects/type/range/changes/range.drop.ts";
|
|
241
|
+
export * from "./core/objects/type/range/changes/range.privilege.ts";
|
|
242
|
+
|
|
243
|
+
// View
|
|
244
|
+
export * from "./core/objects/view/changes/view.alter.ts";
|
|
245
|
+
export * from "./core/objects/view/changes/view.comment.ts";
|
|
246
|
+
export * from "./core/objects/view/changes/view.create.ts";
|
|
247
|
+
export * from "./core/objects/view/changes/view.drop.ts";
|
|
248
|
+
export * from "./core/objects/view/changes/view.privilege.ts";
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { Change } from "../../change.types.ts";
|
|
2
|
-
/**
|
|
3
|
-
* Property extractor function that extracts a value from a change.
|
|
4
|
-
*/
|
|
5
|
-
type PropertyExtractor = (change: Change) => string | null;
|
|
6
|
-
/**
|
|
7
|
-
* Registry of property extractors.
|
|
8
|
-
* Maps property names to extractor functions.
|
|
9
|
-
*/
|
|
10
|
-
export declare const PROPERTY_EXTRACTORS: Record<string, PropertyExtractor>;
|
|
11
|
-
export declare function getSchema(change: Change): string | null;
|
|
12
|
-
export {};
|
|
@@ -1,178 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Registry of property extractors.
|
|
3
|
-
* Maps property names to extractor functions.
|
|
4
|
-
*/
|
|
5
|
-
export const PROPERTY_EXTRACTORS = {
|
|
6
|
-
schema: getSchema,
|
|
7
|
-
owner: getOwner,
|
|
8
|
-
member: (change) => {
|
|
9
|
-
if (change.scope === "membership") {
|
|
10
|
-
return change.member;
|
|
11
|
-
}
|
|
12
|
-
return null;
|
|
13
|
-
},
|
|
14
|
-
grantee: (change) => {
|
|
15
|
-
if (change.scope === "privilege" && "grantee" in change) {
|
|
16
|
-
return change.grantee;
|
|
17
|
-
}
|
|
18
|
-
return null;
|
|
19
|
-
},
|
|
20
|
-
publication: (change) => {
|
|
21
|
-
if (change.objectType === "publication") {
|
|
22
|
-
return change.publication.name;
|
|
23
|
-
}
|
|
24
|
-
return null;
|
|
25
|
-
},
|
|
26
|
-
extension: (change) => {
|
|
27
|
-
if (change.objectType === "extension") {
|
|
28
|
-
return change.extension.name;
|
|
29
|
-
}
|
|
30
|
-
return null;
|
|
31
|
-
},
|
|
32
|
-
procedureLanguage: (change) => {
|
|
33
|
-
if (change.objectType === "procedure") {
|
|
34
|
-
return change.procedure.language;
|
|
35
|
-
}
|
|
36
|
-
return null;
|
|
37
|
-
},
|
|
38
|
-
eventTriggerName: (change) => {
|
|
39
|
-
if (change.objectType === "event_trigger") {
|
|
40
|
-
return change.eventTrigger.name;
|
|
41
|
-
}
|
|
42
|
-
return null;
|
|
43
|
-
},
|
|
44
|
-
procedureBinaryPath: (change) => {
|
|
45
|
-
if (change.objectType === "procedure") {
|
|
46
|
-
return change.procedure.binary_path ?? null;
|
|
47
|
-
}
|
|
48
|
-
return null;
|
|
49
|
-
},
|
|
50
|
-
triggerFunctionSchema: (change) => {
|
|
51
|
-
if (change.objectType === "trigger") {
|
|
52
|
-
return change.trigger.function_schema;
|
|
53
|
-
}
|
|
54
|
-
return null;
|
|
55
|
-
},
|
|
56
|
-
};
|
|
57
|
-
export function getSchema(change) {
|
|
58
|
-
switch (change.objectType) {
|
|
59
|
-
case "aggregate":
|
|
60
|
-
return change.aggregate.schema;
|
|
61
|
-
case "collation":
|
|
62
|
-
return change.collation.schema;
|
|
63
|
-
case "composite_type":
|
|
64
|
-
return change.compositeType.schema;
|
|
65
|
-
case "domain":
|
|
66
|
-
return change.domain.schema;
|
|
67
|
-
case "enum":
|
|
68
|
-
return change.enum.schema;
|
|
69
|
-
case "event_trigger":
|
|
70
|
-
return null;
|
|
71
|
-
case "extension":
|
|
72
|
-
return change.extension.schema;
|
|
73
|
-
case "index":
|
|
74
|
-
return change.index.schema;
|
|
75
|
-
case "language":
|
|
76
|
-
return null;
|
|
77
|
-
case "materialized_view":
|
|
78
|
-
return change.materializedView.schema;
|
|
79
|
-
case "procedure":
|
|
80
|
-
return change.procedure.schema;
|
|
81
|
-
case "publication":
|
|
82
|
-
return null;
|
|
83
|
-
case "range":
|
|
84
|
-
return change.range.schema;
|
|
85
|
-
case "rls_policy":
|
|
86
|
-
return change.policy.schema;
|
|
87
|
-
case "role":
|
|
88
|
-
return null;
|
|
89
|
-
case "rule":
|
|
90
|
-
return change.rule.schema;
|
|
91
|
-
case "schema":
|
|
92
|
-
return change.schema.name;
|
|
93
|
-
case "sequence":
|
|
94
|
-
return change.sequence.schema;
|
|
95
|
-
case "subscription":
|
|
96
|
-
return null;
|
|
97
|
-
case "table":
|
|
98
|
-
return change.table.schema;
|
|
99
|
-
case "trigger":
|
|
100
|
-
return change.trigger.schema;
|
|
101
|
-
case "view":
|
|
102
|
-
return change.view.schema;
|
|
103
|
-
case "foreign_data_wrapper":
|
|
104
|
-
return null;
|
|
105
|
-
case "server":
|
|
106
|
-
return null;
|
|
107
|
-
case "user_mapping":
|
|
108
|
-
return null;
|
|
109
|
-
case "foreign_table":
|
|
110
|
-
return change.foreignTable.schema;
|
|
111
|
-
default: {
|
|
112
|
-
// exhaustiveness check
|
|
113
|
-
const _exhaustive = change;
|
|
114
|
-
return _exhaustive;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
function getOwner(change) {
|
|
119
|
-
switch (change.objectType) {
|
|
120
|
-
case "aggregate":
|
|
121
|
-
return change.aggregate.owner;
|
|
122
|
-
case "collation":
|
|
123
|
-
return change.collation.owner;
|
|
124
|
-
case "composite_type":
|
|
125
|
-
return change.compositeType.owner;
|
|
126
|
-
case "domain":
|
|
127
|
-
return change.domain.owner;
|
|
128
|
-
case "enum":
|
|
129
|
-
return change.enum.owner;
|
|
130
|
-
case "event_trigger":
|
|
131
|
-
return change.eventTrigger.owner;
|
|
132
|
-
case "extension":
|
|
133
|
-
return change.extension.owner;
|
|
134
|
-
case "index":
|
|
135
|
-
return change.index.owner;
|
|
136
|
-
case "language":
|
|
137
|
-
return change.language.owner;
|
|
138
|
-
case "materialized_view":
|
|
139
|
-
return change.materializedView.owner;
|
|
140
|
-
case "procedure":
|
|
141
|
-
return change.procedure.owner;
|
|
142
|
-
case "publication":
|
|
143
|
-
return change.publication.owner;
|
|
144
|
-
case "range":
|
|
145
|
-
return change.range.owner;
|
|
146
|
-
case "rls_policy":
|
|
147
|
-
return change.policy.owner;
|
|
148
|
-
case "role":
|
|
149
|
-
return change.role.name;
|
|
150
|
-
case "rule":
|
|
151
|
-
return change.rule.owner;
|
|
152
|
-
case "schema":
|
|
153
|
-
return change.schema.owner;
|
|
154
|
-
case "sequence":
|
|
155
|
-
return change.sequence.owner;
|
|
156
|
-
case "subscription":
|
|
157
|
-
return change.subscription.owner;
|
|
158
|
-
case "table":
|
|
159
|
-
return change.table.owner;
|
|
160
|
-
case "trigger":
|
|
161
|
-
return change.trigger.owner;
|
|
162
|
-
case "view":
|
|
163
|
-
return change.view.owner;
|
|
164
|
-
case "foreign_data_wrapper":
|
|
165
|
-
return change.foreignDataWrapper.owner;
|
|
166
|
-
case "server":
|
|
167
|
-
return change.server.owner;
|
|
168
|
-
case "user_mapping":
|
|
169
|
-
return null;
|
|
170
|
-
case "foreign_table":
|
|
171
|
-
return change.foreignTable.owner;
|
|
172
|
-
default: {
|
|
173
|
-
// exhaustiveness check
|
|
174
|
-
const _exhaustive = change;
|
|
175
|
-
return _exhaustive;
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
}
|