using System; using Iceshrimp.Backend.Core.Database.Tables; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable namespace Iceshrimp.Backend.Core.Database.Migrations { /// public partial class AddJobTable : Migration { /// protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.AlterDatabase() .Annotation("Npgsql:Enum:antenna_src_enum", "home,all,users,list,group,instances") .Annotation("Npgsql:Enum:job_status", "queued,delayed,running,completed,failed") .Annotation("Npgsql:Enum:marker_type_enum", "home,notifications") .Annotation("Npgsql:Enum:note_visibility_enum", "public,home,followers,specified") .Annotation("Npgsql:Enum:notification_type_enum", "follow,mention,reply,renote,quote,like,reaction,pollVote,pollEnded,receiveFollowRequest,followRequestAccepted,groupInvited,app,edit,bite") .Annotation("Npgsql:Enum:page_visibility_enum", "public,followers,specified") .Annotation("Npgsql:Enum:push_subscription_policy_enum", "all,followed,follower,none") .Annotation("Npgsql:Enum:relay_status_enum", "requesting,accepted,rejected") .Annotation("Npgsql:Enum:user_profile_ffvisibility_enum", "public,followers,private") .Annotation("Npgsql:PostgresExtension:pg_trgm", ",,") .OldAnnotation("Npgsql:Enum:antenna_src_enum", "home,all,users,list,group,instances") .OldAnnotation("Npgsql:Enum:marker_type_enum", "home,notifications") .OldAnnotation("Npgsql:Enum:note_visibility_enum", "public,home,followers,specified") .OldAnnotation("Npgsql:Enum:notification_type_enum", "follow,mention,reply,renote,quote,like,reaction,pollVote,pollEnded,receiveFollowRequest,followRequestAccepted,groupInvited,app,edit,bite") .OldAnnotation("Npgsql:Enum:page_visibility_enum", "public,followers,specified") .OldAnnotation("Npgsql:Enum:push_subscription_policy_enum", "all,followed,follower,none") .OldAnnotation("Npgsql:Enum:relay_status_enum", "requesting,accepted,rejected") .OldAnnotation("Npgsql:Enum:user_profile_ffvisibility_enum", "public,followers,private") .OldAnnotation("Npgsql:PostgresExtension:pg_trgm", ",,"); migrationBuilder.CreateTable( name: "jobs", columns: table => new { id = table.Column(type: "uuid", nullable: false), queue = table.Column(type: "text", nullable: false), status = table.Column(type: "job_status", nullable: false, defaultValue: Job.JobStatus.Queued), queued_at = table.Column(type: "timestamp with time zone", nullable: false, defaultValueSql: "now()"), started_at = table.Column(type: "timestamp with time zone", nullable: true), finished_at = table.Column(type: "timestamp with time zone", nullable: true), delayed_until = table.Column(type: "timestamp with time zone", nullable: true), retry_count = table.Column(type: "integer", nullable: false), exception_message = table.Column(type: "text", nullable: true), exception_source = table.Column(type: "text", nullable: true), data = table.Column(type: "text", nullable: false) }, constraints: table => { table.PrimaryKey("PK_jobs", x => x.id); }); migrationBuilder.CreateIndex( name: "IX_jobs_delayed_until", table: "jobs", column: "delayed_until"); migrationBuilder.CreateIndex( name: "IX_jobs_finished_at", table: "jobs", column: "finished_at"); migrationBuilder.CreateIndex( name: "IX_jobs_queue", table: "jobs", column: "queue"); migrationBuilder.CreateIndex( name: "IX_jobs_status", table: "jobs", column: "status"); } /// protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropTable( name: "jobs"); migrationBuilder.AlterDatabase() .Annotation("Npgsql:Enum:antenna_src_enum", "home,all,users,list,group,instances") .Annotation("Npgsql:Enum:marker_type_enum", "home,notifications") .Annotation("Npgsql:Enum:note_visibility_enum", "public,home,followers,specified") .Annotation("Npgsql:Enum:notification_type_enum", "follow,mention,reply,renote,quote,like,reaction,pollVote,pollEnded,receiveFollowRequest,followRequestAccepted,groupInvited,app,edit,bite") .Annotation("Npgsql:Enum:page_visibility_enum", "public,followers,specified") .Annotation("Npgsql:Enum:push_subscription_policy_enum", "all,followed,follower,none") .Annotation("Npgsql:Enum:relay_status_enum", "requesting,accepted,rejected") .Annotation("Npgsql:Enum:user_profile_ffvisibility_enum", "public,followers,private") .Annotation("Npgsql:PostgresExtension:pg_trgm", ",,") .OldAnnotation("Npgsql:Enum:antenna_src_enum", "home,all,users,list,group,instances") .OldAnnotation("Npgsql:Enum:job_status", "queued,delayed,running,completed,failed") .OldAnnotation("Npgsql:Enum:marker_type_enum", "home,notifications") .OldAnnotation("Npgsql:Enum:note_visibility_enum", "public,home,followers,specified") .OldAnnotation("Npgsql:Enum:notification_type_enum", "follow,mention,reply,renote,quote,like,reaction,pollVote,pollEnded,receiveFollowRequest,followRequestAccepted,groupInvited,app,edit,bite") .OldAnnotation("Npgsql:Enum:page_visibility_enum", "public,followers,specified") .OldAnnotation("Npgsql:Enum:push_subscription_policy_enum", "all,followed,follower,none") .OldAnnotation("Npgsql:Enum:relay_status_enum", "requesting,accepted,rejected") .OldAnnotation("Npgsql:Enum:user_profile_ffvisibility_enum", "public,followers,private") .OldAnnotation("Npgsql:PostgresExtension:pg_trgm", ",,"); } } }