chore: remove data source (#3610)
This commit is contained in:
		
							parent
							
								
									3acc574877
								
							
						
					
					
						commit
						89ad88857d
					
				@ -303,6 +303,45 @@ describe('data source', async () => {
 | 
			
		||||
    expect(mockDataSource).toBeInstanceOf(MockDataSource);
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('should destroy data source', async () => {
 | 
			
		||||
    class MockCollectionManager extends CollectionManager {}
 | 
			
		||||
 | 
			
		||||
    class MockDataSource extends DataSource {
 | 
			
		||||
      static testConnection(options?: any): Promise<boolean> {
 | 
			
		||||
        return Promise.resolve(true);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      async load(): Promise<void> {
 | 
			
		||||
        await waitSecond(1000);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      createCollectionManager(options?: any): any {
 | 
			
		||||
        return new MockCollectionManager();
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    app.dataSourceManager.factory.register('mock', MockDataSource);
 | 
			
		||||
 | 
			
		||||
    await app.db.getRepository('dataSources').create({
 | 
			
		||||
      values: {
 | 
			
		||||
        key: 'mockInstance1',
 | 
			
		||||
        type: 'mock',
 | 
			
		||||
        displayName: 'Mock',
 | 
			
		||||
        options: {},
 | 
			
		||||
      },
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    await waitSecond(2000);
 | 
			
		||||
 | 
			
		||||
    expect(app.dataSourceManager.dataSources.get('mockInstance1')).toBeDefined();
 | 
			
		||||
 | 
			
		||||
    await app.agent().resource('dataSources').destroy({
 | 
			
		||||
      filterByTk: 'mockInstance1',
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    expect(app.dataSourceManager.dataSources.get('mockInstance1')).not.toBeDefined();
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  describe('data source collections', () => {
 | 
			
		||||
    beforeEach(async () => {
 | 
			
		||||
      class MockCollectionManager extends CollectionManager {}
 | 
			
		||||
 | 
			
		||||
@ -19,18 +19,6 @@ export class DataSourcesFieldModel extends MagicAttributeModel {
 | 
			
		||||
    const newOptions = mergeOptions(oldField ? oldField.options : {}, options);
 | 
			
		||||
 | 
			
		||||
    collection.setField(name, newOptions);
 | 
			
		||||
 | 
			
		||||
    // const interfaceOption = options.interface;
 | 
			
		||||
 | 
			
		||||
    // if (interfaceOption === 'updatedAt') {
 | 
			
		||||
    //   // @ts-ignore
 | 
			
		||||
    //   collection.model._timestampAttributes.createdAt = this.get('name');
 | 
			
		||||
    // }
 | 
			
		||||
    //
 | 
			
		||||
    // if (interfaceOption === 'createdAt') {
 | 
			
		||||
    //   // @ts-ignore
 | 
			
		||||
    //   collection.model._timestampAttributes.updatedAt = this.get('name');
 | 
			
		||||
    // }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  unload(loadOptions: LoadOptions) {
 | 
			
		||||
@ -38,7 +26,14 @@ export class DataSourcesFieldModel extends MagicAttributeModel {
 | 
			
		||||
    const options = this.get();
 | 
			
		||||
    const { collectionName, name, dataSourceKey } = options;
 | 
			
		||||
    const dataSource = app.dataSourceManager.dataSources.get(dataSourceKey);
 | 
			
		||||
    if (!dataSource) {
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
    const collection = dataSource.collectionManager.getCollection(collectionName);
 | 
			
		||||
    if (!collection) {
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    collection.removeField(name);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -322,6 +322,10 @@ export class PluginDataSourceManagerServer extends Plugin {
 | 
			
		||||
      });
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    this.app.db.on('dataSources.afterDestroy', async (model: DataSourceModel) => {
 | 
			
		||||
      this.app.dataSourceManager.dataSources.delete(model.get('key'));
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    this.app.on('afterStart', async (app: Application) => {
 | 
			
		||||
      const dataSourcesRecords: DataSourceModel[] = await this.app.db.getRepository('dataSources').find({
 | 
			
		||||
        filter: {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user