mirror of
https://github.com/wabbajack-tools/wabbajack.git
synced 2024-08-30 18:42:17 +00:00
Fixes for broken archives names on server links
This commit is contained in:
parent
8999179920
commit
4d3961a0bc
@ -345,6 +345,7 @@ GO
|
||||
|
||||
CREATE TABLE [dbo].[ModListArchives](
|
||||
[MachineUrl] [nvarchar](50) NOT NULL,
|
||||
[Name] [nvarchar](max),
|
||||
[Hash] [bigint] NOT NULL,
|
||||
[PrimaryKeyString] [nvarchar](max) NOT NULL,
|
||||
[Size] [bigint] NOT NULL,
|
||||
|
@ -8,6 +8,7 @@ using Microsoft.Extensions.Logging;
|
||||
using Nettle;
|
||||
using Wabbajack.Common;
|
||||
using Wabbajack.Common.Serialization.Json;
|
||||
using Wabbajack.Lib;
|
||||
using Wabbajack.Lib.ModListRegistry;
|
||||
using Wabbajack.Server;
|
||||
using Wabbajack.Server.DataLayer;
|
||||
@ -76,28 +77,50 @@ namespace Wabbajack.BuildServer.Controllers
|
||||
private static readonly Func<object, string> HandleGetListTemplate = NettleEngine.GetCompiler().Compile(@"
|
||||
<html><body>
|
||||
<h2>{{lst.Name}} - {{lst.Checked}} - {{ago}}min ago</h2>
|
||||
|
||||
<h3>Failed ({{failed.Count}}):</h3>
|
||||
<ul>
|
||||
{{each $.failed }}
|
||||
<li>{{$.Archive.Name}}</li>
|
||||
{{if $.HasUrl}}
|
||||
<a href='{{$.Url}}'><li>{{$.Name}}</li></a>
|
||||
{{else}}
|
||||
<li>{{$.Name}}</li>
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
|
||||
|
||||
<h3>Updated ({{updated.Count}}):</h3>
|
||||
<ul>
|
||||
{{each $.updated }}
|
||||
<li>{{$.Archive.Name}}</li>
|
||||
{{if $.HasUrl}}
|
||||
<a href='{{$.Url}}'><li>{{$.Name}}</li></a>
|
||||
{{else}}
|
||||
<li>{{$.Name}}</li>
|
||||
{{/if}}
|
||||
|
||||
{{/each}}
|
||||
</ul>
|
||||
|
||||
<h3>Updating ({{updating.Count}}):</h3>
|
||||
<ul>
|
||||
{{each $.updating }}
|
||||
<li>{{$.Archive.Name}}</li>
|
||||
{{if $.HasUrl}}
|
||||
<a href='{{$.Url}}'><li>{{$.Name}}</li></a>
|
||||
{{else}}
|
||||
<li>{{$.Name}}</li>
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
|
||||
<h3>Passed ({{passed.Count}}):</h3>
|
||||
<ul>
|
||||
{{each $.passed }}
|
||||
<li>{{$.Archive.Name}}</li>
|
||||
{{if $.HasUrl}}
|
||||
<a href='{{$.Url}}'><li>{{$.Name}}</li></a>
|
||||
{{else}}
|
||||
<li>{{$.Name}}</li>
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
</body></html>
|
||||
@ -109,6 +132,7 @@ namespace Wabbajack.BuildServer.Controllers
|
||||
{
|
||||
|
||||
var lst = await DetailedStatus(Name);
|
||||
|
||||
var response = HandleGetListTemplate(new
|
||||
{
|
||||
lst,
|
||||
@ -135,9 +159,15 @@ namespace Wabbajack.BuildServer.Controllers
|
||||
|
||||
private async Task<DetailedStatus> DetailedStatus(string Name)
|
||||
{
|
||||
return _validator.Summaries
|
||||
var results = _validator.Summaries
|
||||
.Select(d => d.Detailed)
|
||||
.FirstOrDefault(d => d.MachineName == Name);
|
||||
results!.Archives.Do(itm =>
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(itm.Archive.Name))
|
||||
itm.Archive.Name = itm.Archive.State.PrimaryKeyString;
|
||||
});
|
||||
return results;
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
|
@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Newtonsoft.Json;
|
||||
using Wabbajack.Common.Serialization.Json;
|
||||
using Wabbajack.Lib;
|
||||
using Wabbajack.Lib.ModListRegistry;
|
||||
@ -23,6 +24,11 @@ namespace Wabbajack.Server.DTOs
|
||||
public bool IsFailing { get; set; }
|
||||
public Archive Archive { get; set; }
|
||||
|
||||
public string Name => string.IsNullOrWhiteSpace(Archive.Name) ? Archive.State.PrimaryKeyString : Archive.Name;
|
||||
public string Url => Archive.State.GetManifestURL(Archive);
|
||||
|
||||
[JsonIgnore]
|
||||
public bool HasUrl => Url != null;
|
||||
public ArchiveStatus ArchiveStatus { get; set; }
|
||||
}
|
||||
}
|
||||
|
@ -39,6 +39,7 @@ namespace Wabbajack.Server.DataLayer
|
||||
new
|
||||
{
|
||||
MachineUrl = metadata.Links.MachineURL,
|
||||
Name = a.Name,
|
||||
Hash = a.Hash,
|
||||
Size = a.Size,
|
||||
State = a.State.ToJson(),
|
||||
@ -51,7 +52,7 @@ namespace Wabbajack.Server.DataLayer
|
||||
foreach (var entry in entries)
|
||||
{
|
||||
await conn.ExecuteAsync(
|
||||
"INSERT INTO dbo.ModListArchives (MachineURL, Hash, Size, PrimaryKeyString, State) VALUES (@MachineURL, @Hash, @Size, @PrimaryKeyString, @State)",
|
||||
"INSERT INTO dbo.ModListArchives (MachineURL, Name, Hash, Size, PrimaryKeyString, State) VALUES (@MachineURL, @Name, @Hash, @Size, @PrimaryKeyString, @State)",
|
||||
entry, tran);
|
||||
}
|
||||
|
||||
@ -78,9 +79,14 @@ namespace Wabbajack.Server.DataLayer
|
||||
public async Task<List<Archive>> ModListArchives(string machineURL)
|
||||
{
|
||||
await using var conn = await Open();
|
||||
var archives = await conn.QueryAsync<(Hash, long, AbstractDownloadState)>("SELECT Hash, Size, State FROM dbo.ModListArchives WHERE MachineUrl = @MachineUrl",
|
||||
var archives = await conn.QueryAsync<(string, Hash, long, AbstractDownloadState)>("SELECT Name, Hash, Size, State FROM dbo.ModListArchives WHERE MachineUrl = @MachineUrl",
|
||||
new {MachineUrl = machineURL});
|
||||
return archives.Select(t => new Archive(t.Item3) {Size = t.Item2, Hash = t.Item1}).ToList();
|
||||
return archives.Select(t => new Archive(t.Item4)
|
||||
{
|
||||
Name = string.IsNullOrWhiteSpace(t.Item1) ? t.Item4.PrimaryKeyString : t.Item1,
|
||||
Size = t.Item3,
|
||||
Hash = t.Item2
|
||||
}).ToList();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user