mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-16 17:22:29 -05:00
Add db and server sqlcmd variables for database references (#12089)
* add support for adding db and server sqlcmd variables * fix incrementing * split up test
This commit is contained in:
@@ -498,7 +498,6 @@ export class Project {
|
||||
if (isSystemDatabaseProjectEntry) {
|
||||
this.addSystemDatabaseReferenceToProjFile(<SystemDatabaseReferenceProjectEntry>entry);
|
||||
} else {
|
||||
|
||||
const referenceNode = this.projFileXmlDoc.createElement(constants.ArtifactReference);
|
||||
referenceNode.setAttribute(constants.Include, entry.pathForSqlProj());
|
||||
this.addDatabaseReferenceChildren(referenceNode, entry);
|
||||
@@ -519,13 +518,30 @@ export class Project {
|
||||
suppressMissingDependenciesErrorNode.appendChild(falseTextNode);
|
||||
referenceNode.appendChild(suppressMissingDependenciesErrorNode);
|
||||
|
||||
// TODO: add support for sqlcmd vars and server https://github.com/microsoft/azuredatastudio/issues/12036
|
||||
if (entry.databaseVariableLiteralValue) {
|
||||
if ((<DacpacReferenceProjectEntry>entry).databaseSqlCmdVariable) {
|
||||
const databaseSqlCmdVariableElement = this.projFileXmlDoc.createElement(constants.DatabaseSqlCmdVariable);
|
||||
const databaseSqlCmdVariableTextNode = this.projFileXmlDoc.createTextNode((<DacpacReferenceProjectEntry>entry).databaseSqlCmdVariable);
|
||||
databaseSqlCmdVariableElement.appendChild(databaseSqlCmdVariableTextNode);
|
||||
referenceNode.appendChild(databaseSqlCmdVariableElement);
|
||||
|
||||
// add SQLCMD variable
|
||||
this.addSqlCmdVariable((<DacpacReferenceProjectEntry>entry).databaseSqlCmdVariable!, (<DacpacReferenceProjectEntry>entry).databaseName);
|
||||
} else if (entry.databaseVariableLiteralValue) {
|
||||
const databaseVariableLiteralValueElement = this.projFileXmlDoc.createElement(constants.DatabaseVariableLiteralValue);
|
||||
const databaseTextNode = this.projFileXmlDoc.createTextNode(entry.databaseVariableLiteralValue);
|
||||
databaseVariableLiteralValueElement.appendChild(databaseTextNode);
|
||||
referenceNode.appendChild(databaseVariableLiteralValueElement);
|
||||
}
|
||||
|
||||
if ((<DacpacReferenceProjectEntry>entry).serverSqlCmdVariable) {
|
||||
const serverSqlCmdVariableElement = this.projFileXmlDoc.createElement(constants.ServerSqlCmdVariable);
|
||||
const serverSqlCmdVariableTextNode = this.projFileXmlDoc.createTextNode((<DacpacReferenceProjectEntry>entry).serverSqlCmdVariable);
|
||||
serverSqlCmdVariableElement.appendChild(serverSqlCmdVariableTextNode);
|
||||
referenceNode.appendChild(serverSqlCmdVariableElement);
|
||||
|
||||
// add SQLCMD variable
|
||||
this.addSqlCmdVariable((<DacpacReferenceProjectEntry>entry).serverSqlCmdVariable!, (<DacpacReferenceProjectEntry>entry).serverName!);
|
||||
}
|
||||
}
|
||||
|
||||
public addSqlCmdVariableToProjFile(entry: SqlCmdVariableProjectEntry): void {
|
||||
@@ -561,7 +577,7 @@ export class Project {
|
||||
*/
|
||||
private getNextSqlCmdVariableCounter(): number {
|
||||
const sqlCmdVariableNodes = this.projFileXmlDoc.documentElement.getElementsByTagName(constants.SqlCmdVariable);
|
||||
let highestNumber = 1;
|
||||
let highestNumber = 0;
|
||||
|
||||
for (let i = 0; i < sqlCmdVariableNodes.length; i++) {
|
||||
const value: string = sqlCmdVariableNodes[i].getElementsByTagName(constants.Value)[0].childNodes[0].nodeValue;
|
||||
@@ -767,11 +783,17 @@ export interface IDatabaseReferenceProjectEntry extends FileProjectEntry {
|
||||
export class DacpacReferenceProjectEntry extends FileProjectEntry implements IDatabaseReferenceProjectEntry {
|
||||
databaseLocation: DatabaseReferenceLocation;
|
||||
databaseVariableLiteralValue?: string;
|
||||
databaseSqlCmdVariable?: string;
|
||||
serverName?: string;
|
||||
serverSqlCmdVariable?: string;
|
||||
|
||||
constructor(settings: IDacpacReferenceSettings) {
|
||||
super(settings.dacpacFileLocation, '', EntryType.DatabaseReference);
|
||||
this.databaseLocation = settings.databaseLocation;
|
||||
this.databaseSqlCmdVariable = settings.databaseVariable;
|
||||
this.databaseVariableLiteralValue = settings.databaseName;
|
||||
this.serverName = settings.serverName;
|
||||
this.serverSqlCmdVariable = settings.serverVariable;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user