This commit is contained in:
Nadegamra
2021-09-09 20:32:56 +03:00
parent a3b4bb2e30
commit b447434a47
8 changed files with 675 additions and 11 deletions

View File

@@ -0,0 +1,226 @@
// <auto-generated />
using System;
using KTUSAPS.Data;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
namespace KTUSAPS.Data.Migrations
{
[DbContext(typeof(SAPSDataContext))]
[Migration("20210909173149_Initial")]
partial class Initial
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("Relational:MaxIdentifierLength", 64)
.HasAnnotation("ProductVersion", "5.0.9");
modelBuilder.Entity("KTUSAPS.Data.Model.Admin", b =>
{
b.Property<string>("UserId")
.HasMaxLength(64)
.HasColumnType("varchar(64)");
b.Property<string>("Comment")
.HasMaxLength(256)
.HasColumnType("varchar(256)");
b.HasKey("UserId");
b.ToTable("Admins");
});
modelBuilder.Entity("KTUSAPS.Data.Model.Issue", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<DateTime>("Created")
.HasColumnType("datetime(6)");
b.Property<string>("Description")
.HasColumnType("longtext");
b.Property<string>("Email")
.HasMaxLength(320)
.HasColumnType("varchar(320)");
b.Property<bool>("Publishable")
.HasColumnType("tinyint(1)");
b.Property<bool>("Solved")
.HasColumnType("tinyint(1)");
b.Property<string>("UserID")
.HasMaxLength(64)
.HasColumnType("varchar(64)");
b.HasKey("Id");
b.ToTable("Issues");
});
modelBuilder.Entity("KTUSAPS.Data.Model.PublishedFeedback", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<DateTime>("Created")
.HasColumnType("datetime(6)");
b.Property<string>("FeedbackEn")
.IsRequired()
.HasColumnType("longtext");
b.Property<string>("FeedbackLt")
.IsRequired()
.HasColumnType("longtext");
b.Property<int?>("IssueId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("IssueId")
.IsUnique();
b.ToTable("PublishedFeedbacks");
});
modelBuilder.Entity("KTUSAPS.Data.Model.PublishedProblem", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<DateTime>("Created")
.HasColumnType("datetime(6)");
b.Property<int?>("IssueId")
.HasColumnType("int");
b.Property<string>("ProblemEn")
.IsRequired()
.HasColumnType("longtext");
b.Property<string>("ProblemLt")
.IsRequired()
.HasColumnType("longtext");
b.Property<string>("ResponseEn")
.HasColumnType("longtext");
b.Property<string>("ResponseLt")
.HasColumnType("longtext");
b.Property<int?>("SolutionId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("IssueId")
.IsUnique();
b.HasIndex("SolutionId")
.IsUnique();
b.ToTable("PublishedProblems");
});
modelBuilder.Entity("KTUSAPS.Data.Model.Solution", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<DateTime>("Created")
.HasColumnType("datetime(6)");
b.Property<string>("SolutionEn")
.HasColumnType("longtext");
b.Property<string>("SolutionLt")
.HasColumnType("longtext");
b.HasKey("Id");
b.ToTable("Solutions");
});
modelBuilder.Entity("KTUSAPS.Data.Model.Vote", b =>
{
b.Property<string>("UserId")
.HasMaxLength(64)
.HasColumnType("varchar(64)");
b.Property<int>("ProblemId")
.HasColumnType("int");
b.HasKey("UserId", "ProblemId");
b.HasIndex("ProblemId");
b.ToTable("Votes");
});
modelBuilder.Entity("KTUSAPS.Data.Model.PublishedFeedback", b =>
{
b.HasOne("KTUSAPS.Data.Model.Issue", "Issue")
.WithOne("Feedback")
.HasForeignKey("KTUSAPS.Data.Model.PublishedFeedback", "IssueId");
b.Navigation("Issue");
});
modelBuilder.Entity("KTUSAPS.Data.Model.PublishedProblem", b =>
{
b.HasOne("KTUSAPS.Data.Model.Issue", "Issue")
.WithOne("Problem")
.HasForeignKey("KTUSAPS.Data.Model.PublishedProblem", "IssueId");
b.HasOne("KTUSAPS.Data.Model.Solution", "Solution")
.WithOne("Problem")
.HasForeignKey("KTUSAPS.Data.Model.PublishedProblem", "SolutionId");
b.Navigation("Issue");
b.Navigation("Solution");
});
modelBuilder.Entity("KTUSAPS.Data.Model.Vote", b =>
{
b.HasOne("KTUSAPS.Data.Model.PublishedProblem", "Problem")
.WithMany("Votes")
.HasForeignKey("ProblemId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Problem");
});
modelBuilder.Entity("KTUSAPS.Data.Model.Issue", b =>
{
b.Navigation("Feedback");
b.Navigation("Problem");
});
modelBuilder.Entity("KTUSAPS.Data.Model.PublishedProblem", b =>
{
b.Navigation("Votes");
});
modelBuilder.Entity("KTUSAPS.Data.Model.Solution", b =>
{
b.Navigation("Problem");
});
#pragma warning restore 612, 618
}
}
}

View File

@@ -0,0 +1,195 @@
using System;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
namespace KTUSAPS.Data.Migrations
{
public partial class Initial : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterDatabase()
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.CreateTable(
name: "Admins",
columns: table => new
{
UserId = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
Comment = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true)
.Annotation("MySql:CharSet", "utf8mb4")
},
constraints: table =>
{
table.PrimaryKey("PK_Admins", x => x.UserId);
})
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.CreateTable(
name: "Issues",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn),
UserID = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: true)
.Annotation("MySql:CharSet", "utf8mb4"),
Email = table.Column<string>(type: "varchar(320)", maxLength: 320, nullable: true)
.Annotation("MySql:CharSet", "utf8mb4"),
Publishable = table.Column<bool>(type: "tinyint(1)", nullable: false),
Solved = table.Column<bool>(type: "tinyint(1)", nullable: false),
Created = table.Column<DateTime>(type: "datetime(6)", nullable: false),
Description = table.Column<string>(type: "longtext", nullable: true)
.Annotation("MySql:CharSet", "utf8mb4")
},
constraints: table =>
{
table.PrimaryKey("PK_Issues", x => x.Id);
})
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.CreateTable(
name: "Solutions",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn),
SolutionLt = table.Column<string>(type: "longtext", nullable: true)
.Annotation("MySql:CharSet", "utf8mb4"),
SolutionEn = table.Column<string>(type: "longtext", nullable: true)
.Annotation("MySql:CharSet", "utf8mb4"),
Created = table.Column<DateTime>(type: "datetime(6)", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Solutions", x => x.Id);
})
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.CreateTable(
name: "PublishedFeedbacks",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn),
FeedbackLt = table.Column<string>(type: "longtext", nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
FeedbackEn = table.Column<string>(type: "longtext", nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
Created = table.Column<DateTime>(type: "datetime(6)", nullable: false),
IssueId = table.Column<int>(type: "int", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_PublishedFeedbacks", x => x.Id);
table.ForeignKey(
name: "FK_PublishedFeedbacks_Issues_IssueId",
column: x => x.IssueId,
principalTable: "Issues",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
})
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.CreateTable(
name: "PublishedProblems",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn),
ProblemLt = table.Column<string>(type: "longtext", nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
ProblemEn = table.Column<string>(type: "longtext", nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
ResponseLt = table.Column<string>(type: "longtext", nullable: true)
.Annotation("MySql:CharSet", "utf8mb4"),
ResponseEn = table.Column<string>(type: "longtext", nullable: true)
.Annotation("MySql:CharSet", "utf8mb4"),
Created = table.Column<DateTime>(type: "datetime(6)", nullable: false),
IssueId = table.Column<int>(type: "int", nullable: true),
SolutionId = table.Column<int>(type: "int", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_PublishedProblems", x => x.Id);
table.ForeignKey(
name: "FK_PublishedProblems_Issues_IssueId",
column: x => x.IssueId,
principalTable: "Issues",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
table.ForeignKey(
name: "FK_PublishedProblems_Solutions_SolutionId",
column: x => x.SolutionId,
principalTable: "Solutions",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
})
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.CreateTable(
name: "Votes",
columns: table => new
{
UserId = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
ProblemId = table.Column<int>(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Votes", x => new { x.UserId, x.ProblemId });
table.ForeignKey(
name: "FK_Votes_PublishedProblems_ProblemId",
column: x => x.ProblemId,
principalTable: "PublishedProblems",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
})
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.CreateIndex(
name: "IX_PublishedFeedbacks_IssueId",
table: "PublishedFeedbacks",
column: "IssueId",
unique: true);
migrationBuilder.CreateIndex(
name: "IX_PublishedProblems_IssueId",
table: "PublishedProblems",
column: "IssueId",
unique: true);
migrationBuilder.CreateIndex(
name: "IX_PublishedProblems_SolutionId",
table: "PublishedProblems",
column: "SolutionId",
unique: true);
migrationBuilder.CreateIndex(
name: "IX_Votes_ProblemId",
table: "Votes",
column: "ProblemId");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "Admins");
migrationBuilder.DropTable(
name: "PublishedFeedbacks");
migrationBuilder.DropTable(
name: "Votes");
migrationBuilder.DropTable(
name: "PublishedProblems");
migrationBuilder.DropTable(
name: "Issues");
migrationBuilder.DropTable(
name: "Solutions");
}
}
}

View File

@@ -0,0 +1,224 @@
// <auto-generated />
using System;
using KTUSAPS.Data;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
namespace KTUSAPS.Data.Migrations
{
[DbContext(typeof(SAPSDataContext))]
partial class SAPSDataContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("Relational:MaxIdentifierLength", 64)
.HasAnnotation("ProductVersion", "5.0.9");
modelBuilder.Entity("KTUSAPS.Data.Model.Admin", b =>
{
b.Property<string>("UserId")
.HasMaxLength(64)
.HasColumnType("varchar(64)");
b.Property<string>("Comment")
.HasMaxLength(256)
.HasColumnType("varchar(256)");
b.HasKey("UserId");
b.ToTable("Admins");
});
modelBuilder.Entity("KTUSAPS.Data.Model.Issue", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<DateTime>("Created")
.HasColumnType("datetime(6)");
b.Property<string>("Description")
.HasColumnType("longtext");
b.Property<string>("Email")
.HasMaxLength(320)
.HasColumnType("varchar(320)");
b.Property<bool>("Publishable")
.HasColumnType("tinyint(1)");
b.Property<bool>("Solved")
.HasColumnType("tinyint(1)");
b.Property<string>("UserID")
.HasMaxLength(64)
.HasColumnType("varchar(64)");
b.HasKey("Id");
b.ToTable("Issues");
});
modelBuilder.Entity("KTUSAPS.Data.Model.PublishedFeedback", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<DateTime>("Created")
.HasColumnType("datetime(6)");
b.Property<string>("FeedbackEn")
.IsRequired()
.HasColumnType("longtext");
b.Property<string>("FeedbackLt")
.IsRequired()
.HasColumnType("longtext");
b.Property<int?>("IssueId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("IssueId")
.IsUnique();
b.ToTable("PublishedFeedbacks");
});
modelBuilder.Entity("KTUSAPS.Data.Model.PublishedProblem", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<DateTime>("Created")
.HasColumnType("datetime(6)");
b.Property<int?>("IssueId")
.HasColumnType("int");
b.Property<string>("ProblemEn")
.IsRequired()
.HasColumnType("longtext");
b.Property<string>("ProblemLt")
.IsRequired()
.HasColumnType("longtext");
b.Property<string>("ResponseEn")
.HasColumnType("longtext");
b.Property<string>("ResponseLt")
.HasColumnType("longtext");
b.Property<int?>("SolutionId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("IssueId")
.IsUnique();
b.HasIndex("SolutionId")
.IsUnique();
b.ToTable("PublishedProblems");
});
modelBuilder.Entity("KTUSAPS.Data.Model.Solution", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<DateTime>("Created")
.HasColumnType("datetime(6)");
b.Property<string>("SolutionEn")
.HasColumnType("longtext");
b.Property<string>("SolutionLt")
.HasColumnType("longtext");
b.HasKey("Id");
b.ToTable("Solutions");
});
modelBuilder.Entity("KTUSAPS.Data.Model.Vote", b =>
{
b.Property<string>("UserId")
.HasMaxLength(64)
.HasColumnType("varchar(64)");
b.Property<int>("ProblemId")
.HasColumnType("int");
b.HasKey("UserId", "ProblemId");
b.HasIndex("ProblemId");
b.ToTable("Votes");
});
modelBuilder.Entity("KTUSAPS.Data.Model.PublishedFeedback", b =>
{
b.HasOne("KTUSAPS.Data.Model.Issue", "Issue")
.WithOne("Feedback")
.HasForeignKey("KTUSAPS.Data.Model.PublishedFeedback", "IssueId");
b.Navigation("Issue");
});
modelBuilder.Entity("KTUSAPS.Data.Model.PublishedProblem", b =>
{
b.HasOne("KTUSAPS.Data.Model.Issue", "Issue")
.WithOne("Problem")
.HasForeignKey("KTUSAPS.Data.Model.PublishedProblem", "IssueId");
b.HasOne("KTUSAPS.Data.Model.Solution", "Solution")
.WithOne("Problem")
.HasForeignKey("KTUSAPS.Data.Model.PublishedProblem", "SolutionId");
b.Navigation("Issue");
b.Navigation("Solution");
});
modelBuilder.Entity("KTUSAPS.Data.Model.Vote", b =>
{
b.HasOne("KTUSAPS.Data.Model.PublishedProblem", "Problem")
.WithMany("Votes")
.HasForeignKey("ProblemId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Problem");
});
modelBuilder.Entity("KTUSAPS.Data.Model.Issue", b =>
{
b.Navigation("Feedback");
b.Navigation("Problem");
});
modelBuilder.Entity("KTUSAPS.Data.Model.PublishedProblem", b =>
{
b.Navigation("Votes");
});
modelBuilder.Entity("KTUSAPS.Data.Model.Solution", b =>
{
b.Navigation("Problem");
});
#pragma warning restore 612, 618
}
}
}

View File

@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace KTUSAPS.Data.Model
{
public class Admin
{
[Key, MaxLength(64)]
public string UserId { get; set; }
[MaxLength(256)]
public string Comment { get; set; }
}
}

View File

@@ -14,8 +14,8 @@ namespace KTUSAPS.Data.Model
public int Id { get; set; }
[MaxLength(64)]
public string UserID { get; set; }
[MaxLength(320)]
public string Email { get; set; }
public bool Anonimous { get; set; }
public bool Publishable { get; set; }
public bool Solved { get; set; } = false;
public DateTime Created { get; set; }

View File

@@ -1,18 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<ClassDiagram MajorVersion="1" MinorVersion="1">
<Class Name="KTUSAPS.Data.Model.Issue">
<Position X="0.75" Y="1.25" Width="1.5" />
<Position X="0.5" Y="0.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAACAAJAACAgAAAAAAACAAgIAAEAAAQAAAAAAAAAAAA=</HashCode>
<HashCode>AAACAAJAACAgAAAAAAACAAgIAAAAAAQAAAAAAAAAAAA=</HashCode>
<FileName>Model\Issue.cs</FileName>
</TypeIdentifier>
<ShowAsAssociation>
<Property Name="Feedback" />
<Property Name="Problem" />
<Property Name="Feedback" />
</ShowAsAssociation>
</Class>
<Class Name="KTUSAPS.Data.Model.PublishedFeedback">
<Position X="3.75" Y="3.75" Width="1.5" />
<Position X="2.75" Y="3.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAECAAAAAAAAAAAACAIAAAAAAAAAAAQAEAAAAAAAAAA=</HashCode>
<FileName>Model\PublishedFeedback.cs</FileName>
@@ -22,21 +22,21 @@
</ShowAsAssociation>
</Class>
<Class Name="KTUSAPS.Data.Model.PublishedProblem">
<Position X="3.75" Y="0.5" Width="1.5" />
<Position X="2.75" Y="0.75" Width="1.5" />
<TypeIdentifier>
<HashCode>ACECABAAAAEAAAgAAAABAAAAEAAAQAQAEAAAAAAAAAA=</HashCode>
<FileName>Model\PublishedProblem.cs</FileName>
</TypeIdentifier>
<ShowAsAssociation>
<Property Name="Solution" />
<Property Name="Issue" />
<Property Name="Solution" />
</ShowAsAssociation>
<ShowAsCollectionAssociation>
<Property Name="Votes" />
</ShowAsCollectionAssociation>
</Class>
<Class Name="KTUSAPS.Data.Model.Solution">
<Position X="6.5" Y="0.5" Width="1.5" />
<Position X="6" Y="0.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAACAAIABAAAAQAAAAAAAAAAAAAAAAQAAAAAAAAAAAA=</HashCode>
<FileName>Model\Solution.cs</FileName>
@@ -46,7 +46,7 @@
</ShowAsAssociation>
</Class>
<Class Name="KTUSAPS.Data.Model.Vote">
<Position X="6.5" Y="2.25" Width="1.5" />
<Position X="6" Y="2.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAIAAAAAEAAAAAAAAAgAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Model\Vote.cs</FileName>

View File

@@ -22,7 +22,7 @@ namespace KTUSAPS.Data
{
if (!optionsBuilder.IsConfigured)
{
optionsBuilder.UseMySql("Server=localhost;User=samokdev;Password=;Database=samok_dev", new MariaDbServerVersion(new Version(10, 6, 3)));
optionsBuilder.UseMySql("Server=localhost;User=saps;Password=;Database=saps_dev", new MariaDbServerVersion(new Version(10, 6, 3)));
}
}
@@ -31,6 +31,8 @@ namespace KTUSAPS.Data
public DbSet<PublishedProblem> PublishedProblems { get; set; }
public DbSet<Solution> Solutions { get; set; }
public DbSet<Vote> Votes { get; set; }
public DbSet<Admin> Admins { get; set; }
}
}