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");
}
}