DSCResources/STDataTier/STDataTier.schema.psm1

configuration STDataTier
{
 param
    (
        [Parameter(Mandatory)]
        [ValidateNotNullOrEmpty()]
        [String]$Ensure,

        [Parameter(Mandatory)]
        [ValidateNotNullOrEmpty()]
        [String]$SqlServer,

        [Parameter(Mandatory)]
        [ValidateNotNullOrEmpty()]
        [String]$SqlServerVersion,

        [Parameter(Mandatory)]
        [ValidateNotNullOrEmpty()]
        [String]$DeploymentPath,

        [Parameter(Mandatory)]
        [ValidateNotNullOrEmpty()]
        [hashtable]$configLogin,

        [Parameter(Mandatory)]
        [ValidateNotNullOrEmpty()]
        [hashtable]$tradeLogin
    )

    Import-DscResource -module xDatabase
    Import-DscResource -module xNetworking

   
         Service SQLService
         {
              Name = "MSSQLSERVER"
              StartupType = "Automatic"
              State = "Running"
         }

         xFirewall Firewall
         {
           Name = "SqlServerPort"
           Ensure = "Present"
           DisplayName = "SQL Port - 1433"
           Access = "Allow"
           State = "Enabled"
           Profile = "Any"
           Direction = "Inbound"
           LocalPort = "1433"
           Protocol = "tcp"
           DependsOn               =  "[Service]SQLService"
         }         

         xDatabaseLogin AdminLogin
         {
              Ensure                  =  $Ensure
              LoginName               =  $configLogin.login
              LoginPassword           =  $configLogin.password
              SqlAuthType             =  "Windows"
              SqlServer               =  $SqlServer
              DependsOn               =  "[Service]SQLService"
         }

         xDatabaseLogin TradeLogin
         {
              Ensure                  =  $Ensure
              LoginName               =  $tradeLogin.login
              LoginPassword           =  $tradeLogin.password
              SqlAuthType             =  "Windows"
              SqlServer               =  $SqlServer
              DependsOn               =  "[Service]SQLService"
         }                   

         xDatabase LoggingDb
         {
              Ensure                  =  $Ensure
              DatabaseName            =  "Logging"
              SqlServer               =  $SqlServer
              SqlServerVersion        =  $SqlServerVersion
              SqlAuthType             =  "Windows"
              DacPacPath              =  $DeploymentPath + "\DataBaseArtifacts\DACPAC\Logging.dacpac"
              DacPacApplicationName   =  "logging_1"
              DependsOn               =  @('[xDatabaseLogin]AdminLogin', '[xDatabaseLogin]TradeLogin', '[Service]SQLService')
        }
        
         xDatabase AzureOrderProcessorRepositoryDb
         {
              Ensure                  =  $Ensure
              DatabaseName            =  "AzureOrderProcessorRepository"
              SqlServer               =  $SqlServer
              SqlServerVersion        =  $SqlServerVersion
              SqlAuthType             =  "Windows"
              BacPacPath              =  $DeploymentPath + "\DataBaseArtifacts\BACPAC\AzureOrderProcessorRepository.bacpac"
              DependsOn               =  @('[xDatabaseLogin]AdminLogin', '[xDatabaseLogin]TradeLogin', '[Service]SQLService')
         } 

         xDatabase AzureBusinessServiceRepositoryDb
         {
              Ensure                  =  $Ensure
              DatabaseName            =  "AzureBusinessServiceRepository"
              SqlServer               =  $SqlServer
              SqlServerVersion        =  $SqlServerVersion
              SqlAuthType             =  "Windows"
              BacPacPath              =  $DeploymentPath + "\DataBaseArtifacts\BACPAC\AzureBusinessServiceRepository.bacpac"
              DependsOn               =  @('[xDatabaseLogin]AdminLogin', '[xDatabaseLogin]TradeLogin', '[Service]SQLService')
         }

         xDatabase AzureStockTraderAccountDb
         {
              Ensure                  =  $Ensure
              DatabaseName            =  "AzureStockTraderAccountDB"
              SqlServer               =  $SqlServer
              SqlServerVersion        =  $SqlServerVersion
              SqlAuthType             =  "Windows"
              BacPacPath              =  $DeploymentPath + "\DataBaseArtifacts\BACPAC\AzureStockTraderAccountDB.bacpac"
              DependsOn               =  @('[xDatabaseLogin]AdminLogin', '[xDatabaseLogin]TradeLogin', '[Service]SQLService')
         }

         xDatabase AzureStockTraderQuoteDb
         {
              Ensure                  =  $Ensure
              DatabaseName            =  "AzureStockTraderQuoteDB"
              SqlServer               =  $SqlServer
              SqlServerVersion        =  $SqlServerVersion
              SqlAuthType             =  "Windows"
              BacPacPath              =  $DeploymentPath + "\DataBaseArtifacts\BACPAC\AzureStockTraderQuoteDB.bacpac"
              DependsOn               =  @('[xDatabaseLogin]AdminLogin', '[xDatabaseLogin]TradeLogin', '[Service]SQLService')
         }

         xDatabase AzureStockTraderWebAppRepositoryDb
         {
              Ensure                  =  $Ensure
              DatabaseName            =  "AzureStockTraderWebAppRepository"
              SqlServer               =  $SqlServer
              SqlServerVersion        =  $SqlServerVersion
              SqlAuthType             =  "Windows"
              BacPacPath              =  $DeploymentPath + "\DataBaseArtifacts\BACPAC\AzureStockTraderWebAppRepository.bacpac"
              DependsOn               =  @('[xDatabaseLogin]AdminLogin', '[xDatabaseLogin]TradeLogin', '[Service]SQLService')
         }
         
         xDatabaseServer SqlAuthenticationMode
         {
              LoginMode = "Mixed"
              DependsOn               =  "[Service]SQLService"
         } 
}