using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; #nullable disable namespace MeterVault.Infrastructure.Persistence.Migrations { /// public partial class AddMeterLinks : Migration { /// protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.CreateTable( name: "meter_link", columns: table => new { id = table.Column(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), from_meter_id = table.Column(type: "integer", nullable: false), to_meter_id = table.Column(type: "integer", nullable: false) }, constraints: table => { table.PrimaryKey("pk_meter_link", x => x.id); table.CheckConstraint("ck_meter_link_distinct", "from_meter_id <> to_meter_id"); table.ForeignKey( name: "fk_meter_link_meter_from_meter_id", column: x => x.from_meter_id, principalTable: "meter", principalColumn: "id", onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "fk_meter_link_meter_to_meter_id", column: x => x.to_meter_id, principalTable: "meter", principalColumn: "id", onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateIndex( name: "ix_meter_link_from_meter_id_to_meter_id", table: "meter_link", columns: new[] { "from_meter_id", "to_meter_id" }, unique: true); migrationBuilder.CreateIndex( name: "ix_meter_link_to_meter_id", table: "meter_link", column: "to_meter_id"); } /// protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropTable( name: "meter_link"); } } }