using Marathon.Infrastructure.Persistence; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable namespace Marathon.Infrastructure.Migrations; /// [DbContext(typeof(MarathonDbContext))] [Migration("20260505000000_InitialCreate")] public partial class InitialCreate : Migration { /// protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.CreateTable( name: "Events", columns: table => new { EventCode = table.Column(type: "TEXT", nullable: false), SportCode = table.Column(type: "INTEGER", nullable: false), CountryCode = table.Column(type: "TEXT", nullable: false), LeagueId = table.Column(type: "TEXT", nullable: false), Category = table.Column(type: "TEXT", nullable: false, defaultValue: ""), ScheduledAt = table.Column(type: "TEXT", nullable: false), Side1Name = table.Column(type: "TEXT", nullable: false), Side2Name = table.Column(type: "TEXT", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Events", x => x.EventCode); }); migrationBuilder.CreateTable( name: "Leagues", columns: table => new { Id = table.Column(type: "TEXT", nullable: false), SportCode = table.Column(type: "INTEGER", nullable: false), Country = table.Column(type: "TEXT", nullable: false), NameRu = table.Column(type: "TEXT", nullable: false), NameEn = table.Column(type: "TEXT", nullable: false), Category = table.Column(type: "TEXT", nullable: false, defaultValue: "") }, constraints: table => { table.PrimaryKey("PK_Leagues", x => x.Id); }); migrationBuilder.CreateTable( name: "Sports", columns: table => new { Code = table.Column(type: "INTEGER", nullable: false), NameRu = table.Column(type: "TEXT", nullable: false), NameEn = table.Column(type: "TEXT", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Sports", x => x.Code); }); migrationBuilder.CreateTable( name: "Anomalies", columns: table => new { Id = table.Column(type: "TEXT", nullable: false), EventCode = table.Column(type: "TEXT", nullable: false), DetectedAt = table.Column(type: "TEXT", nullable: false), Kind = table.Column(type: "INTEGER", nullable: false), Score = table.Column(type: "TEXT", nullable: false), EvidenceJson = table.Column(type: "TEXT", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Anomalies", x => x.Id); table.ForeignKey( name: "FK_Anomalies_Events_EventCode", column: x => x.EventCode, principalTable: "Events", principalColumn: "EventCode", onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateTable( name: "EventResults", columns: table => new { EventCode = table.Column(type: "TEXT", nullable: false), Side1Score = table.Column(type: "INTEGER", nullable: false), Side2Score = table.Column(type: "INTEGER", nullable: false), WinnerSide = table.Column(type: "INTEGER", nullable: false), CompletedAt = table.Column(type: "TEXT", nullable: false) }, constraints: table => { table.PrimaryKey("PK_EventResults", x => x.EventCode); table.ForeignKey( name: "FK_EventResults_Events_EventCode", column: x => x.EventCode, principalTable: "Events", principalColumn: "EventCode", onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateTable( name: "Snapshots", columns: table => new { Id = table.Column(type: "INTEGER", nullable: false) .Annotation("Sqlite:Autoincrement", true), EventCode = table.Column(type: "TEXT", nullable: false), CapturedAt = table.Column(type: "TEXT", nullable: false), Source = table.Column(type: "INTEGER", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Snapshots", x => x.Id); table.ForeignKey( name: "FK_Snapshots_Events_EventCode", column: x => x.EventCode, principalTable: "Events", principalColumn: "EventCode", onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateTable( name: "Bets", columns: table => new { Id = table.Column(type: "INTEGER", nullable: false) .Annotation("Sqlite:Autoincrement", true), SnapshotId = table.Column(type: "INTEGER", nullable: false), Scope = table.Column(type: "INTEGER", nullable: false), PeriodNumber = table.Column(type: "INTEGER", nullable: true), Type = table.Column(type: "INTEGER", nullable: false), Side = table.Column(type: "INTEGER", nullable: false), Value = table.Column(type: "TEXT", nullable: true), Rate = table.Column(type: "TEXT", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Bets", x => x.Id); table.ForeignKey( name: "FK_Bets_Snapshots_SnapshotId", column: x => x.SnapshotId, principalTable: "Snapshots", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }); // Indexes migrationBuilder.CreateIndex( name: "IX_Events_SportCode_ScheduledAt", table: "Events", columns: new[] { "SportCode", "ScheduledAt" }); migrationBuilder.CreateIndex( name: "IX_Events_ScheduledAt", table: "Events", column: "ScheduledAt"); migrationBuilder.CreateIndex( name: "IX_Snapshots_EventCode", table: "Snapshots", column: "EventCode"); migrationBuilder.CreateIndex( name: "IX_Bets_SnapshotId", table: "Bets", column: "SnapshotId"); migrationBuilder.CreateIndex( name: "IX_Anomalies_EventCode", table: "Anomalies", column: "EventCode"); } /// protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropTable(name: "Bets"); migrationBuilder.DropTable(name: "Snapshots"); migrationBuilder.DropTable(name: "EventResults"); migrationBuilder.DropTable(name: "Anomalies"); migrationBuilder.DropTable(name: "Events"); migrationBuilder.DropTable(name: "Leagues"); migrationBuilder.DropTable(name: "Sports"); } }