public static DataSourceView GetTypedDatSourceView(YDataSourceType dataSourceType, DataSourceView dataSourceView = null) { DataSourceView ds = dataSourceType switch { YDataSourceType.AzureBlobStorage => new DataSourceViewAzureBlobStorage(), YDataSourceType.AzureBlobFS => new DataSourceViewAzureBlobFS(), YDataSourceType.AzureSqlDatabase => new DataSourceViewAzureSqlDatabase(), YDataSourceType.AzureSqlDW => new DataSourceViewAzureSqlDatabase(), YDataSourceType.AzureDatabricks => new DataSourceViewAzureDatabricks(), YDataSourceType.CosmosDb => new DataSourceViewCosmosDb(), _ => new DataSourceViewUnknown() }; // clone if (dataSourceView != null) { ds.DataSource.AdditionalData = dataSourceView.DataSource.AdditionalData; ds.DataSource.Description = dataSourceView.DataSource.Description; ds.DataSource.Name = dataSourceView.DataSource.Name; ds.DataSource.Type = dataSourceView.DataSource.Type; ds.EngineId = dataSourceView.EngineId; ds.IsNew = dataSourceView.IsNew; if (ds.DataSource.AdditionalData?["properties"] is JObject props) { ds.DataSource.OnDeserialized(props); } } return(ds); } }
public static DataSourceView ToTypedDataSourceView(this DataSourceView dataSourceView, YDataSourceType dataSourceType) => DataSourceViewFactory.GetTypedDatSourceView(dataSourceType, dataSourceView);