@contember/schema-migrations 1.3.0-alpha.2 → 1.3.0-alpha.4

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.
Files changed (46) hide show
  1. package/dist/src/SchemaDiffer.d.ts.map +1 -1
  2. package/dist/src/SchemaDiffer.js +10 -0
  3. package/dist/src/SchemaDiffer.js.map +1 -1
  4. package/dist/src/modifications/ModificationHandlerFactory.d.ts.map +1 -1
  5. package/dist/src/modifications/ModificationHandlerFactory.js +10 -0
  6. package/dist/src/modifications/ModificationHandlerFactory.js.map +1 -1
  7. package/dist/src/modifications/actions/CreateTargetModification.d.ts +21 -0
  8. package/dist/src/modifications/actions/CreateTargetModification.d.ts.map +1 -0
  9. package/dist/src/modifications/actions/CreateTargetModification.js +40 -0
  10. package/dist/src/modifications/actions/CreateTargetModification.js.map +1 -0
  11. package/dist/src/modifications/actions/CreateTriggerModification.d.ts +21 -0
  12. package/dist/src/modifications/actions/CreateTriggerModification.d.ts.map +1 -0
  13. package/dist/src/modifications/actions/CreateTriggerModification.js +40 -0
  14. package/dist/src/modifications/actions/CreateTriggerModification.js.map +1 -0
  15. package/dist/src/modifications/actions/RemoveTargetModification.d.ts +21 -0
  16. package/dist/src/modifications/actions/RemoveTargetModification.d.ts.map +1 -0
  17. package/dist/src/modifications/actions/RemoveTargetModification.js +40 -0
  18. package/dist/src/modifications/actions/RemoveTargetModification.js.map +1 -0
  19. package/dist/src/modifications/actions/RemoveTriggerModification.d.ts +21 -0
  20. package/dist/src/modifications/actions/RemoveTriggerModification.d.ts.map +1 -0
  21. package/dist/src/modifications/actions/RemoveTriggerModification.js +40 -0
  22. package/dist/src/modifications/actions/RemoveTriggerModification.js.map +1 -0
  23. package/dist/src/modifications/actions/UpdateTargetModification.d.ts +22 -0
  24. package/dist/src/modifications/actions/UpdateTargetModification.d.ts.map +1 -0
  25. package/dist/src/modifications/actions/UpdateTargetModification.js +46 -0
  26. package/dist/src/modifications/actions/UpdateTargetModification.js.map +1 -0
  27. package/dist/src/modifications/actions/UpdateTriggerModification.d.ts +21 -0
  28. package/dist/src/modifications/actions/UpdateTriggerModification.d.ts.map +1 -0
  29. package/dist/src/modifications/actions/UpdateTriggerModification.js +46 -0
  30. package/dist/src/modifications/actions/UpdateTriggerModification.js.map +1 -0
  31. package/dist/src/modifications/actions/index.d.ts +4 -0
  32. package/dist/src/modifications/actions/index.d.ts.map +1 -0
  33. package/dist/src/modifications/actions/index.js +20 -0
  34. package/dist/src/modifications/actions/index.js.map +1 -0
  35. package/dist/src/tsconfig.tsbuildinfo +1 -1
  36. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  37. package/package.json +7 -7
  38. package/src/SchemaDiffer.ts +10 -0
  39. package/src/modifications/ModificationHandlerFactory.ts +10 -0
  40. package/src/modifications/actions/CreateTargetModification.ts +46 -0
  41. package/src/modifications/actions/CreateTriggerModification.ts +46 -0
  42. package/src/modifications/actions/RemoveTargetModification.ts +46 -0
  43. package/src/modifications/actions/RemoveTriggerModification.ts +46 -0
  44. package/src/modifications/actions/UpdateTargetModification.ts +51 -0
  45. package/src/modifications/actions/UpdateTriggerModification.ts +49 -0
  46. package/src/modifications/actions/index.ts +3 -0
@@ -31,6 +31,10 @@ import { patchValidationSchemaModification, updateValidationSchemaModification }
31
31
  import { createIndexModification, removeIndexModification } from './indexes'
32
32
  import { SchemaWithMeta } from './utils/schemaMeta'
33
33
  import { updateSettingsModification } from './settings'
34
+ import { createTriggerModification, removeTriggerModification, updateTriggerModification } from './actions'
35
+ import { createTargetModification } from './actions/CreateTargetModification'
36
+ import { removeTargetModification } from './actions/RemoveTargetModification'
37
+ import { updateTargetModification } from './actions/UpdateTargetModification'
34
38
  import { updateEntityOrderByModification } from './entities/UpdateEntityOrderByModification'
35
39
 
36
40
 
@@ -85,6 +89,12 @@ namespace ModificationHandlerFactory {
85
89
  toggleJunctionEventLogModification,
86
90
  convertOneHasManyToManyHasManyRelationModification,
87
91
  updateEntityOrderByModification,
92
+ createTriggerModification,
93
+ updateTriggerModification,
94
+ removeTriggerModification,
95
+ createTargetModification,
96
+ updateTargetModification,
97
+ removeTargetModification,
88
98
  ]
89
99
 
90
100
  export const defaultFactoryMap: HandlerMap<any> = Object.fromEntries(handlers.map(it => [it.id, it]))
@@ -0,0 +1,46 @@
1
+ import { MigrationBuilder } from '@contember/database-migrations'
2
+ import { Actions, Schema } from '@contember/schema'
3
+ import { SchemaUpdater } from '../utils/schemaUpdateUtils'
4
+ import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'
5
+
6
+ export class CreateTargetModificationHandler implements ModificationHandler<CreateTargetModificationData> {
7
+ constructor(private readonly data: CreateTargetModificationData) {
8
+ }
9
+
10
+ public createSql(builder: MigrationBuilder): void {
11
+ }
12
+
13
+ public getSchemaUpdater(): SchemaUpdater {
14
+ return ({ schema }) => ({
15
+ ...schema,
16
+ actions: {
17
+ ...schema.actions,
18
+ targets: {
19
+ ...schema.actions.targets,
20
+ [this.data.target.name]: this.data.target,
21
+ },
22
+ },
23
+ })
24
+ }
25
+
26
+ describe() {
27
+ return { message: `Create target ${this.data.target.name}` }
28
+ }
29
+ }
30
+
31
+ export interface CreateTargetModificationData {
32
+ target: Actions.AnyTarget
33
+ }
34
+
35
+ export const createTargetModification = createModificationType({
36
+ id: 'createTarget',
37
+ handler: CreateTargetModificationHandler,
38
+ })
39
+
40
+ export class CreateTargetDiffer implements Differ {
41
+ createDiff(originalSchema: Schema, updatedSchema: Schema) {
42
+ return Object.entries(updatedSchema.actions.targets)
43
+ .filter(([name]) => !originalSchema.actions.targets[name])
44
+ .map(([, target]) => createTargetModification.createModification({ target }))
45
+ }
46
+ }
@@ -0,0 +1,46 @@
1
+ import { MigrationBuilder } from '@contember/database-migrations'
2
+ import { Actions, Schema } from '@contember/schema'
3
+ import { SchemaUpdater } from '../utils/schemaUpdateUtils'
4
+ import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'
5
+
6
+ export class CreateTriggerModificationHandler implements ModificationHandler<CreateTriggerModificationData> {
7
+ constructor(private readonly data: CreateTriggerModificationData) {
8
+ }
9
+
10
+ public createSql(builder: MigrationBuilder): void {
11
+ }
12
+
13
+ public getSchemaUpdater(): SchemaUpdater {
14
+ return ({ schema }) => ({
15
+ ...schema,
16
+ actions: {
17
+ ...schema.actions,
18
+ triggers: {
19
+ ...schema.actions.triggers,
20
+ [this.data.trigger.name]: this.data.trigger,
21
+ },
22
+ },
23
+ })
24
+ }
25
+
26
+ describe() {
27
+ return { message: `Create trigger ${this.data.trigger.name}` }
28
+ }
29
+ }
30
+
31
+ export interface CreateTriggerModificationData {
32
+ trigger: Actions.AnyTrigger
33
+ }
34
+
35
+ export const createTriggerModification = createModificationType({
36
+ id: 'createTrigger',
37
+ handler: CreateTriggerModificationHandler,
38
+ })
39
+
40
+ export class CreateTriggerDiffer implements Differ {
41
+ createDiff(originalSchema: Schema, updatedSchema: Schema) {
42
+ return Object.entries(updatedSchema.actions.triggers)
43
+ .filter(([name]) => !originalSchema.actions.triggers[name])
44
+ .map(([, trigger]) => createTriggerModification.createModification({ trigger }))
45
+ }
46
+ }
@@ -0,0 +1,46 @@
1
+ import { MigrationBuilder } from '@contember/database-migrations'
2
+ import { Schema } from '@contember/schema'
3
+ import { SchemaUpdater } from '../utils/schemaUpdateUtils'
4
+ import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'
5
+
6
+ export class RemoveTargetModificationHandler implements ModificationHandler<RemoveTargetModificationData> {
7
+ constructor(private readonly data: RemoveTargetModificationData) {
8
+ }
9
+
10
+ public createSql(builder: MigrationBuilder): void {
11
+ }
12
+
13
+ public getSchemaUpdater(): SchemaUpdater {
14
+ return ({ schema }) => {
15
+ const { [this.data.name]: _, ...targets } = schema.actions.targets
16
+ return ({
17
+ ...schema,
18
+ actions: {
19
+ ...schema.actions,
20
+ targets,
21
+ },
22
+ })
23
+ }
24
+ }
25
+
26
+ describe() {
27
+ return { message: `Remove target ${this.data.name}` }
28
+ }
29
+ }
30
+
31
+ export interface RemoveTargetModificationData {
32
+ name: string
33
+ }
34
+
35
+ export const removeTargetModification = createModificationType({
36
+ id: 'removeTarget',
37
+ handler: RemoveTargetModificationHandler,
38
+ })
39
+
40
+ export class RemoveTargetDiffer implements Differ {
41
+ createDiff(originalSchema: Schema, updatedSchema: Schema) {
42
+ return Object.entries(originalSchema.actions.targets)
43
+ .filter(([name]) => !updatedSchema.actions.targets[name])
44
+ .map(([name]) => removeTargetModification.createModification({ name }))
45
+ }
46
+ }
@@ -0,0 +1,46 @@
1
+ import { MigrationBuilder } from '@contember/database-migrations'
2
+ import { Schema } from '@contember/schema'
3
+ import { SchemaUpdater } from '../utils/schemaUpdateUtils'
4
+ import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'
5
+
6
+ export class RemoveTriggerModificationHandler implements ModificationHandler<RemoveTriggerModificationData> {
7
+ constructor(private readonly data: RemoveTriggerModificationData) {
8
+ }
9
+
10
+ public createSql(builder: MigrationBuilder): void {
11
+ }
12
+
13
+ public getSchemaUpdater(): SchemaUpdater {
14
+ return ({ schema }) => {
15
+ const { [this.data.name]: _, ...triggers } = schema.actions.triggers
16
+ return ({
17
+ ...schema,
18
+ actions: {
19
+ ...schema.actions,
20
+ triggers,
21
+ },
22
+ })
23
+ }
24
+ }
25
+
26
+ describe() {
27
+ return { message: `Remove trigger ${this.data.name}` }
28
+ }
29
+ }
30
+
31
+ export interface RemoveTriggerModificationData {
32
+ name: string
33
+ }
34
+
35
+ export const removeTriggerModification = createModificationType({
36
+ id: 'removeTrigger',
37
+ handler: RemoveTriggerModificationHandler,
38
+ })
39
+
40
+ export class RemoveTriggerDiffer implements Differ {
41
+ createDiff(originalSchema: Schema, updatedSchema: Schema) {
42
+ return Object.entries(originalSchema.actions.triggers)
43
+ .filter(([name]) => !updatedSchema.actions.triggers[name])
44
+ .map(([name]) => removeTriggerModification.createModification({ name }))
45
+ }
46
+ }
@@ -0,0 +1,51 @@
1
+
2
+ import { MigrationBuilder } from '@contember/database-migrations'
3
+ import { Actions, Schema } from '@contember/schema'
4
+ import { SchemaUpdater } from '../utils/schemaUpdateUtils'
5
+ import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'
6
+ import deepEqual from 'fast-deep-equal'
7
+
8
+ export class UpdateTargetModificationHandler implements ModificationHandler<UpdateTargetModificationData> {
9
+ constructor(private readonly data: UpdateTargetModificationData) {
10
+ }
11
+
12
+ public createSql(builder: MigrationBuilder): void {
13
+ }
14
+
15
+ public getSchemaUpdater(): SchemaUpdater {
16
+ return ({ schema }) => {
17
+ return ({
18
+ ...schema,
19
+ actions: {
20
+ ...schema.actions,
21
+ targets: {
22
+ ...schema.actions.targets,
23
+ [this.data.name]: this.data.target,
24
+ },
25
+ },
26
+ })
27
+ }
28
+ }
29
+
30
+ describe() {
31
+ return { message: `Update target ${this.data.name}` }
32
+ }
33
+ }
34
+
35
+ export interface UpdateTargetModificationData {
36
+ name: string
37
+ target: Actions.AnyTarget
38
+ }
39
+
40
+ export const updateTargetModification = createModificationType({
41
+ id: 'updateTarget',
42
+ handler: UpdateTargetModificationHandler,
43
+ })
44
+
45
+ export class UpdateTargetDiffer implements Differ {
46
+ createDiff(originalSchema: Schema, updatedSchema: Schema) {
47
+ return Object.entries(updatedSchema.actions.targets)
48
+ .filter(([name, target]) => originalSchema.actions.targets[name] && !deepEqual(target, originalSchema.actions.targets[name]))
49
+ .map(([name, target]) => updateTargetModification.createModification({ name, target }))
50
+ }
51
+ }
@@ -0,0 +1,49 @@
1
+ import { MigrationBuilder } from '@contember/database-migrations'
2
+ import { Actions, Schema } from '@contember/schema'
3
+ import { SchemaUpdater } from '../utils/schemaUpdateUtils'
4
+ import { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'
5
+ import deepEqual from 'fast-deep-equal'
6
+
7
+ export class UpdateTriggerModificationHandler implements ModificationHandler<UpdateTriggerModificationData> {
8
+ constructor(private readonly data: UpdateTriggerModificationData) {
9
+ }
10
+
11
+ public createSql(builder: MigrationBuilder): void {
12
+ }
13
+
14
+ public getSchemaUpdater(): SchemaUpdater {
15
+ return ({ schema }) => {
16
+ return ({
17
+ ...schema,
18
+ actions: {
19
+ ...schema.actions,
20
+ triggers: {
21
+ ...schema.actions.triggers,
22
+ [this.data.trigger.name]: this.data.trigger,
23
+ },
24
+ },
25
+ })
26
+ }
27
+ }
28
+
29
+ describe() {
30
+ return { message: `Update trigger ${this.data.trigger.name}` }
31
+ }
32
+ }
33
+
34
+ export interface UpdateTriggerModificationData {
35
+ trigger: Actions.AnyTrigger
36
+ }
37
+
38
+ export const updateTriggerModification = createModificationType({
39
+ id: 'updateTrigger',
40
+ handler: UpdateTriggerModificationHandler,
41
+ })
42
+
43
+ export class UpdateTriggerDiffer implements Differ {
44
+ createDiff(originalSchema: Schema, updatedSchema: Schema) {
45
+ return Object.entries(updatedSchema.actions.triggers)
46
+ .filter(([name, trigger]) => originalSchema.actions.triggers[name] && !deepEqual(trigger, originalSchema.actions.triggers[name]))
47
+ .map(([, trigger]) => updateTriggerModification.createModification({ trigger }))
48
+ }
49
+ }
@@ -0,0 +1,3 @@
1
+ export * from './CreateTriggerModification'
2
+ export * from './RemoveTriggerModification'
3
+ export * from './UpdateTriggerModification'