@objectstack/metadata 0.8.2 → 0.9.0
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/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/migration/executor.d.ts +9 -0
- package/dist/migration/executor.d.ts.map +1 -0
- package/dist/migration/executor.js +49 -0
- package/dist/migration/index.d.ts +2 -0
- package/dist/migration/index.d.ts.map +1 -0
- package/dist/migration/index.js +1 -0
- package/package.json +4 -4
- package/src/index.ts +1 -0
- package/src/migration/executor.ts +52 -0
- package/src/migration/index.ts +1 -0
package/dist/index.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ export { FilesystemLoader } from './loaders/filesystem-loader.js';
|
|
|
10
10
|
export { type MetadataSerializer, type SerializeOptions } from './serializers/serializer-interface.js';
|
|
11
11
|
export { JSONSerializer } from './serializers/json-serializer.js';
|
|
12
12
|
export { YAMLSerializer } from './serializers/yaml-serializer.js';
|
|
13
|
+
export * as Migration from './migration/index.js';
|
|
13
14
|
export { TypeScriptSerializer } from './serializers/typescript-serializer.js';
|
|
14
15
|
export type { MetadataFormat, MetadataStats, MetadataLoadOptions, MetadataSaveOptions, MetadataExportOptions, MetadataImportOptions, MetadataLoadResult, MetadataSaveResult, MetadataWatchEvent, MetadataCollectionInfo, MetadataLoaderContract, MetadataManagerConfig, } from '@objectstack/spec/system';
|
|
15
16
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,eAAe,EAAE,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG5E,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAGlE,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACvG,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAG9E,YAAY,EACV,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,eAAe,EAAE,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG5E,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAGlE,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACvG,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAG9E,YAAY,EACV,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,0BAA0B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -10,4 +10,5 @@ export { MetadataPlugin } from './plugin.js';
|
|
|
10
10
|
export { FilesystemLoader } from './loaders/filesystem-loader.js';
|
|
11
11
|
export { JSONSerializer } from './serializers/json-serializer.js';
|
|
12
12
|
export { YAMLSerializer } from './serializers/yaml-serializer.js';
|
|
13
|
+
export * as Migration from './migration/index.js';
|
|
13
14
|
export { TypeScriptSerializer } from './serializers/typescript-serializer.js';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { System } from '@objectstack/spec';
|
|
2
|
+
import { ISchemaDriver } from '@objectstack/spec/contracts';
|
|
3
|
+
export declare class MigrationExecutor {
|
|
4
|
+
private driver;
|
|
5
|
+
constructor(driver: ISchemaDriver);
|
|
6
|
+
executeChangeSet(changeSet: System.ChangeSet): Promise<void>;
|
|
7
|
+
private executeOperation;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/migration/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,qBAAa,iBAAiB;IAChB,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAEnC,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;YAapD,gBAAgB;CAgC/B"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export class MigrationExecutor {
|
|
2
|
+
constructor(driver) {
|
|
3
|
+
this.driver = driver;
|
|
4
|
+
}
|
|
5
|
+
async executeChangeSet(changeSet) {
|
|
6
|
+
console.log(`Executing ChangeSet: ${changeSet.name} (${changeSet.id})`);
|
|
7
|
+
for (const op of changeSet.operations) {
|
|
8
|
+
try {
|
|
9
|
+
await this.executeOperation(op);
|
|
10
|
+
}
|
|
11
|
+
catch (e) {
|
|
12
|
+
console.error(`Failed to execute operation ${op.type}:`, e);
|
|
13
|
+
throw e;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
async executeOperation(op) {
|
|
18
|
+
switch (op.type) {
|
|
19
|
+
case 'create_object':
|
|
20
|
+
console.log(` > Create Object: ${op.object.name}`);
|
|
21
|
+
await this.driver.createCollection(op.object.name, op.object);
|
|
22
|
+
break;
|
|
23
|
+
case 'add_field':
|
|
24
|
+
console.log(` > Add Field: ${op.objectName}.${op.fieldName}`);
|
|
25
|
+
await this.driver.addColumn(op.objectName, op.fieldName, op.field);
|
|
26
|
+
break;
|
|
27
|
+
case 'remove_field':
|
|
28
|
+
console.log(` > Remove Field: ${op.objectName}.${op.fieldName}`);
|
|
29
|
+
await this.driver.dropColumn(op.objectName, op.fieldName);
|
|
30
|
+
break;
|
|
31
|
+
case 'delete_object':
|
|
32
|
+
console.log(` > Delete Object: ${op.objectName}`);
|
|
33
|
+
await this.driver.dropCollection(op.objectName);
|
|
34
|
+
break;
|
|
35
|
+
case 'execute_sql':
|
|
36
|
+
console.log(` > Execute SQL`);
|
|
37
|
+
await this.driver.executeRaw(op.sql);
|
|
38
|
+
break;
|
|
39
|
+
case 'modify_field':
|
|
40
|
+
console.warn(` ! Modify Field: ${op.objectName}.${op.fieldName} (Not fully implemented)`);
|
|
41
|
+
break;
|
|
42
|
+
case 'rename_object':
|
|
43
|
+
console.warn(` ! Rename Object: ${op.oldName} -> ${op.newName} (Not fully implemented)`);
|
|
44
|
+
break;
|
|
45
|
+
default:
|
|
46
|
+
throw new Error(`Unknown operation type`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/migration/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './executor.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@objectstack/metadata",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Metadata loading, saving, and persistence for ObjectStack",
|
|
5
5
|
"main": "src/index.ts",
|
|
6
6
|
"types": "src/index.ts",
|
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
"js-yaml": "^4.1.0",
|
|
17
17
|
"chokidar": "^3.5.3",
|
|
18
18
|
"zod": "^4.3.6",
|
|
19
|
-
"@objectstack/core": "0.
|
|
20
|
-
"@objectstack/spec": "0.
|
|
21
|
-
"@objectstack/types": "0.
|
|
19
|
+
"@objectstack/core": "0.9.0",
|
|
20
|
+
"@objectstack/spec": "0.9.0",
|
|
21
|
+
"@objectstack/types": "0.9.0"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
24
|
"@types/js-yaml": "^4.0.9",
|
package/src/index.ts
CHANGED
|
@@ -18,6 +18,7 @@ export { FilesystemLoader } from './loaders/filesystem-loader.js';
|
|
|
18
18
|
export { type MetadataSerializer, type SerializeOptions } from './serializers/serializer-interface.js';
|
|
19
19
|
export { JSONSerializer } from './serializers/json-serializer.js';
|
|
20
20
|
export { YAMLSerializer } from './serializers/yaml-serializer.js';
|
|
21
|
+
export * as Migration from './migration/index.js';
|
|
21
22
|
export { TypeScriptSerializer } from './serializers/typescript-serializer.js';
|
|
22
23
|
|
|
23
24
|
// Re-export types from spec
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { System } from '@objectstack/spec';
|
|
2
|
+
import { ISchemaDriver } from '@objectstack/spec/contracts';
|
|
3
|
+
|
|
4
|
+
export class MigrationExecutor {
|
|
5
|
+
constructor(private driver: ISchemaDriver) {}
|
|
6
|
+
|
|
7
|
+
async executeChangeSet(changeSet: System.ChangeSet): Promise<void> {
|
|
8
|
+
console.log(`Executing ChangeSet: ${changeSet.name} (${changeSet.id})`);
|
|
9
|
+
|
|
10
|
+
for (const op of changeSet.operations) {
|
|
11
|
+
try {
|
|
12
|
+
await this.executeOperation(op);
|
|
13
|
+
} catch (e) {
|
|
14
|
+
console.error(`Failed to execute operation ${op.type}:`, e);
|
|
15
|
+
throw e;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
private async executeOperation(op: System.MigrationOperation): Promise<void> {
|
|
21
|
+
switch (op.type) {
|
|
22
|
+
case 'create_object':
|
|
23
|
+
console.log(` > Create Object: ${op.object.name}`);
|
|
24
|
+
await this.driver.createCollection(op.object.name, op.object);
|
|
25
|
+
break;
|
|
26
|
+
case 'add_field':
|
|
27
|
+
console.log(` > Add Field: ${op.objectName}.${op.fieldName}`);
|
|
28
|
+
await this.driver.addColumn(op.objectName, op.fieldName, op.field);
|
|
29
|
+
break;
|
|
30
|
+
case 'remove_field':
|
|
31
|
+
console.log(` > Remove Field: ${op.objectName}.${op.fieldName}`);
|
|
32
|
+
await this.driver.dropColumn(op.objectName, op.fieldName);
|
|
33
|
+
break;
|
|
34
|
+
case 'delete_object':
|
|
35
|
+
console.log(` > Delete Object: ${op.objectName}`);
|
|
36
|
+
await this.driver.dropCollection(op.objectName);
|
|
37
|
+
break;
|
|
38
|
+
case 'execute_sql':
|
|
39
|
+
console.log(` > Execute SQL`);
|
|
40
|
+
await this.driver.executeRaw(op.sql);
|
|
41
|
+
break;
|
|
42
|
+
case 'modify_field':
|
|
43
|
+
console.warn(` ! Modify Field: ${op.objectName}.${op.fieldName} (Not fully implemented)`);
|
|
44
|
+
break;
|
|
45
|
+
case 'rename_object':
|
|
46
|
+
console.warn(` ! Rename Object: ${op.oldName} -> ${op.newName} (Not fully implemented)`);
|
|
47
|
+
break;
|
|
48
|
+
default:
|
|
49
|
+
throw new Error(`Unknown operation type`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './executor.js';
|