Looks like we finally have a solution.
Change logging to just log a message, instead of the exception. Moved logic to Syncer involvement. When posting the data, if a 500 is returned, then it is up to the Syncer to re-submit it.
This commit is contained in:
parent
73955353cb
commit
004c490dd8
23 changed files with 529 additions and 177 deletions
257
FreeTubeSync/Migrations/20250808221748_UpdateNewLayout.Designer.cs
generated
Normal file
257
FreeTubeSync/Migrations/20250808221748_UpdateNewLayout.Designer.cs
generated
Normal file
|
|
@ -0,0 +1,257 @@
|
|||
// <auto-generated />
|
||||
using System;
|
||||
using FreeTubeSync.Database;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace FreeTubeSync.Migrations
|
||||
{
|
||||
[DbContext(typeof(DataContext))]
|
||||
[Migration("20250808221748_UpdateNewLayout")]
|
||||
partial class UpdateNewLayout
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||
{
|
||||
#pragma warning disable 612, 618
|
||||
modelBuilder.HasAnnotation("ProductVersion", "9.0.7");
|
||||
|
||||
modelBuilder.Entity("FreeTubeSync.Model.ChangeLog", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<DateTime>("ChangeTime")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("ChangeType")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("TableName")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("ChangeLogs");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("FreeTubeSync.Model.History", b =>
|
||||
{
|
||||
b.Property<string>("_id")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("author")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("authorId")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("description")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<bool>("isLive")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<string>("lastViewedPlaylistItemId")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("lastViewedPlaylistType")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<long>("lengthSeconds")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<long>("published")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<long>("timeWatched")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<string>("title")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("type")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("videoId")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<long>("viewCount")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<float>("watchProgress")
|
||||
.HasColumnType("REAL");
|
||||
|
||||
b.HasKey("_id");
|
||||
|
||||
b.ToTable("Histories");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("FreeTubeSync.Model.Playlist", b =>
|
||||
{
|
||||
b.Property<string>("_id")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<long>("createdAt")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<long>("lastUpdatedAt")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<string>("playlistName")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<bool>("protected")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("_id");
|
||||
|
||||
b.ToTable("Playlists");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("FreeTubeSync.Model.Profile", b =>
|
||||
{
|
||||
b.Property<string>("_id")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("bgColor")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("name")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("textColor")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.HasKey("_id");
|
||||
|
||||
b.ToTable("Profiles");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("FreeTubeSync.Model.SearchHistory", b =>
|
||||
{
|
||||
b.Property<string>("_id")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<long>("lastUpdatedAt")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("_id");
|
||||
|
||||
b.ToTable("SearchHistories");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("FreeTubeSync.Model.Setting", b =>
|
||||
{
|
||||
b.Property<string>("_id")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("value")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.HasKey("_id");
|
||||
|
||||
b.ToTable("Settings");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("FreeTubeSync.Model.Playlist", b =>
|
||||
{
|
||||
b.OwnsMany("FreeTubeSync.Model.Video", "videos", b1 =>
|
||||
{
|
||||
b1.Property<string>("Playlist_id")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b1.Property<string>("videoId")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b1.Property<string>("author")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b1.Property<string>("authorId")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b1.Property<string>("lengthSeconds")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b1.Property<string>("playlistItemId")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b1.Property<long>("published")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b1.Property<long>("timeAdded")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b1.Property<string>("title")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b1.Property<string>("type")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b1.HasKey("Playlist_id", "videoId");
|
||||
|
||||
b1.ToTable("Video");
|
||||
|
||||
b1.WithOwner()
|
||||
.HasForeignKey("Playlist_id");
|
||||
});
|
||||
|
||||
b.Navigation("videos");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("FreeTubeSync.Model.Profile", b =>
|
||||
{
|
||||
b.OwnsMany("FreeTubeSync.Model.Subscription", "subscriptions", b1 =>
|
||||
{
|
||||
b1.Property<string>("Profile_id")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b1.Property<string>("id")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b1.Property<string>("name")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b1.Property<string>("thumbnail")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b1.HasKey("Profile_id", "id");
|
||||
|
||||
b1.ToTable("Subscription");
|
||||
|
||||
b1.WithOwner()
|
||||
.HasForeignKey("Profile_id");
|
||||
});
|
||||
|
||||
b.Navigation("subscriptions");
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
||||
}
|
||||
}
|
||||
130
FreeTubeSync/Migrations/20250808221748_UpdateNewLayout.cs
Normal file
130
FreeTubeSync/Migrations/20250808221748_UpdateNewLayout.cs
Normal file
|
|
@ -0,0 +1,130 @@
|
|||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace FreeTubeSync.Migrations
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public partial class UpdateNewLayout : Migration
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropTable(
|
||||
name: "Subscriptions");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "Videos");
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "Subscription",
|
||||
columns: table => new
|
||||
{
|
||||
id = table.Column<string>(type: "TEXT", nullable: false),
|
||||
Profile_id = table.Column<string>(type: "TEXT", nullable: false),
|
||||
name = table.Column<string>(type: "TEXT", nullable: false),
|
||||
thumbnail = table.Column<string>(type: "TEXT", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_Subscription", x => new { x.Profile_id, x.id });
|
||||
table.ForeignKey(
|
||||
name: "FK_Subscription_Profiles_Profile_id",
|
||||
column: x => x.Profile_id,
|
||||
principalTable: "Profiles",
|
||||
principalColumn: "_id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "Video",
|
||||
columns: table => new
|
||||
{
|
||||
videoId = table.Column<string>(type: "TEXT", nullable: false),
|
||||
Playlist_id = table.Column<string>(type: "TEXT", nullable: false),
|
||||
title = table.Column<string>(type: "TEXT", nullable: false),
|
||||
author = table.Column<string>(type: "TEXT", nullable: false),
|
||||
authorId = table.Column<string>(type: "TEXT", nullable: false),
|
||||
lengthSeconds = table.Column<string>(type: "TEXT", nullable: false),
|
||||
published = table.Column<long>(type: "INTEGER", nullable: false),
|
||||
timeAdded = table.Column<long>(type: "INTEGER", nullable: false),
|
||||
playlistItemId = table.Column<string>(type: "TEXT", nullable: false),
|
||||
type = table.Column<string>(type: "TEXT", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_Video", x => new { x.Playlist_id, x.videoId });
|
||||
table.ForeignKey(
|
||||
name: "FK_Video_Playlists_Playlist_id",
|
||||
column: x => x.Playlist_id,
|
||||
principalTable: "Playlists",
|
||||
principalColumn: "_id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
});
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropTable(
|
||||
name: "Subscription");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "Video");
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "Subscriptions",
|
||||
columns: table => new
|
||||
{
|
||||
id = table.Column<string>(type: "TEXT", nullable: false),
|
||||
Profile_id = table.Column<string>(type: "TEXT", nullable: true),
|
||||
name = table.Column<string>(type: "TEXT", nullable: false),
|
||||
thumbnail = table.Column<string>(type: "TEXT", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_Subscriptions", x => x.id);
|
||||
table.ForeignKey(
|
||||
name: "FK_Subscriptions_Profiles_Profile_id",
|
||||
column: x => x.Profile_id,
|
||||
principalTable: "Profiles",
|
||||
principalColumn: "_id");
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "Videos",
|
||||
columns: table => new
|
||||
{
|
||||
playlistItemId = table.Column<string>(type: "TEXT", nullable: false),
|
||||
Playlist_id = table.Column<string>(type: "TEXT", nullable: true),
|
||||
author = table.Column<string>(type: "TEXT", nullable: false),
|
||||
authorId = table.Column<string>(type: "TEXT", nullable: false),
|
||||
lengthSeconds = table.Column<string>(type: "TEXT", nullable: false),
|
||||
pubished = table.Column<long>(type: "INTEGER", nullable: false),
|
||||
timeAdded = table.Column<long>(type: "INTEGER", nullable: false),
|
||||
title = table.Column<string>(type: "TEXT", nullable: false),
|
||||
type = table.Column<string>(type: "TEXT", nullable: false),
|
||||
videoId = table.Column<string>(type: "TEXT", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_Videos", x => x.playlistItemId);
|
||||
table.ForeignKey(
|
||||
name: "FK_Videos_Playlists_Playlist_id",
|
||||
column: x => x.Playlist_id,
|
||||
principalTable: "Playlists",
|
||||
principalColumn: "_id");
|
||||
});
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_Subscriptions_Profile_id",
|
||||
table: "Subscriptions",
|
||||
column: "Profile_id");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_Videos_Playlist_id",
|
||||
table: "Videos",
|
||||
column: "Playlist_id");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -17,7 +17,7 @@ namespace FreeTubeSync.Migrations
|
|||
#pragma warning disable 612, 618
|
||||
modelBuilder.HasAnnotation("ProductVersion", "9.0.7");
|
||||
|
||||
modelBuilder.Entity("FreeTubeSync.Model.Database.ChangeLog", b =>
|
||||
modelBuilder.Entity("FreeTubeSync.Model.ChangeLog", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
|
|
@ -39,7 +39,7 @@ namespace FreeTubeSync.Migrations
|
|||
b.ToTable("ChangeLogs");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("FreeTubeSync.Model.Database.History", b =>
|
||||
modelBuilder.Entity("FreeTubeSync.Model.History", b =>
|
||||
{
|
||||
b.Property<string>("_id")
|
||||
.HasColumnType("TEXT");
|
||||
|
|
@ -98,7 +98,7 @@ namespace FreeTubeSync.Migrations
|
|||
b.ToTable("Histories");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("FreeTubeSync.Model.Database.Playlist", b =>
|
||||
modelBuilder.Entity("FreeTubeSync.Model.Playlist", b =>
|
||||
{
|
||||
b.Property<string>("_id")
|
||||
.HasColumnType("TEXT");
|
||||
|
|
@ -121,7 +121,7 @@ namespace FreeTubeSync.Migrations
|
|||
b.ToTable("Playlists");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("FreeTubeSync.Model.Database.Profile", b =>
|
||||
modelBuilder.Entity("FreeTubeSync.Model.Profile", b =>
|
||||
{
|
||||
b.Property<string>("_id")
|
||||
.HasColumnType("TEXT");
|
||||
|
|
@ -143,7 +143,7 @@ namespace FreeTubeSync.Migrations
|
|||
b.ToTable("Profiles");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("FreeTubeSync.Model.Database.SearchHistory", b =>
|
||||
modelBuilder.Entity("FreeTubeSync.Model.SearchHistory", b =>
|
||||
{
|
||||
b.Property<string>("_id")
|
||||
.HasColumnType("TEXT");
|
||||
|
|
@ -156,7 +156,7 @@ namespace FreeTubeSync.Migrations
|
|||
b.ToTable("SearchHistories");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("FreeTubeSync.Model.Database.Setting", b =>
|
||||
modelBuilder.Entity("FreeTubeSync.Model.Setting", b =>
|
||||
{
|
||||
b.Property<string>("_id")
|
||||
.HasColumnType("TEXT");
|
||||
|
|
@ -170,94 +170,82 @@ namespace FreeTubeSync.Migrations
|
|||
b.ToTable("Settings");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("FreeTubeSync.Model.Database.Subscription", b =>
|
||||
modelBuilder.Entity("FreeTubeSync.Model.Playlist", b =>
|
||||
{
|
||||
b.Property<string>("id")
|
||||
.HasColumnType("TEXT");
|
||||
b.OwnsMany("FreeTubeSync.Model.Video", "videos", b1 =>
|
||||
{
|
||||
b1.Property<string>("Playlist_id")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("Profile_id")
|
||||
.HasColumnType("TEXT");
|
||||
b1.Property<string>("videoId")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("name")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
b1.Property<string>("author")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("thumbnail")
|
||||
.HasColumnType("TEXT");
|
||||
b1.Property<string>("authorId")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.HasKey("id");
|
||||
b1.Property<string>("lengthSeconds")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.HasIndex("Profile_id");
|
||||
b1.Property<string>("playlistItemId")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.ToTable("Subscriptions");
|
||||
});
|
||||
b1.Property<long>("published")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
modelBuilder.Entity("FreeTubeSync.Model.Database.Video", b =>
|
||||
{
|
||||
b.Property<string>("playlistItemId")
|
||||
.HasColumnType("TEXT");
|
||||
b1.Property<long>("timeAdded")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<string>("Playlist_id")
|
||||
.HasColumnType("TEXT");
|
||||
b1.Property<string>("title")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("author")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
b1.Property<string>("type")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("authorId")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
b1.HasKey("Playlist_id", "videoId");
|
||||
|
||||
b.Property<string>("lengthSeconds")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
b1.ToTable("Video");
|
||||
|
||||
b.Property<long>("pubished")
|
||||
.HasColumnType("INTEGER");
|
||||
b1.WithOwner()
|
||||
.HasForeignKey("Playlist_id");
|
||||
});
|
||||
|
||||
b.Property<long>("timeAdded")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<string>("title")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("type")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("videoId")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.HasKey("playlistItemId");
|
||||
|
||||
b.HasIndex("Playlist_id");
|
||||
|
||||
b.ToTable("Videos");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("FreeTubeSync.Model.Database.Subscription", b =>
|
||||
{
|
||||
b.HasOne("FreeTubeSync.Model.Database.Profile", null)
|
||||
.WithMany("subscriptions")
|
||||
.HasForeignKey("Profile_id");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("FreeTubeSync.Model.Database.Video", b =>
|
||||
{
|
||||
b.HasOne("FreeTubeSync.Model.Database.Playlist", null)
|
||||
.WithMany("videos")
|
||||
.HasForeignKey("Playlist_id");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("FreeTubeSync.Model.Database.Playlist", b =>
|
||||
{
|
||||
b.Navigation("videos");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("FreeTubeSync.Model.Database.Profile", b =>
|
||||
modelBuilder.Entity("FreeTubeSync.Model.Profile", b =>
|
||||
{
|
||||
b.OwnsMany("FreeTubeSync.Model.Subscription", "subscriptions", b1 =>
|
||||
{
|
||||
b1.Property<string>("Profile_id")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b1.Property<string>("id")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b1.Property<string>("name")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b1.Property<string>("thumbnail")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b1.HasKey("Profile_id", "id");
|
||||
|
||||
b1.ToTable("Subscription");
|
||||
|
||||
b1.WithOwner()
|
||||
.HasForeignKey("Profile_id");
|
||||
});
|
||||
|
||||
b.Navigation("subscriptions");
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue