mirror of
https://github.com/Artemis-RGB/Artemis
synced 2026-02-04 02:43:32 +00:00
UI - Fix back-button not always working (I blame you, Avalonia)
Workshop - Add a EF migration to fix entry types based on metadata
This commit is contained in:
parent
36761509e2
commit
9bc4eca7f9
@ -41,7 +41,7 @@ public static class Constants
|
|||||||
/// The full path to the Artemis data folder
|
/// The full path to the Artemis data folder
|
||||||
/// </summary>
|
/// </summary>
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
public static readonly string DataFolder = Path.Combine(BaseFolder, "Artemis");
|
public static readonly string DataFolder = Path.Combine(BaseFolder, "Artemis-dev");
|
||||||
#else
|
#else
|
||||||
public static readonly string DataFolder = Path.Combine(BaseFolder, "Artemis");
|
public static readonly string DataFolder = Path.Combine(BaseFolder, "Artemis");
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
337
src/Artemis.Storage/Migrations/20251227175841_FixEntryTypes.Designer.cs
generated
Normal file
337
src/Artemis.Storage/Migrations/20251227175841_FixEntryTypes.Designer.cs
generated
Normal file
@ -0,0 +1,337 @@
|
|||||||
|
// <auto-generated />
|
||||||
|
using System;
|
||||||
|
using Artemis.Storage;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace Artemis.Storage.Migrations
|
||||||
|
{
|
||||||
|
[DbContext(typeof(ArtemisDbContext))]
|
||||||
|
[Migration("20251227175841_FixEntryTypes")]
|
||||||
|
partial class FixEntryTypes
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||||
|
{
|
||||||
|
#pragma warning disable 612, 618
|
||||||
|
modelBuilder.HasAnnotation("ProductVersion", "10.0.1");
|
||||||
|
|
||||||
|
modelBuilder.Entity("Artemis.Storage.Entities.General.ReleaseEntity", b =>
|
||||||
|
{
|
||||||
|
b.Property<Guid>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<DateTimeOffset?>("InstalledAt")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("Version")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(64)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("InstalledAt");
|
||||||
|
|
||||||
|
b.HasIndex("Version")
|
||||||
|
.IsUnique();
|
||||||
|
|
||||||
|
b.ToTable("Releases");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Artemis.Storage.Entities.Plugins.PluginEntity", b =>
|
||||||
|
{
|
||||||
|
b.Property<Guid>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<bool>("IsEnabled")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<Guid>("PluginGuid")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("PluginGuid")
|
||||||
|
.IsUnique();
|
||||||
|
|
||||||
|
b.ToTable("Plugins");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Artemis.Storage.Entities.Plugins.PluginFeatureEntity", b =>
|
||||||
|
{
|
||||||
|
b.Property<Guid>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<bool>("IsEnabled")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<Guid?>("PluginEntityId")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("Type")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("PluginEntityId");
|
||||||
|
|
||||||
|
b.ToTable("PluginFeatures");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Artemis.Storage.Entities.Plugins.PluginSettingEntity", b =>
|
||||||
|
{
|
||||||
|
b.Property<Guid>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("Name")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(128)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<Guid>("PluginGuid")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("Value")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("PluginGuid");
|
||||||
|
|
||||||
|
b.HasIndex("Name", "PluginGuid")
|
||||||
|
.IsUnique();
|
||||||
|
|
||||||
|
b.ToTable("PluginSettings");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Artemis.Storage.Entities.Profile.ProfileCategoryEntity", b =>
|
||||||
|
{
|
||||||
|
b.Property<Guid>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<bool>("IsCollapsed")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<bool>("IsSuspended")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("Name")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(64)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<int>("Order")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("Name")
|
||||||
|
.IsUnique();
|
||||||
|
|
||||||
|
b.ToTable("ProfileCategories");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Artemis.Storage.Entities.Profile.ProfileContainerEntity", b =>
|
||||||
|
{
|
||||||
|
b.Property<Guid>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<byte[]>("Icon")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("BLOB");
|
||||||
|
|
||||||
|
b.Property<string>("Profile")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<Guid>("ProfileCategoryId")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("ProfileConfiguration")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("ProfileCategoryId");
|
||||||
|
|
||||||
|
b.ToTable("ProfileContainers");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Artemis.Storage.Entities.Surface.DeviceEntity", b =>
|
||||||
|
{
|
||||||
|
b.Property<string>("Id")
|
||||||
|
.HasMaxLength(512)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<float>("BlueScale")
|
||||||
|
.HasColumnType("REAL");
|
||||||
|
|
||||||
|
b.PrimitiveCollection<string>("Categories")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("DeviceProvider")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(512)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<float>("GreenScale")
|
||||||
|
.HasColumnType("REAL");
|
||||||
|
|
||||||
|
b.Property<string>("InputIdentifiers")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("InputMappings")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<bool>("IsEnabled")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("LayoutParameter")
|
||||||
|
.HasMaxLength(512)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("LayoutType")
|
||||||
|
.HasMaxLength(64)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("LogicalLayout")
|
||||||
|
.HasMaxLength(32)
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<int>("PhysicalLayout")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<float>("RedScale")
|
||||||
|
.HasColumnType("REAL");
|
||||||
|
|
||||||
|
b.Property<float>("Rotation")
|
||||||
|
.HasColumnType("REAL");
|
||||||
|
|
||||||
|
b.Property<float>("Scale")
|
||||||
|
.HasColumnType("REAL");
|
||||||
|
|
||||||
|
b.Property<float>("X")
|
||||||
|
.HasColumnType("REAL");
|
||||||
|
|
||||||
|
b.Property<float>("Y")
|
||||||
|
.HasColumnType("REAL");
|
||||||
|
|
||||||
|
b.Property<int>("ZIndex")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.ToTable("Devices");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Artemis.Storage.Entities.Workshop.EntryEntity", b =>
|
||||||
|
{
|
||||||
|
b.Property<Guid>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("Author")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<bool>("AutoUpdate")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("Categories")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<DateTimeOffset>("CreatedAt")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<long>("Downloads")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<long>("EntryId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<int>("EntryType")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<DateTimeOffset>("InstalledAt")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<bool>("IsOfficial")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<long?>("LatestReleaseId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("Metadata")
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("Name")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<long>("ReleaseId")
|
||||||
|
.HasColumnType("INTEGER");
|
||||||
|
|
||||||
|
b.Property<string>("ReleaseVersion")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.Property<string>("Summary")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("TEXT");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("EntryId")
|
||||||
|
.IsUnique();
|
||||||
|
|
||||||
|
b.ToTable("Entries");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Artemis.Storage.Entities.Plugins.PluginFeatureEntity", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Artemis.Storage.Entities.Plugins.PluginEntity", null)
|
||||||
|
.WithMany("Features")
|
||||||
|
.HasForeignKey("PluginEntityId");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Artemis.Storage.Entities.Profile.ProfileContainerEntity", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Artemis.Storage.Entities.Profile.ProfileCategoryEntity", "ProfileCategory")
|
||||||
|
.WithMany("ProfileConfigurations")
|
||||||
|
.HasForeignKey("ProfileCategoryId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("ProfileCategory");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Artemis.Storage.Entities.Plugins.PluginEntity", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("Features");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Artemis.Storage.Entities.Profile.ProfileCategoryEntity", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("ProfileConfigurations");
|
||||||
|
});
|
||||||
|
#pragma warning restore 612, 618
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,25 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace Artemis.Storage.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class FixEntryTypes : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
// These were scrambled in Artemis 1.2025.1223.2 due to a bad GraphQL introspection copy-paste
|
||||||
|
migrationBuilder.Sql("UPDATE Entries SET EntryType = 0 WHERE Metadata LIKE '%PluginId%';");
|
||||||
|
migrationBuilder.Sql("UPDATE Entries SET EntryType = 1 WHERE Metadata LIKE '%ProfileId%';");
|
||||||
|
migrationBuilder.Sql("UPDATE Entries SET EntryType = 2 WHERE Metadata = '{}';");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -15,7 +15,7 @@ namespace Artemis.Storage.Migrations
|
|||||||
protected override void BuildModel(ModelBuilder modelBuilder)
|
protected override void BuildModel(ModelBuilder modelBuilder)
|
||||||
{
|
{
|
||||||
#pragma warning disable 612, 618
|
#pragma warning disable 612, 618
|
||||||
modelBuilder.HasAnnotation("ProductVersion", "9.0.1");
|
modelBuilder.HasAnnotation("ProductVersion", "10.0.1");
|
||||||
|
|
||||||
modelBuilder.Entity("Artemis.Storage.Entities.General.ReleaseEntity", b =>
|
modelBuilder.Entity("Artemis.Storage.Entities.General.ReleaseEntity", b =>
|
||||||
{
|
{
|
||||||
|
|||||||
@ -23,6 +23,10 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Avalonia.Win32" />
|
<PackageReference Include="Avalonia.Win32" />
|
||||||
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Design">
|
||||||
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
|
</PackageReference>
|
||||||
<PackageReference Include="Microsoft.Toolkit.Uwp.Notifications" />
|
<PackageReference Include="Microsoft.Toolkit.Uwp.Notifications" />
|
||||||
<PackageReference Include="Microsoft.Win32" />
|
<PackageReference Include="Microsoft.Win32" />
|
||||||
<PackageReference Include="Microsoft.Win32.SystemEvents" />
|
<PackageReference Include="Microsoft.Win32.SystemEvents" />
|
||||||
|
|||||||
@ -83,9 +83,10 @@ public partial class MainWindow : ReactiveAppWindow<RootViewModel>
|
|||||||
|
|
||||||
private void InputElement_OnPointerReleased(object? sender, PointerReleasedEventArgs e)
|
private void InputElement_OnPointerReleased(object? sender, PointerReleasedEventArgs e)
|
||||||
{
|
{
|
||||||
if (e.InitialPressMouseButton == MouseButton.XButton1)
|
|
||||||
|
if (e.Properties.PointerUpdateKind == PointerUpdateKind.XButton1Released)
|
||||||
ViewModel?.GoBack();
|
ViewModel?.GoBack();
|
||||||
else if (e.InitialPressMouseButton == MouseButton.XButton2)
|
else if (e.Properties.PointerUpdateKind == PointerUpdateKind.XButton2Released)
|
||||||
ViewModel?.GoForward();
|
ViewModel?.GoForward();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -16,6 +16,7 @@
|
|||||||
<PackageVersion Include="GenHTTP.Core" Version="10.3.0" />
|
<PackageVersion Include="GenHTTP.Core" Version="10.3.0" />
|
||||||
<PackageVersion Include="GenHTTP.Modules.Webservices" Version="10.3.0" />
|
<PackageVersion Include="GenHTTP.Modules.Webservices" Version="10.3.0" />
|
||||||
<PackageVersion Include="HPPH.SkiaSharp" Version="1.0.0" />
|
<PackageVersion Include="HPPH.SkiaSharp" Version="1.0.0" />
|
||||||
|
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="10.0.1" />
|
||||||
<PackageVersion Include="Microsoft.Win32.SystemEvents" Version="10.0.1" />
|
<PackageVersion Include="Microsoft.Win32.SystemEvents" Version="10.0.1" />
|
||||||
<PackageVersion Include="Avalonia.Xaml.Behaviors" Version="11.3.0.6" />
|
<PackageVersion Include="Avalonia.Xaml.Behaviors" Version="11.3.0.6" />
|
||||||
<PackageVersion Include="AvaloniaEdit.TextMate" Version="11.3.0" />
|
<PackageVersion Include="AvaloniaEdit.TextMate" Version="11.3.0" />
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user