[backend/database] Switch job identifier generation scheme to from UUIDv4 to ULID
This commit is contained in:
parent
55250e59f0
commit
e77c768882
6 changed files with 36 additions and 3 deletions
|
@ -1181,6 +1181,7 @@ public class DatabaseContext(DbContextOptions<DatabaseContext> options)
|
||||||
|
|
||||||
modelBuilder.Entity<Job>(entity =>
|
modelBuilder.Entity<Job>(entity =>
|
||||||
{
|
{
|
||||||
|
entity.Property(e => e.Id).ValueGeneratedNever();
|
||||||
entity.Property(e => e.Status).HasDefaultValue(Job.JobStatus.Queued);
|
entity.Property(e => e.Status).HasDefaultValue(Job.JobStatus.Queued);
|
||||||
entity.Property(e => e.QueuedAt).HasDefaultValueSql("now()");
|
entity.Property(e => e.QueuedAt).HasDefaultValueSql("now()");
|
||||||
entity.HasOne<Worker>().WithMany().HasForeignKey(d => d.WorkerId).OnDelete(DeleteBehavior.SetNull);
|
entity.HasOne<Worker>().WithMany().HasForeignKey(d => d.WorkerId).OnDelete(DeleteBehavior.SetNull);
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace Iceshrimp.Backend.Core.Database.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
[DbContext(typeof(DatabaseContext))]
|
||||||
|
[Migration("20240527200201_MigrateJobIdToUlid")]
|
||||||
|
public partial class MigrateJobIdToUlid : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.Sql("""UPDATE "jobs" SET "id" = concat('00000000-0', substring("id"::text, 11, 36))::uuid;""");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -19,7 +19,7 @@ namespace Iceshrimp.Backend.Core.Database.Migrations
|
||||||
{
|
{
|
||||||
#pragma warning disable 612, 618
|
#pragma warning disable 612, 618
|
||||||
modelBuilder
|
modelBuilder
|
||||||
.HasAnnotation("ProductVersion", "8.0.4")
|
.HasAnnotation("ProductVersion", "8.0.5")
|
||||||
.HasAnnotation("Relational:MaxIdentifierLength", 63);
|
.HasAnnotation("Relational:MaxIdentifierLength", 63);
|
||||||
|
|
||||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "antenna_src_enum", new[] { "home", "all", "users", "list", "group", "instances" });
|
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "antenna_src_enum", new[] { "home", "all", "users", "list", "group", "instances" });
|
||||||
|
@ -1539,7 +1539,6 @@ namespace Iceshrimp.Backend.Core.Database.Migrations
|
||||||
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Job", b =>
|
modelBuilder.Entity("Iceshrimp.Backend.Core.Database.Tables.Job", b =>
|
||||||
{
|
{
|
||||||
b.Property<Guid>("Id")
|
b.Property<Guid>("Id")
|
||||||
.ValueGeneratedOnAdd()
|
|
||||||
.HasColumnType("uuid")
|
.HasColumnType("uuid")
|
||||||
.HasColumnName("id");
|
.HasColumnName("id");
|
||||||
|
|
||||||
|
|
|
@ -3,4 +3,5 @@ namespace Iceshrimp.Backend.Core.Extensions;
|
||||||
public static class GuidExtensions
|
public static class GuidExtensions
|
||||||
{
|
{
|
||||||
public static string ToStringLower(this Guid guid) => guid.ToString().ToLowerInvariant();
|
public static string ToStringLower(this Guid guid) => guid.ToString().ToLowerInvariant();
|
||||||
|
public static string ToStringLower(this Ulid ulid) => ulid.ToString().ToLowerInvariant();
|
||||||
}
|
}
|
|
@ -502,7 +502,12 @@ public class PostgresJobQueue<T>(
|
||||||
await using var scope = GetScope();
|
await using var scope = GetScope();
|
||||||
await using var db = GetDbContext(scope);
|
await using var db = GetDbContext(scope);
|
||||||
|
|
||||||
var job = new Job { Queue = name, Data = JsonSerializer.Serialize(jobData) };
|
var job = new Job
|
||||||
|
{
|
||||||
|
Id = Ulid.NewUlid().ToGuid(),
|
||||||
|
Queue = name,
|
||||||
|
Data = JsonSerializer.Serialize(jobData)
|
||||||
|
};
|
||||||
db.Add(job);
|
db.Add(job);
|
||||||
await db.SaveChangesAsync();
|
await db.SaveChangesAsync();
|
||||||
await RaiseJobQueuedEvent(db);
|
await RaiseJobQueuedEvent(db);
|
||||||
|
@ -515,6 +520,7 @@ public class PostgresJobQueue<T>(
|
||||||
|
|
||||||
var job = new Job
|
var job = new Job
|
||||||
{
|
{
|
||||||
|
Id = Ulid.NewUlid().ToGuid(),
|
||||||
Queue = name,
|
Queue = name,
|
||||||
Data = JsonSerializer.Serialize(jobData),
|
Data = JsonSerializer.Serialize(jobData),
|
||||||
Status = Job.JobStatus.Delayed,
|
Status = Job.JobStatus.Delayed,
|
||||||
|
|
|
@ -58,6 +58,7 @@
|
||||||
<PackageReference Include="System.IO.Hashing" Version="8.0.0" />
|
<PackageReference Include="System.IO.Hashing" Version="8.0.0" />
|
||||||
<PackageReference Include="System.Text.RegularExpressions" Version="4.3.1" />
|
<PackageReference Include="System.Text.RegularExpressions" Version="4.3.1" />
|
||||||
<PackageReference Include="System.Text.Json" Version="8.0.3" />
|
<PackageReference Include="System.Text.Json" Version="8.0.3" />
|
||||||
|
<PackageReference Include="Ulid" Version="1.3.3" />
|
||||||
<PackageReference Include="WebPush" Version="1.0.24-iceshrimp" />
|
<PackageReference Include="WebPush" Version="1.0.24-iceshrimp" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue