using System; using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; #nullable disable namespace Tiku.Infrastructure.Persistence.Migrations { /// public partial class RemoveDistributedMessaging : Migration { /// protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.DropTable( name: "outbox_message"); migrationBuilder.DropTable( name: "inbox_state"); migrationBuilder.DropTable( name: "outbox_state"); } /// protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.CreateTable( name: "inbox_state", columns: table => new { id = table.Column(type: "bigint", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), consumed = table.Column(type: "timestamp with time zone", nullable: true), consumer_id = table.Column(type: "uuid", nullable: false), delivered = table.Column(type: "timestamp with time zone", nullable: true), expiration_time = table.Column(type: "timestamp with time zone", nullable: true), last_sequence_number = table.Column(type: "bigint", nullable: true), lock_id = table.Column(type: "uuid", nullable: false), message_id = table.Column(type: "uuid", nullable: false), receive_count = table.Column(type: "integer", nullable: false), received = table.Column(type: "timestamp with time zone", nullable: false), row_version = table.Column(type: "bytea", rowVersion: true, nullable: true) }, constraints: table => { table.PrimaryKey("pk_inbox_state", x => x.id); table.UniqueConstraint("ak_inbox_state_message_id_consumer_id", x => new { x.message_id, x.consumer_id }); }); migrationBuilder.CreateTable( name: "outbox_state", columns: table => new { outbox_id = table.Column(type: "uuid", nullable: false), created = table.Column(type: "timestamp with time zone", nullable: false), delivered = table.Column(type: "timestamp with time zone", nullable: true), last_sequence_number = table.Column(type: "bigint", nullable: true), lock_id = table.Column(type: "uuid", nullable: false), row_version = table.Column(type: "bytea", rowVersion: true, nullable: true) }, constraints: table => { table.PrimaryKey("pk_outbox_state", x => x.outbox_id); }); migrationBuilder.CreateTable( name: "outbox_message", columns: table => new { sequence_number = table.Column(type: "bigint", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), body = table.Column(type: "text", nullable: false), content_type = table.Column(type: "character varying(256)", maxLength: 256, nullable: false), conversation_id = table.Column(type: "uuid", nullable: true), correlation_id = table.Column(type: "uuid", nullable: true), destination_address = table.Column(type: "character varying(256)", maxLength: 256, nullable: true), enqueue_time = table.Column(type: "timestamp with time zone", nullable: true), expiration_time = table.Column(type: "timestamp with time zone", nullable: true), fault_address = table.Column(type: "character varying(256)", maxLength: 256, nullable: true), headers = table.Column(type: "text", nullable: true), inbox_consumer_id = table.Column(type: "uuid", nullable: true), inbox_message_id = table.Column(type: "uuid", nullable: true), initiator_id = table.Column(type: "uuid", nullable: true), message_id = table.Column(type: "uuid", nullable: false), message_type = table.Column(type: "text", nullable: false), outbox_id = table.Column(type: "uuid", nullable: true), properties = table.Column(type: "text", nullable: true), request_id = table.Column(type: "uuid", nullable: true), response_address = table.Column(type: "character varying(256)", maxLength: 256, nullable: true), sent_time = table.Column(type: "timestamp with time zone", nullable: false), source_address = table.Column(type: "character varying(256)", maxLength: 256, nullable: true) }, constraints: table => { table.PrimaryKey("pk_outbox_message", x => x.sequence_number); table.ForeignKey( name: "fk_outbox_message_inbox_state_inbox_message_id_inbox_consumer_~", columns: x => new { x.inbox_message_id, x.inbox_consumer_id }, principalTable: "inbox_state", principalColumns: new[] { "message_id", "consumer_id" }); table.ForeignKey( name: "fk_outbox_message_outbox_state_outbox_id", column: x => x.outbox_id, principalTable: "outbox_state", principalColumn: "outbox_id"); }); migrationBuilder.CreateIndex( name: "ix_inbox_state_delivered", table: "inbox_state", column: "delivered"); migrationBuilder.CreateIndex( name: "ix_outbox_message_enqueue_time", table: "outbox_message", column: "enqueue_time"); migrationBuilder.CreateIndex( name: "ix_outbox_message_expiration_time", table: "outbox_message", column: "expiration_time"); migrationBuilder.CreateIndex( name: "ix_outbox_message_inbox_message_id_inbox_consumer_id_sequence_~", table: "outbox_message", columns: new[] { "inbox_message_id", "inbox_consumer_id", "sequence_number" }, unique: true); migrationBuilder.CreateIndex( name: "ix_outbox_message_outbox_id_sequence_number", table: "outbox_message", columns: new[] { "outbox_id", "sequence_number" }, unique: true); migrationBuilder.CreateIndex( name: "ix_outbox_state_created", table: "outbox_state", column: "created"); } } }