fix: count runs, update versions if they differ
All checks were successful
Update changelog / changelog (push) Successful in 25s
All checks were successful
Update changelog / changelog (push) Successful in 25s
This commit is contained in:
@@ -23,6 +23,7 @@ public class Seeder
|
||||
|
||||
// Check if this is a clean, first run. If so, run the setup wizard.
|
||||
Global? lastVersion = db.Globals.FirstOrDefault(c => c.Key == "lastVersion");
|
||||
Global? runs = db.Globals.FirstOrDefault(g => g.Key == "runs");
|
||||
if (lastVersion is null)
|
||||
{
|
||||
shutdown = true;
|
||||
@@ -35,8 +36,8 @@ public class Seeder
|
||||
{
|
||||
// Cli.SetupWizard() takes care of musicLibraryPath and musicThumbnailPath
|
||||
lastVersion = new Global() { Key = "lastVersion", Value = ThisAssembly.Git.Commit };
|
||||
runs = new Global() { Key = "runs", Value = "0" };
|
||||
Global lastVersionDate = new Global() { Key = "lastVersionDate", Value = ThisAssembly.Git.CommitDate };
|
||||
Global runs = new Global() { Key = "runs", Value = "0" };
|
||||
Global libraryState = new Global() { Key = "libraryState", Value = "00000000000000000000000000000000" };
|
||||
db.Globals.AddRange(lastVersion, lastVersionDate, runs, libraryState);
|
||||
}
|
||||
@@ -50,25 +51,34 @@ public class Seeder
|
||||
// Check if running a newer (different) version
|
||||
if (lastVersion.Value != ThisAssembly.Git.Commit)
|
||||
{
|
||||
Global? lastVersionDate = db.Globals.FirstOrDefault(c => c.Key == "lastVersionDate");
|
||||
if (lastVersionDate is not null && String.Compare(lastVersionDate.Value, ThisAssembly.Git.CommitDate) > 0)
|
||||
Global lastVersionDate = db.Globals.FirstOrDefault(c => c.Key == "lastVersionDate")
|
||||
?? new Global() { Key = "lastVersionDate", Value = ThisAssembly.Git.CommitDate };
|
||||
|
||||
if (String.Compare(lastVersionDate.Value, ThisAssembly.Git.CommitDate) > 0)
|
||||
{
|
||||
// User is running an earlier version of the application.
|
||||
Console.WriteLine("Downgrade detected! Waiting 30 seconds.\n" +
|
||||
"Please consider stopping Shadow in order to avoid accidental data loss!");
|
||||
"Please consider stopping Shadow in order to avoid accidental data loss!\n");
|
||||
Thread.Sleep(30_000);
|
||||
}
|
||||
Console.WriteLine("Upgrade detected. Make sure you're using the most recent migrations.\n" +
|
||||
"If not, apply them with `dotnet ef database update`.");
|
||||
else
|
||||
Console.WriteLine("Upgrade detected. Make sure you're using the most recent migrations.\n" +
|
||||
"If not, apply them with `dotnet ef database update`.\n");
|
||||
|
||||
lastVersion.Value = ThisAssembly.Git.Commit;
|
||||
lastVersionDate.Value = ThisAssembly.Git.CommitDate;
|
||||
|
||||
db.UpdateRange(lastVersion, lastVersionDate);
|
||||
}
|
||||
|
||||
// Check if any user/admin exist. Display appropriate warnings if not.
|
||||
int userCount = db.Users.Count();
|
||||
if (userCount == 0)
|
||||
Console.WriteLine("[Warn]: No user accounts found. Running a server no one can access! Consider creating an account with `Shadow addUser`.");
|
||||
Console.WriteLine("[Warn]: No user accounts found. Running a server no one can access! Consider creating an account with `Shadow addUser`.\n");
|
||||
|
||||
int adminCount = db.Users.Count(u => u.Role == 0); // equivalent to u.IsAdmin()
|
||||
if (adminCount == 0 && userCount > 0)
|
||||
Console.WriteLine("[Warn]: No admin accounts exist. Consider creating one with `Shadow addUser`.");
|
||||
Console.WriteLine("[Warn]: No admin accounts exist. Consider creating one with `Shadow addUser`.\n");
|
||||
|
||||
// Ensure [Unknown Album], [Unknown Artist] exist
|
||||
Album unknownAlbum = db.Albums.FirstOrDefault(a => a.Name == "[Unknown Album]") ?? new Album()
|
||||
@@ -83,8 +93,12 @@ public class Seeder
|
||||
NormalizedName = "[unknown artist]"
|
||||
};
|
||||
|
||||
runs ??= new Global() { Key = "runs", Value = "0" };
|
||||
if (int.TryParse(runs.Value, out int runsInt))
|
||||
runs.Value = $"{runsInt + 1}";
|
||||
|
||||
// UpdateRange works both as an Add and Update.
|
||||
db.UpdateRange(unknownAlbum, unknownArtist);
|
||||
db.UpdateRange(unknownAlbum, unknownArtist, runs);
|
||||
db.SaveChanges();
|
||||
|
||||
return shutdown;
|
||||
|
||||
Reference in New Issue
Block a user