mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-26 01:25:38 -05:00
Add projects support for Fabric DW (#24014)
* Update STS and add new platform * Update vsix version * Create Fabric DW project from database * Fix target platform name * Address comments * Revert projects version to 1.3.0 * Update STS to 4.9.0.22 * PR comment
This commit is contained in:
@@ -718,9 +718,10 @@ export async function fileContainsCreateTableStatement(fullPath: string, project
|
||||
/**
|
||||
* Gets target platform based on the server edition/version
|
||||
* @param serverInfo server information
|
||||
* @param serverUrl optional server URL, only used to check if it's a known domain for Microsoft Fabric DW
|
||||
* @returns target platform for the database project
|
||||
*/
|
||||
export async function getTargetPlatformFromServerVersion(serverInfo: azdataType.ServerInfo | vscodeMssql.IServerInfo): Promise<SqlTargetPlatform | undefined> {
|
||||
export async function getTargetPlatformFromServerVersion(serverInfo: azdataType.ServerInfo | vscodeMssql.IServerInfo, serverUrl?: string): Promise<SqlTargetPlatform | undefined> {
|
||||
const isCloud = serverInfo.isCloud;
|
||||
|
||||
let targetPlatform;
|
||||
@@ -728,9 +729,25 @@ export async function getTargetPlatformFromServerVersion(serverInfo: azdataType.
|
||||
const engineEdition = serverInfo.engineEditionId;
|
||||
const azdataApi = getAzdataApi();
|
||||
if (azdataApi) {
|
||||
targetPlatform = engineEdition === azdataApi.DatabaseEngineEdition.SqlDataWarehouse ? SqlTargetPlatform.sqlDW : SqlTargetPlatform.sqlAzure;
|
||||
// TODO: Update this when Fabric DW gets its own engine edition
|
||||
// https://github.com/microsoft/azuredatastudio/issues/24112
|
||||
if (engineEdition === azdataApi.DatabaseEngineEdition.SqlOnDemand && isSqlDwUnifiedServer(serverUrl)) {
|
||||
targetPlatform = SqlTargetPlatform.sqlDwUnified;
|
||||
} else if (engineEdition === azdataApi.DatabaseEngineEdition.SqlDataWarehouse) {
|
||||
targetPlatform = SqlTargetPlatform.sqlDW;
|
||||
} else {
|
||||
targetPlatform = SqlTargetPlatform.sqlAzure;
|
||||
}
|
||||
} else {
|
||||
targetPlatform = engineEdition === vscodeMssql.DatabaseEngineEdition.SqlDataWarehouse ? SqlTargetPlatform.sqlDW : SqlTargetPlatform.sqlAzure;
|
||||
// TODO: Update this when Fabric DW gets its own engine edition
|
||||
// https://github.com/microsoft/azuredatastudio/issues/24112
|
||||
if (engineEdition === vscodeMssql.DatabaseEngineEdition.SqlOnDemand && isSqlDwUnifiedServer(serverUrl)) {
|
||||
targetPlatform = SqlTargetPlatform.sqlDwUnified;
|
||||
} else if (engineEdition === vscodeMssql.DatabaseEngineEdition.SqlDataWarehouse) {
|
||||
targetPlatform = SqlTargetPlatform.sqlDW;
|
||||
} else {
|
||||
targetPlatform = SqlTargetPlatform.sqlAzure;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
const serverMajorVersion = serverInfo.serverMajorVersion;
|
||||
@@ -740,6 +757,16 @@ export async function getTargetPlatformFromServerVersion(serverInfo: azdataType.
|
||||
return targetPlatform;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines if a server name is a known domain for Microsoft Fabric DW. This is required because the engine edition for Fabric DW is the same as Serverless.
|
||||
* @param server The server name to check
|
||||
* @returns True if the server name matches a known domain for Microsoft Fabric DW, otherwise false
|
||||
*/
|
||||
export function isSqlDwUnifiedServer(server?: string): boolean | undefined {
|
||||
const serverLowerCase = server?.toLowerCase();
|
||||
return serverLowerCase?.includes("datawarehouse.pbidedicated.windows.net") || serverLowerCase?.includes("datawarehouse.fabric.microsoft.com");
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines if a given character is a valid filename character
|
||||
* @param c Character to validate
|
||||
|
||||
Reference in New Issue
Block a user