feat: workspace sync (#3505)

* feat: wip workspace sync

* feat: wip lot of debugging

* feat: refactor and fix sync

* fix: clean

fix: clean

* feat: add simple comparator tests

* fix: remove debug

* feat: wip drop table

* fix: main merge

* fix: some issues, and prepare storage system to handle complex deletion

* feat: wip clean and fix

* fix: reflect issue when using array instead of map and clean

* fix: test & sync

* fix: yarn files

* fix: unecesary if-else

* fix: if condition not needed

* fix: remove debug

* fix: replace EQUAL by SKIP

* fix: sync metadata relation not applied properly

* fix: lint issues

* fix: merge issue
This commit is contained in:
Jérémy M
2024-01-30 14:40:55 +01:00
committed by GitHub
parent 3a480f1506
commit 73f6876641
59 changed files with 2103 additions and 927 deletions

View File

@ -0,0 +1,93 @@
import { PartialObjectMetadata } from 'src/workspace/workspace-sync-metadata/interfaces/partial-object-metadata.interface';
import { PartialFieldMetadata } from 'src/workspace/workspace-sync-metadata/interfaces/partial-field-metadata.interface';
import { ObjectMetadataEntity } from 'src/metadata/object-metadata/object-metadata.entity';
import { FieldMetadataEntity } from 'src/metadata/field-metadata/field-metadata.entity';
import { RelationMetadataEntity } from 'src/metadata/relation-metadata/relation-metadata.entity';
export class WorkspaceSyncStorage {
// Object metadata
private readonly _objectMetadataCreateCollection: PartialObjectMetadata[] =
[];
private readonly _objectMetadataUpdateCollection: Partial<PartialObjectMetadata>[] =
[];
private readonly _objectMetadataDeleteCollection: ObjectMetadataEntity[] = [];
// Field metadata
private readonly _fieldMetadataCreateCollection: PartialFieldMetadata[] = [];
private readonly _fieldMetadataUpdateCollection: Partial<PartialFieldMetadata>[] =
[];
private readonly _fieldMetadataDeleteCollection: FieldMetadataEntity[] = [];
// Relation metadata
private readonly _relationMetadataCreateCollection: Partial<RelationMetadataEntity>[] =
[];
private readonly _relationMetadataDeleteCollection: RelationMetadataEntity[] =
[];
constructor() {}
get objectMetadataCreateCollection() {
return this._objectMetadataCreateCollection;
}
get objectMetadataUpdateCollection() {
return this._objectMetadataUpdateCollection;
}
get objectMetadataDeleteCollection() {
return this._objectMetadataDeleteCollection;
}
get fieldMetadataCreateCollection() {
return this._fieldMetadataCreateCollection;
}
get fieldMetadataUpdateCollection() {
return this._fieldMetadataUpdateCollection;
}
get fieldMetadataDeleteCollection() {
return this._fieldMetadataDeleteCollection;
}
get relationMetadataCreateCollection() {
return this._relationMetadataCreateCollection;
}
get relationMetadataDeleteCollection() {
return this._relationMetadataDeleteCollection;
}
addCreateObjectMetadata(object: PartialObjectMetadata) {
this._objectMetadataCreateCollection.push(object);
}
addUpdateObjectMetadata(object: Partial<PartialObjectMetadata>) {
this._objectMetadataUpdateCollection.push(object);
}
addDeleteObjectMetadata(object: ObjectMetadataEntity) {
this._objectMetadataDeleteCollection.push(object);
}
addCreateFieldMetadata(field: PartialFieldMetadata) {
this._fieldMetadataCreateCollection.push(field);
}
addUpdateFieldMetadata(field: Partial<PartialFieldMetadata>) {
this._fieldMetadataUpdateCollection.push(field);
}
addDeleteFieldMetadata(field: FieldMetadataEntity) {
this._fieldMetadataDeleteCollection.push(field);
}
addCreateRelationMetadata(relation: Partial<RelationMetadataEntity>) {
this._relationMetadataCreateCollection.push(relation);
}
addDeleteRelationMetadata(relation: RelationMetadataEntity) {
this._relationMetadataDeleteCollection.push(relation);
}
}