Пример #1
0
 public override void Up()
 {
     AlterColumn("dbo.Salaries", "HouseRent", c => c.String());
     MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "MoharghoAlloowance");
     AlterColumn("dbo.Salaries", "MoharghoAlloowance", c => c.String());
     AlterColumn("dbo.Salaries", "MedicalAllowance", c => c.String());
     AlterColumn("dbo.Salaries", "TelephoneAllowance", c => c.String());
     AlterColumn("dbo.Salaries", "CurriculumAssitanceAllowance", c => c.String());
     AlterColumn("dbo.Salaries", "AssistantProctorAllowance", c => c.String());
     MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "DeanAllowance");
     AlterColumn("dbo.Salaries", "DeanAllowance", c => c.String());
     MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "ChairmanAllowance");
     AlterColumn("dbo.Salaries", "ChairmanAllowance", c => c.String());
     MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "ProvostAllowance");
     AlterColumn("dbo.Salaries", "ProvostAllowance", c => c.String());
     MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "AssistantProvostAllowance");
     AlterColumn("dbo.Salaries", "AssistantProvostAllowance", c => c.String());
     MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "WardenDirectorAllowance");
     AlterColumn("dbo.Salaries", "WardenDirectorAllowance", c => c.String());
     MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "StudentAdvisorAllowance");
     AlterColumn("dbo.Salaries", "StudentAdvisorAllowance", c => c.String());
     AlterColumn("dbo.Salaries", "ResearchAllowance", c => c.String());
     MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "BookAllowance");
     AlterColumn("dbo.Salaries", "BookAllowance", c => c.String());
     MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "AdditionalDutiesAllowance");
     AlterColumn("dbo.Salaries", "AdditionalDutiesAllowance", c => c.String());
     MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "PresonAllowance");
     AlterColumn("dbo.Salaries", "PresonAllowance", c => c.String());
     MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "OthersAddition");
     AlterColumn("dbo.Salaries", "OthersAddition", c => c.String());
     AlterColumn("dbo.Salaries", "Somonnoy", c => c.String());
     AlterColumn("dbo.Salaries", "Total", c => c.String());
     AlterColumn("dbo.Salaries", "GPF", c => c.String());
     AlterColumn("dbo.Salaries", "BF", c => c.String());
     MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "FutureFund");
     AlterColumn("dbo.Salaries", "FutureFund", c => c.String());
     AlterColumn("dbo.Salaries", "TransportationAllowance", c => c.String());
     AlterColumn("dbo.Salaries", "IncomeTax", c => c.String());
     AlterColumn("dbo.Salaries", "RevenueStamp", c => c.String());
     MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "DevelopmentFund");
     AlterColumn("dbo.Salaries", "DevelopmentFund", c => c.String());
     MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "StudentDevelopmentFund");
     AlterColumn("dbo.Salaries", "StudentDevelopmentFund", c => c.String());
     MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "TeacherFamilyDevelopment");
     AlterColumn("dbo.Salaries", "TeacherFamilyDevelopment", c => c.String());
     MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "Club");
     AlterColumn("dbo.Salaries", "Club", c => c.String());
     MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "HouseRentSub");
     AlterColumn("dbo.Salaries", "HouseRentSub", c => c.String());
     MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "GasBill");
     AlterColumn("dbo.Salaries", "GasBill", c => c.String());
     MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "InternetBill");
     AlterColumn("dbo.Salaries", "InternetBill", c => c.String());
     MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "GroupInsurance");
     AlterColumn("dbo.Salaries", "GroupInsurance", c => c.String());
     AlterColumn("dbo.Salaries", "TotalSubtraction", c => c.String());
     AlterColumn("dbo.Salaries", "NeatSalary", c => c.String());
     MigrationExtensions.DeleteDefaultContraint(this, "dbo.Salaries", "FestivalAllowance");
     AlterColumn("dbo.Salaries", "FestivalAllowance", c => c.String());
 }
Пример #2
0
        protected override void Up(MigrationBuilder migrationBuilder)
        {
            string scriptContent = MigrationExtensions.GetScriptContent("SeedData1.sql", MigrationExtensions.MigrationScriptType.DataUpdate);

            migrationBuilder.Sql(scriptContent);

            scriptContent = MigrationExtensions.GetScriptContent("SeedData2.sql", MigrationExtensions.MigrationScriptType.DataUpdate);
            migrationBuilder.Sql(scriptContent);

            scriptContent = MigrationExtensions.GetScriptContent("SeedData3.sql", MigrationExtensions.MigrationScriptType.DataUpdate);
            migrationBuilder.Sql(scriptContent);

            scriptContent = MigrationExtensions.GetScriptContent("SeedData4.sql", MigrationExtensions.MigrationScriptType.DataUpdate);
            migrationBuilder.Sql(scriptContent);

            scriptContent = MigrationExtensions.GetScriptContent("SeedData5.sql", MigrationExtensions.MigrationScriptType.DataUpdate);
            migrationBuilder.Sql(scriptContent);
        }
Пример #3
0
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            MigrationExtensions.UpdateDatabase(app);

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseHsts();
            }

            app.UseHttpsRedirection();
            app.UseCors(options => options.WithOrigins("http://localhost:4200")
                        .AllowAnyMethod()
                        .AllowAnyHeader());
            app.UseMvc();

            app.UseSwaggerDocumentation();
        }
Пример #4
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            MigrationExtensions.UpdateDatabase(app);

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseHttpsRedirection();

            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });

            app.UseSwaggerDocumentation();
        }
Пример #5
0
        /// <summary>
        /// Shows the status of the database migrations
        /// </summary>
        /// <returns>A csv indicating the database status</returns>
        public string Execute()
        {
            var fileInfo = new FileInfo(_projectFile);

            // check changelog for the latest migration run
            var changeLogCollection = new ChangelogCollection(_mongoDbContext);

            var changeLog    = changeLogCollection.All();
            var latestChange = changeLog.GetLatestChange();

            // get all classes in a namespace from project assembly
            var workingDirectory = fileInfo.Directory.FullName;

            // create build command for project where migrations are created
            var runner = CLI.DotNet(x => x.WorkingDirectory = workingDirectory)
                         .Build(x => x.BuildConfiguration = BuildConfiguration.Debug)
                         .Create();
            // run command
            var results = runner.Run();

            if (!results.IsSuccessful)
            {
                return($"Error: {fileInfo.Name} failed to build with the following errors: {results.Message}");
            }

            var migrations = MigrationExtensions.GetMigrationTypes(fileInfo);

            if (migrations.Count == 0)
            {
                return("Error: No migration files found in project");
            }

            var remainingMigrations = migrations.GetRange(0, migrations.Count);

            // grab the latest changes if any migrations were previously executed
            if (latestChange != null)
            {
                remainingMigrations = migrations.GetRemainingMigrations(latestChange.FileName);
            }

            var migrationStatus = new StringBuilder();

            // add headers to migration status
            migrationStatus.AppendLine("Migration,Applied At");
            // loop through executed migrations by data applied
            foreach (var change in changeLog.OrderBy(x => x.AppliedAt))
            {
                migrationStatus.AppendLine($"{change.FileName},{change.AppliedAt.ToString("MM/dd/yyyy h:mm tt")}");
            }

            // return status if there are no remaining migrations
            if (remainingMigrations == null)
            {
                return(migrationStatus.ToString());
            }

            // loop through all pending migrations
            foreach (var migration in remainingMigrations)
            {
                migrationStatus.AppendLine($"{migration.Name},PENDING");
            }
            return(migrationStatus.ToString());
        }
Пример #6
0
        /// <summary>
        /// Executes the migration's down function to downgrade the database
        /// based on it's current changelog
        /// </summary>
        /// <returns></returns>
        public string Execute()
        {
            var    fileInfo   = new FileInfo(_projectFile);
            var    isMigrated = false;
            string logPath    = string.Empty;

            // check changelog for the latest migration run
            var changeLogCollection = new ChangelogCollection(_mongoDbContext);

            var changeLog    = changeLogCollection.All();
            var latestChange = changeLog.GetLatestChange();

            if (latestChange == null)
            {
                return("No changes to downgrade");
            }

            // get all classes in a namespace from project assembly
            var workingDirectory = fileInfo.Directory.FullName;

            // create build command for project where migrations are created
            var runner = CLI.DotNet(x => x.WorkingDirectory = workingDirectory)
                         .Build(x => x.BuildConfiguration = BuildConfiguration.Debug)
                         .Create();
            // run cli command
            var results = runner.Run();

            if (!results.IsSuccessful)
            {
                return($"Error: {fileInfo.Name} failed to build with the following errors: {results.Message}");
            }

            var migration = MigrationExtensions.GetMigration(latestChange.FileName, fileInfo);

            if (migration == null)
            {
                return($"Error: Unable to locate migration {latestChange.FileName}");
            }

            try
            {
                var instance = Activator.CreateInstance(migration);
                isMigrated = (bool)migration.GetMethod("Down")
                             .Invoke(instance, new[] { _mongoDbContext.Db });
            }
            catch (Exception e)
            {
                logPath = _logger.Log(migration.Name, e.ToString());
            }

            if (!isMigrated)
            {
                return($"Error: {migration.Name} was not migrated successfully. See {logPath} for more details.");
            }

            var deleteResult = changeLogCollection.Delete(latestChange);

            if (deleteResult == 0)
            {
                return($"Error: {migration.Name} was not downgraded");
            }

            return($"Downgraded: {migration.Name}");
        }
Пример #7
0
        /// <summary>
        /// Executes the migration's up function to upgrade the database
        /// based on it's current changelog
        /// </summary>
        /// <returns></returns>
        public string Execute()
        {
            var fileInfo = new FileInfo(_projectFile);

            // check changelog for the latest migration run
            var changeLogCollection = new ChangelogCollection(_mongoDbContext);

            var changeLog    = changeLogCollection.All();
            var latestChange = changeLog.GetLatestChange();

            // get all classes in a namespace from project assembly
            var workingDirectory = fileInfo.Directory.FullName;

            // create build command for project where migrations are created
            var runner = CLI.DotNet(x => x.WorkingDirectory = workingDirectory)
                         .Build(x => x.BuildConfiguration = BuildConfiguration.Debug)
                         .Create();
            // run command
            var results = runner.Run();

            if (!results.IsSuccessful)
            {
                return($"Error: {fileInfo.Name} failed to build with the following errors: {results.Message}");
            }

            var migrations = MigrationExtensions.GetMigrationTypes(fileInfo);

            if (migrations.Count == 0)
            {
                return("Error: No migration files found in project");
            }

            var remainingMigrations = migrations.GetRange(0, migrations.Count);

            // grab the latest changes if any migrations were previously executed
            if (latestChange != null)
            {
                remainingMigrations = migrations.GetRemainingMigrations(latestChange.FileName);
            }

            if (remainingMigrations.Count == 0)
            {
                return("The database is already up to date");
            }

            // string build result for multiple migrations
            var migrationResult = new StringBuilder();

            foreach (var migration in remainingMigrations)
            {
                var    isMigrated = false;
                string logPath    = string.Empty;

                try
                {
                    var instance = Activator.CreateInstance(migration);
                    isMigrated = (bool)migration.GetMethod("Up")
                                 .Invoke(instance, new[] { _mongoDbContext.Db });
                }
                catch (Exception e)
                {
                    logPath = _logger.Log(migration.Name, e.ToString());
                }

                if (!isMigrated)
                {
                    return($"Error: {migration.Name} was not migrated successfully. See {logPath} for more details.");
                }

                changeLogCollection.Insert(new Changelog
                {
                    AppliedAt = DateTime.Now,
                    FileName  = migration.Name
                });
                migrationResult.AppendLine($"Migrated: {migration.Name}");
            }

            if (migrationResult.Length > 0)
            {
                return(migrationResult.ToString());
            }

            return("Error: Unable to location migrations to be executed. Verify that a Migrations directory exists in your project");
        }