add-migrations.ps1 2.54 KB
Newer Older
janskoruba's avatar
janskoruba committed
1
param([string] $migration = 'DbInit', [string] $migrationProviderName = 'All')
2
$projectName = "Skoruba.IdentityServer4";
3
$currentPath = Get-Location
4
Set-Location "../src/$projectName.Admin"
5
6
7
Copy-Item appsettings.json -Destination appsettings-backup.json
$settings = Get-Content appsettings.json -raw

8
9
10
11
12
13
14
#Initialze db context and define the target directory
$targetContexts = @{ 
    AdminIdentityDbContext                = "Migrations\Identity"
    AdminLogDbContext                     = "Migrations\Logging";
    IdentityServerConfigurationDbContext  = "Migrations\IdentityServerConfiguration";
    IdentityServerPersistedGrantDbContext = "Migrations\IdentityServerGrants";
    AdminAuditLogDbContext                = "Migrations\AuditLogging";
15
	IdentityServerDataProtectionDbContext = "Migrations\DataProtection";
16
}
17

18
19
20
21
22
23
#Initialize the db providers and it's respective projects
$dpProviders = @{
    SqlServer  = "..\..\src\$projectName.Admin.EntityFramework.SqlServer\$projectName.Admin.EntityFramework.SqlServer.csproj";
    PostgreSQL = "..\..\src\$projectName.Admin.EntityFramework.PostgreSQL\$projectName.Admin.EntityFramework.PostgreSQL.csproj";
    MySql      = "..\..\src\$projectName.Admin.EntityFramework.MySql\$projectName.Admin.EntityFramework.MySql.csproj";
}
24

25
26
27
#Fix issue when the tools is not installed and the nuget package does not work see https://github.com/MicrosoftDocs/azure-docs/issues/40048
Write-Host "Updating donet ef tools"
$env:Path += "	% USERPROFILE % \.dotnet\tools";
28
dotnet tool update --global dotnet-ef
29

30
31
32
33
Write-Host "Start migrate projects"
foreach ($provider in $dpProviders.Keys) {

    if ($migrationProviderName -eq 'All' -or $migrationProviderName -eq $provider) {
janskoruba's avatar
janskoruba committed
34
    
35
36
        $projectPath = (Get-Item -Path $dpProviders[$provider] -Verbose).FullName;
        Write-Host "Generate migration for db provider:" $provider ", for project path - " $projectPath
janskoruba's avatar
janskoruba committed
37

38
        $providerName = '"ProviderType": "' + $provider + '"'
janskoruba's avatar
janskoruba committed
39
40
41

        $settings = $settings -replace '"ProviderType".*', $providerName
        $settings | set-content appsettings.json
42
43
44
45
46
47
48
49
50
        if ((Test-Path $projectPath) -eq $true) {
            foreach ($context in $targetContexts.Keys) {
                $migrationPath = $targetContexts[$context];

                Write-Host "Migrating context " $context
                dotnet ef migrations add $migration -c $context -o $migrationPath -p $projectPath
            } 
        }
        
janskoruba's avatar
janskoruba committed
51
    }
janskoruba's avatar
janskoruba committed
52
}
53
54
55
56

Remove-Item appsettings.json
Copy-Item appsettings-backup.json -Destination appsettings.json
Remove-Item appsettings-backup.json
57
Set-Location $currentPath