Skip to content

Commit

Permalink
feat: added SQLCMD variable support
Browse files Browse the repository at this point in the history
  • Loading branch information
andygjp committed Dec 10, 2016
1 parent ab0bacd commit f10eb2a
Showing 1 changed file with 13 additions and 7 deletions.
20 changes: 13 additions & 7 deletions src/app/FakeLib/Sql.DacPac.fs
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,9 @@ type DeployDbArgs = {
/// Recreates the database from scratch on publish (rather than an in-place update). Defaults to false.
RecreateDb : bool
/// Additional configuration parameters required by sqlpackage.exe
AdditionalSqlPackageProperties : (string * string) list }
AdditionalSqlPackageProperties : (string * string) list
/// SQLCMD variables
Variables : (string * string) list }

let validPaths =
let getSqlVersion (path:string) = path.Split '\\' |> Array.item 3 |> int
Expand All @@ -60,7 +62,8 @@ let defaultDeploymentArgs =
BlockOnPossibleDataLoss = true
DropObjectsNotInSource = false
RecreateDb = false
AdditionalSqlPackageProperties = [] }
AdditionalSqlPackageProperties = []
Variables = [] }

module PropertyKeys =
/// When creating a new SQL Azure database, specifies the database service tier to use e.g. S2, P1
Expand All @@ -80,10 +83,13 @@ let deployDb setParams =
let args = setParams defaultDeploymentArgs
let action, outputPath = generateCommandLine args.Action

let additionalParameters =
args.AdditionalSqlPackageProperties
|> List.map (fun (key, value) -> sprintf "/p:%s=%s" key value)
|> String.concat " "
let concat parameter =
List.map (fun (key, value) -> sprintf "/%s:%s=%s" parameter key value)
>> String.concat " "

let additionalParameters = args.AdditionalSqlPackageProperties |> concat "p"

let variables = args.Variables |> concat "v"

if System.String.IsNullOrWhiteSpace args.SqlPackageToolPath then
failwith "No SqlPackage.exe filename was given."
Expand All @@ -93,7 +99,7 @@ let deployDb setParams =

shellExec {
Program = args.SqlPackageToolPath
CommandLine = sprintf """/Action:%s /SourceFile:"%s" /TargetConnectionString:"%s" %s /p:BlockOnPossibleDataLoss=%b /p:DropObjectsNotInSource=%b /p:CommandTimeout=%d /p:CreateNewDatabase=%b %s""" action args.Source args.Destination outputPath args.BlockOnPossibleDataLoss args.DropObjectsNotInSource args.Timeout args.RecreateDb additionalParameters
CommandLine = sprintf """/Action:%s /SourceFile:"%s" /TargetConnectionString:"%s" %s /p:BlockOnPossibleDataLoss=%b /p:DropObjectsNotInSource=%b /p:CommandTimeout=%d /p:CreateNewDatabase=%b %s %s""" action args.Source args.Destination outputPath args.BlockOnPossibleDataLoss args.DropObjectsNotInSource args.Timeout args.RecreateDb additionalParameters variables
WorkingDirectory = ""
Args = [] }

Expand Down

0 comments on commit f10eb2a

Please sign in to comment.