Files
Ghadir/backend/Migrations/20260603125735_InitialCreate.cs
2026-06-03 18:31:41 +03:30

254 lines
11 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
#pragma warning disable CA1814 // Prefer jagged arrays over multidimensional
namespace backend.Migrations
{
/// <inheritdoc />
public partial class InitialCreate : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "KhatmItems",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
Title = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false),
Points = table.Column<int>(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_KhatmItems", x => x.Id);
});
migrationBuilder.CreateTable(
name: "QuizQuestions",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
QuestionText = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: false),
Option1 = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false),
Option2 = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false),
Option3 = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false),
Option4 = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false),
CorrectOption = table.Column<int>(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_QuizQuestions", x => x.Id);
});
migrationBuilder.CreateTable(
name: "Users",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
FullName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: false),
Contact = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false),
TrackingCode = table.Column<string>(type: "nvarchar(8)", maxLength: 8, nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Users", x => x.Id);
});
migrationBuilder.CreateTable(
name: "UserKhatmSelections",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
UserId = table.Column<int>(type: "int", nullable: false),
KhatmItemId = table.Column<int>(type: "int", nullable: false),
IsSelected = table.Column<bool>(type: "bit", nullable: false),
LastModified = table.Column<DateTime>(type: "datetime2", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_UserKhatmSelections", x => x.Id);
table.ForeignKey(
name: "FK_UserKhatmSelections_KhatmItems_KhatmItemId",
column: x => x.KhatmItemId,
principalTable: "KhatmItems",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_UserKhatmSelections_Users_UserId",
column: x => x.UserId,
principalTable: "Users",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "UserQuizAttempts",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
UserId = table.Column<int>(type: "int", nullable: false),
ParticipationPoints = table.Column<int>(type: "int", nullable: false),
CorrectAnswersCount = table.Column<int>(type: "int", nullable: false),
TotalQuizPoints = table.Column<int>(type: "int", nullable: false),
CompletedAt = table.Column<DateTime>(type: "datetime2", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_UserQuizAttempts", x => x.Id);
table.ForeignKey(
name: "FK_UserQuizAttempts_Users_UserId",
column: x => x.UserId,
principalTable: "Users",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "UserTotalScores",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
UserId = table.Column<int>(type: "int", nullable: false),
TotalPoints = table.Column<int>(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_UserTotalScores", x => x.Id);
table.ForeignKey(
name: "FK_UserTotalScores_Users_UserId",
column: x => x.UserId,
principalTable: "Users",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "UserQuizAnswers",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
UserQuizAttemptId = table.Column<int>(type: "int", nullable: false),
QuestionId = table.Column<int>(type: "int", nullable: false),
SelectedOption = table.Column<int>(type: "int", nullable: false),
IsCorrect = table.Column<bool>(type: "bit", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_UserQuizAnswers", x => x.Id);
table.ForeignKey(
name: "FK_UserQuizAnswers_QuizQuestions_QuestionId",
column: x => x.QuestionId,
principalTable: "QuizQuestions",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_UserQuizAnswers_UserQuizAttempts_UserQuizAttemptId",
column: x => x.UserQuizAttemptId,
principalTable: "UserQuizAttempts",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.InsertData(
table: "KhatmItems",
columns: new[] { "Id", "Points", "Title" },
values: new object[,]
{
{ 1, 5, "ختم نادعلی" },
{ 2, 10, "خطبه غدیر" },
{ 3, 7, "دعای توسل" }
});
migrationBuilder.InsertData(
table: "QuizQuestions",
columns: new[] { "Id", "CorrectOption", "Option1", "Option2", "Option3", "Option4", "QuestionText" },
values: new object[,]
{
{ 1, 1, "سال ۱۰ هجری", "سال ۱۱ هجری", "سال ۹ هجری", "سال ۱۲ هجری", "غدیر در چه سالی واقع شد؟" },
{ 2, 3, "ابوبکر", "عمر", "علی (ع)", "عثمان", "پیامبر اکرم (ص) در غدیر چه کسی را به عنوان جانشین معرفی کردند؟" },
{ 3, 2, "مسجد النبی", "غدیر خم", "مکه", "مدینه", "خطبه غدیر در کجا ایراد شد؟" }
});
migrationBuilder.CreateIndex(
name: "IX_UserKhatmSelections_KhatmItemId",
table: "UserKhatmSelections",
column: "KhatmItemId");
migrationBuilder.CreateIndex(
name: "IX_UserKhatmSelections_UserId_KhatmItemId",
table: "UserKhatmSelections",
columns: new[] { "UserId", "KhatmItemId" },
unique: true);
migrationBuilder.CreateIndex(
name: "IX_UserQuizAnswers_QuestionId",
table: "UserQuizAnswers",
column: "QuestionId");
migrationBuilder.CreateIndex(
name: "IX_UserQuizAnswers_UserQuizAttemptId",
table: "UserQuizAnswers",
column: "UserQuizAttemptId");
migrationBuilder.CreateIndex(
name: "IX_UserQuizAttempts_UserId",
table: "UserQuizAttempts",
column: "UserId",
unique: true);
migrationBuilder.CreateIndex(
name: "IX_Users_Contact",
table: "Users",
column: "Contact",
unique: true);
migrationBuilder.CreateIndex(
name: "IX_Users_TrackingCode",
table: "Users",
column: "TrackingCode",
unique: true);
migrationBuilder.CreateIndex(
name: "IX_UserTotalScores_UserId",
table: "UserTotalScores",
column: "UserId",
unique: true);
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "UserKhatmSelections");
migrationBuilder.DropTable(
name: "UserQuizAnswers");
migrationBuilder.DropTable(
name: "UserTotalScores");
migrationBuilder.DropTable(
name: "KhatmItems");
migrationBuilder.DropTable(
name: "QuizQuestions");
migrationBuilder.DropTable(
name: "UserQuizAttempts");
migrationBuilder.DropTable(
name: "Users");
}
}
}