fix: assign unknown album to unknown artist, changes in migration logic
All checks were successful
Update changelog / changelog (push) Successful in 27s

This commit is contained in:
2026-01-26 04:36:01 +01:00
parent d46a2573c4
commit 0083539bac

View File

@@ -84,25 +84,34 @@ public class Seeder
if (adminCount == 0 && userCount > 0) if (adminCount == 0 && userCount > 0)
Console.WriteLine("[Warn]: No admin accounts exist. Consider creating one with `Shadow addUser`.\n"); Console.WriteLine("[Warn]: No admin accounts exist. Consider creating one with `Shadow addUser`.\n");
// Ensure [Unknown Album], [Unknown Artist] exist // Ensure [Unknown Artist], [Unknown Album] exist
Album unknownAlbum = db.Albums.FirstOrDefault(a => a.Name == "[Unknown Album]") ?? new Album()
{
Name = "[Unknown Album]",
Uri = "00000000000000000000000000000000"
};
Artist unknownArtist = db.Artists.FirstOrDefault(a => a.Name == "[Unknown Artist]") ?? new Artist() Artist unknownArtist = db.Artists.FirstOrDefault(a => a.Name == "[Unknown Artist]") ?? new Artist()
{ {
Name = "[Unknown Artist]", Name = "[Unknown Artist]",
NormalizedName = "[unknown artist]" NormalizedName = "[unknown artist]"
}; };
// Update works both as an Add and Update.
db.Update(unknownArtist);
db.SaveChanges();
Album unknownAlbum = db.Albums.FirstOrDefault(a => a.Name == "[Unknown Album]") ?? new Album()
{
Name = "[Unknown Album]",
Uri = "00000000000000000000000000000000",
Artist = unknownArtist
};
db.Update(unknownAlbum);
// Add [Unknown Album] to [Unknown Artist]
unknownArtist.Albums.Add(unknownAlbum);
db.Update(unknownArtist);
runs ??= new Global() { Key = "runs", Value = "0" }; runs ??= new Global() { Key = "runs", Value = "0" };
if (int.TryParse(runs.Value, out int runsInt)) if (int.TryParse(runs.Value, out int runsInt))
runs.Value = $"{runsInt + 1}"; runs.Value = $"{runsInt + 1}";
// UpdateRange works both as an Add and Update. db.Update(runs);
db.UpdateRange(unknownAlbum, unknownArtist, runs);
db.SaveChanges(); db.SaveChanges();
return shutdown; return shutdown;
@@ -118,10 +127,9 @@ public class Seeder
List<string> appliedMigrations = dbContext.Database.GetAppliedMigrations().ToList(); List<string> appliedMigrations = dbContext.Database.GetAppliedMigrations().ToList();
bool hasMissingMigrations = availableMigrations.Count > appliedMigrations.Count; bool hasMissingMigrations = availableMigrations.Count > appliedMigrations.Count;
bool doMigrationsMatch = availableMigrations.SequenceEqual(appliedMigrations);
if (hasMissingMigrations) if (hasMissingMigrations)
{ {
bool userMigrationConsent = false; bool userMigrationConsent = true; // apply migrations by default
Console.WriteLine("\n" + Console.WriteLine("\n" +
"========================================\n" + "========================================\n" +
"[Warn] Database migrations missing!\n" + "[Warn] Database migrations missing!\n" +
@@ -129,19 +137,30 @@ public class Seeder
if (appliedMigrations.Count == 0) if (appliedMigrations.Count == 0)
{ {
Console.WriteLine( "Empty database detected. Applying migrations is recommended, and required if this is the first run of Shadow."); Console.WriteLine( "Empty database detected. Applying migrations is recommended, and required if this is the first run of Shadow.");
userMigrationConsent = Cli.YesNoPrompt("Do you want to apply migrations automatically? [Y/n]: ", true); // userMigrationConsent = Cli.YesNoPrompt("Do you want to apply migrations automatically? [Y/n]: ", true);
} }
else else
{ {
Console.WriteLine($"Detected existing {appliedMigrations.Count} migrations. Backing up the database before applying migrations is recommended."); Console.WriteLine($"Detected existing {appliedMigrations.Count} migrations. Backing up the database before applying migrations is recommended.\n" +
userMigrationConsent = Cli.YesNoPrompt("Do you want to apply migrations automatically? [y/N]: ", false); "Waiting 15 seconds.");
Thread.Sleep(15_000);
// userMigrationConsent = Cli.YesNoPrompt("Do you want to apply migrations automatically? [y/N]: ", false);
} }
// Do we have user permission to perform migration? // Do we have user permission to perform migration?
if (userMigrationConsent) if (userMigrationConsent)
{ {
dbContext.Database.Migrate(); try
dbContext.SaveChanges(); {
dbContext.Database.Migrate();
dbContext.SaveChanges();
}
catch (Exception e)
{
Console.WriteLine("Error! Unable to process migration automatically.\n" +
$"Error message was: {e.Message}\n\n" +
$"Consider ");
}
} }
else else
{ {