예제 #1
0
        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);
        }
    }
예제 #2
0
 public static DataSourceView ToTypedDataSourceView(this DataSourceView dataSourceView, YDataSourceType dataSourceType) => DataSourceViewFactory.GetTypedDatSourceView(dataSourceType, dataSourceView);