diff --git a/src/ClientServer/ClientServer.csproj b/src/ClientServer/ClientServer.csproj index 0ef607e0cb0ff7f66b56b4d3a0a109d7c48507a4..97a69137cc2ae18fcfbd4887bc803e51baac8d7d 100755 --- a/src/ClientServer/ClientServer.csproj +++ b/src/ClientServer/ClientServer.csproj @@ -55,4 +55,7 @@ <ItemGroup> <None Remove="wwwroot\**" /> </ItemGroup> + <ItemGroup> + <Folder Include="Migrations" /> + </ItemGroup> </Project> \ No newline at end of file diff --git a/src/ClientServer/Config/Constants.cs b/src/ClientServer/Config/Constants.cs index 7a314f3a7c7310bbd0379e7176666da4f3ee328d..e39f09735e2c4898e6f78967a32b5a99e173bb19 100644 --- a/src/ClientServer/Config/Constants.cs +++ b/src/ClientServer/Config/Constants.cs @@ -13,7 +13,7 @@ namespace ClientServer.Helpers /// </summary> public static class Constants { - public static string VersionString = "2.4.1"; + public static string VersionString = "2.4.2"; /// <summary> /// this is only set once at program.cs!! @@ -60,6 +60,10 @@ namespace ClientServer.Helpers /// <summary> /// the string to split lines in the test protocol + /// do not change this after we have data in the db! + /// because all test results are stored as string that we split with this... + /// a bad design decision... why haven'T we used just \r\n ?? + /// now every new line counts as 4 characters... /// </summary> public const string TestProtocolSplitString = "\\r\\n"; diff --git a/src/ClientServer/Controllers/Core/CustomProjects/EditCustomProjectController.cs b/src/ClientServer/Controllers/Core/CustomProjects/EditCustomProjectController.cs index fb5a46151e9ec4b1a2c315a0eb3f22dca7a35ef8..182002ab4209886ea5d00f8e50bca3242fffe3f9 100644 --- a/src/ClientServer/Controllers/Core/CustomProjects/EditCustomProjectController.cs +++ b/src/ClientServer/Controllers/Core/CustomProjects/EditCustomProjectController.cs @@ -206,7 +206,15 @@ namespace ClientServer.Controllers.Core.customProjects Protocol = p.Protocol.Split(new string[] {Constants.TestProtocolSplitString}, StringSplitOptions.RemoveEmptyEntries).ToList(), - HasCompiled = p.HasCompiled + HasCompiled = p.HasCompiled, + CharacterLimitExceeded = p.CharacterLimitExceeded, + CharacterLimitUsed = p.CharacterLimitUsed, + TimeoutInMsUsed = p.TimeoutInMsUsed, + CompileTimeoutInMsUsed = p.CompileTimeoutInMsUsed, + RunnerVersion = p.RunnerVersion, + TimeForCompiling = p.TimeForCompiling, + TimeForUserProgram = p.TimeForUserProgram, + TestServerVersion = p.TestServerVersion }).ToList() ; diff --git a/src/ClientServer/Controllers/Core/Exercises/DoExerciseAfterSolution/DoExerciseAfterSolutionController.cs b/src/ClientServer/Controllers/Core/Exercises/DoExerciseAfterSolution/DoExerciseAfterSolutionController.cs index c36d5a0af307d68893cb2cee5f1a8da257475d20..608902fa4d623399afe82537ef3fa6fe02116f3d 100644 --- a/src/ClientServer/Controllers/Core/Exercises/DoExerciseAfterSolution/DoExerciseAfterSolutionController.cs +++ b/src/ClientServer/Controllers/Core/Exercises/DoExerciseAfterSolution/DoExerciseAfterSolutionController.cs @@ -695,6 +695,8 @@ namespace ClientServer.Controllers.Core.Exercises.DoExerciseAfterSolution TimeForUserProgram = p.TimeForUserProgram, TimeoutInMsUsed = p.TimeoutInMsUsed, CompileTimeoutInMsUsed = p.CompileTimeoutInMsUsed, + CharacterLimitExceeded = p.CharacterLimitExceeded, + CharacterLimitUsed = p.CharacterLimitUsed, }).ToList(), CustomTestResults = new List<StoredTestResultFromBackend>() }; @@ -736,6 +738,8 @@ namespace ClientServer.Controllers.Core.Exercises.DoExerciseAfterSolution TimeForUserProgram = p.TimeForUserProgram, TimeoutInMsUsed = p.TimeoutInMsUsed, CompileTimeoutInMsUsed = p.CompileTimeoutInMsUsed, + CharacterLimitExceeded = p.CharacterLimitExceeded, + CharacterLimitUsed = p.CharacterLimitUsed, }).ToList() ; } @@ -929,6 +933,8 @@ namespace ClientServer.Controllers.Core.Exercises.DoExerciseAfterSolution TimeForUserProgram = p.Result.TimeForUserProgram, TimeoutInMsUsed = p.Result.TimeoutInMsUsed, CompileTimeoutInMsUsed = p.Result.CompileTimeoutInMsUsed, + CharacterLimitExceeded = p.Result.CharacterLimitExceeded, + CharacterLimitUsed = p.Result.CharacterLimitUsed, } }).ToList(); diff --git a/src/ClientServer/Controllers/Core/Exercises/DoExerciseController.cs b/src/ClientServer/Controllers/Core/Exercises/DoExerciseController.cs index 3617f45f8b48649e6d242a08c39c120ab851dfe1..907d0e375ad05d23dce9531736c5d6a93c25ee62 100644 --- a/src/ClientServer/Controllers/Core/Exercises/DoExerciseController.cs +++ b/src/ClientServer/Controllers/Core/Exercises/DoExerciseController.cs @@ -1032,6 +1032,8 @@ namespace ClientServer.Controllers.Core.Exercises TimeForUserProgram = p.TimeForUserProgram, TimeoutInMsUsed = p.TimeoutInMsUsed, CompileTimeoutInMsUsed = p.CompileTimeoutInMsUsed, + CharacterLimitExceeded = p.CharacterLimitExceeded, + CharacterLimitUsed = p.CharacterLimitUsed, }).ToList(), CustomTestResults = new List<StoredTestResultFromBackend>() }; @@ -1074,6 +1076,8 @@ namespace ClientServer.Controllers.Core.Exercises TimeForUserProgram = p.TimeForUserProgram, TimeoutInMsUsed = p.TimeoutInMsUsed, CompileTimeoutInMsUsed = p.CompileTimeoutInMsUsed, + CharacterLimitExceeded = p.CharacterLimitExceeded, + CharacterLimitUsed = p.CharacterLimitUsed, }).ToList() ; } @@ -1324,6 +1328,8 @@ namespace ClientServer.Controllers.Core.Exercises TimeForUserProgram = p.Result.TimeForUserProgram, TimeoutInMsUsed = p.Result.TimeoutInMsUsed, CompileTimeoutInMsUsed = p.Result.CompileTimeoutInMsUsed, + CharacterLimitExceeded = p.Result.CharacterLimitExceeded, + CharacterLimitUsed = p.Result.CharacterLimitUsed, } }).ToList(); @@ -3826,6 +3832,17 @@ namespace ClientServer.Controllers.Core.Exercises /// can be null /// </summary> public string TestServerVersion { get; set; } + + /// <summary> + /// true: the limit <see cref="YapexDbContext.TestProtocolMaxStringLength"/> was exceeded and + /// the <see cref="Protocol"/> was cut + /// </summary> + public bool CharacterLimitExceeded { get; set; } + /// <summary> + /// the db will only store a max of characters <see cref="YapexDbContext.TestProtocolMaxStringLength"/> + /// can be null for old results + /// </summary> + public int? CharacterLimitUsed { get; set; } } #endregion diff --git a/src/ClientServer/Controllers/Core/SystemSettingsController.cs b/src/ClientServer/Controllers/Core/SystemSettingsController.cs index 4eb45f9ec1aafc0c15b697402fc2b882c790c3b6..e8d199d5135a3893fc465e378f7c5067d0300a13 100644 --- a/src/ClientServer/Controllers/Core/SystemSettingsController.cs +++ b/src/ClientServer/Controllers/Core/SystemSettingsController.cs @@ -25,10 +25,7 @@ namespace ClientServer.Controllers.Core /// </summary> private static TestServerPublicSettings InvalidTestServerPublicSettings = new TestServerPublicSettings() { - MaxLinesToRead = -1, - MaxLinesToWrite = -1, HardTimeoutInMs = -1, - MaxErrLinesToRead = -1, MaxNumberOfTestsWithOneRequest = -1, HardMemoryLimitInKb = -1, HardDiskSpaceLimitInKb = -1, @@ -530,8 +527,5 @@ namespace ClientServer.Controllers.Core public int HardDiskSpaceLimitInKb { get; set; } public int MaxNumberOfTestsWithOneRequest { get; set; } - public int MaxLinesToRead { get; set; } - public int MaxErrLinesToRead { get; set; } - public int MaxLinesToWrite { get; set; } } } diff --git a/src/ClientServer/Controllers/Core/Testing/TestingController.cs b/src/ClientServer/Controllers/Core/Testing/TestingController.cs index a71f5c5e3da3fd8b248be0fdfc19b5d1d0d21e9b..bcd0941c8249cd9a8d184e1368fd8d163118675c 100644 --- a/src/ClientServer/Controllers/Core/Testing/TestingController.cs +++ b/src/ClientServer/Controllers/Core/Testing/TestingController.cs @@ -607,11 +607,20 @@ namespace ClientServer.Controllers.Core.Testing AnswerTestFromTestServer testResult = testResults[0]; + //in case the test-runner does not restrict this... + bool characterLimitExceeded = testResult.Protocol.Length > YapexDbContext.TestProtocolMaxStringLength; + + if (characterLimitExceeded) + { + //cut last part + testResult.Protocol = testResult.Protocol.Substring(0, YapexDbContext.TestProtocolMaxStringLength); + testResult.CharacterLimitExceeded = true; + } + string[] protocol = testResult.Protocol.Split(new string[] {Constants.TestProtocolSplitString}, StringSplitOptions.RemoveEmptyEntries); - //and give user feedback var response = new TestAnswerFromBackend { @@ -629,6 +638,8 @@ namespace ClientServer.Controllers.Core.Testing TimeForUserProgram = testResult.TimeForUserProgram, TimeoutInMsUsed = testResult.TimeoutInMsUsed, CompileTimeoutInMsUsed = testResult.CompileTimeoutInMsUsed, + CharacterLimitExceeded = testResult.CharacterLimitExceeded, + CharacterLimitUsed = YapexDbContext.TestProtocolMaxStringLength }; @@ -1504,6 +1515,8 @@ namespace ClientServer.Controllers.Core.Testing TimeForUserProgram = testResult.TimeForUserProgram, TimeoutInMsUsed = testResult.TimeoutInMsUsed, CompileTimeoutInMsUsed = testResult.CompileTimeoutInMsUsed, + CharacterLimitExceeded = testResult.CharacterLimitExceeded, + CharacterLimitUsed = testResult.CharacterLimitUsed, }; _context.TestWithSingleSolutionAsTestResult.Add(oldResult); @@ -1523,6 +1536,8 @@ namespace ClientServer.Controllers.Core.Testing oldResult.TimeForUserProgram = testResult.TimeForUserProgram; oldResult.TimeoutInMsUsed = testResult.TimeoutInMsUsed; oldResult.CompileTimeoutInMsUsed = testResult.CompileTimeoutInMsUsed; + oldResult.CharacterLimitExceeded = testResult.CharacterLimitExceeded; + oldResult.CharacterLimitUsed = testResult.CharacterLimitUsed; } try @@ -1839,6 +1854,8 @@ namespace ClientServer.Controllers.Core.Testing TimeForUserProgram = testResult.TimeForUserProgram, TimeoutInMsUsed = testResult.TimeoutInMsUsed, CompileTimeoutInMsUsed = testResult.CompileTimeoutInMsUsed, + CharacterLimitExceeded = testResult.CharacterLimitExceeded, + CharacterLimitUsed = testResult.CharacterLimitUsed, }; _context.TestWithAfterSolutionAsTestResults.Add(oldResult); @@ -1858,6 +1875,8 @@ namespace ClientServer.Controllers.Core.Testing oldResult.TimeForUserProgram = testResult.TimeForUserProgram; oldResult.TimeoutInMsUsed = testResult.TimeoutInMsUsed; oldResult.CompileTimeoutInMsUsed = testResult.CompileTimeoutInMsUsed; + oldResult.CharacterLimitExceeded = testResult.CharacterLimitExceeded; + oldResult.CharacterLimitUsed = testResult.CharacterLimitUsed; } try @@ -2013,6 +2032,8 @@ namespace ClientServer.Controllers.Core.Testing TimeForUserProgram = testResult.TimeForUserProgram, TimeoutInMsUsed = testResult.TimeoutInMsUsed, CompileTimeoutInMsUsed = testResult.CompileTimeoutInMsUsed, + CharacterLimitExceeded = testResult.CharacterLimitExceeded, + CharacterLimitUsed = testResult.CharacterLimitUsed, }; _context.CustomTestWithAfterSolutionAsTestResults.Add(oldResult); @@ -2032,6 +2053,8 @@ namespace ClientServer.Controllers.Core.Testing oldResult.TimeForUserProgram = testResult.TimeForUserProgram; oldResult.TimeoutInMsUsed = testResult.TimeoutInMsUsed; oldResult.CompileTimeoutInMsUsed = testResult.CompileTimeoutInMsUsed; + oldResult.CharacterLimitExceeded = testResult.CharacterLimitExceeded; + oldResult.CharacterLimitUsed = testResult.CharacterLimitUsed; } try @@ -2233,6 +2256,8 @@ namespace ClientServer.Controllers.Core.Testing TimeForUserProgram = testResult.TimeForUserProgram, TimeoutInMsUsed = testResult.TimeoutInMsUsed, CompileTimeoutInMsUsed = testResult.CompileTimeoutInMsUsed, + CharacterLimitExceeded = testResult.CharacterLimitExceeded, + CharacterLimitUsed = testResult.CharacterLimitUsed, }; _context.CustomTestWithSingleSolutionAsTestResult.Add(oldResult); @@ -2252,6 +2277,8 @@ namespace ClientServer.Controllers.Core.Testing oldResult.TimeForUserProgram = testResult.TimeForUserProgram; oldResult.TimeoutInMsUsed = testResult.TimeoutInMsUsed; oldResult.CompileTimeoutInMsUsed = testResult.CompileTimeoutInMsUsed; + oldResult.CharacterLimitExceeded = testResult.CharacterLimitExceeded; + oldResult.CharacterLimitUsed = testResult.CharacterLimitUsed; } try @@ -2454,6 +2481,8 @@ namespace ClientServer.Controllers.Core.Testing TimeForUserProgram = testResult.TimeForUserProgram, TimeoutInMsUsed = testResult.TimeoutInMsUsed, CompileTimeoutInMsUsed = testResult.CompileTimeoutInMsUsed, + CharacterLimitExceeded = testResult.CharacterLimitExceeded, + CharacterLimitUsed = testResult.CharacterLimitUsed }; _context.CustomProjectTestWithSolutionAsTestResults.Add(oldResult); @@ -2473,6 +2502,8 @@ namespace ClientServer.Controllers.Core.Testing oldResult.TimeForUserProgram = testResult.TimeForUserProgram; oldResult.TimeoutInMsUsed = testResult.TimeoutInMsUsed; oldResult.CompileTimeoutInMsUsed = testResult.CompileTimeoutInMsUsed; + oldResult.CharacterLimitExceeded = testResult.CharacterLimitExceeded; + oldResult.CharacterLimitUsed = testResult.CharacterLimitUsed; } try @@ -2975,6 +3006,16 @@ namespace ClientServer.Controllers.Core.Testing return null; } + //in case the test-runner does not restrict this... + bool characterLimitExceeded = testResult.Protocol.Length > YapexDbContext.TestProtocolMaxStringLength; + + if (characterLimitExceeded) + { + //cut last part + testResult.Protocol = testResult.Protocol.Substring(0, YapexDbContext.TestProtocolMaxStringLength); + testResult.CharacterLimitExceeded = true; + } + string[] protocol = testResult.Protocol.Split(new string[] {Constants.TestProtocolSplitString}, StringSplitOptions.RemoveEmptyEntries); @@ -2996,6 +3037,8 @@ namespace ClientServer.Controllers.Core.Testing TimeForUserProgram = testResult.TimeForUserProgram, TimeoutInMsUsed = testResult.TimeoutInMsUsed, CompileTimeoutInMsUsed = testResult.CompileTimeoutInMsUsed, + CharacterLimitExceeded = testResult.CharacterLimitExceeded, + CharacterLimitUsed = YapexDbContext.TestProtocolMaxStringLength }); } @@ -3081,7 +3124,8 @@ namespace ClientServer.Controllers.Core.Testing Hash = p.Hash }).ToList(), }).ToList(), - RequestDistinctionString = userId + "_" + nextSequentialNumber + RequestDistinctionString = userId + "_" + nextSequentialNumber, + CharacterLimitProtocol = YapexDbContext.TestProtocolMaxStringLength }; @@ -3440,6 +3484,13 @@ namespace ClientServer.Controllers.Core.Testing /// the tests to run /// </summary> public List<RunTestCommandDataForTestServer> Tests { get; set; } + + /// <summary> + /// the db will only store a max of characters <see cref="YapexDbContext.TestProtocolMaxStringLength"/> + /// for the test result protocol + /// can be null for old results + /// </summary> + public int CharacterLimitProtocol { get; set; } } /// <summary> @@ -3626,6 +3677,17 @@ namespace ClientServer.Controllers.Core.Testing /// can be null /// </summary> public string TestServerVersion { get; set; } + + /// <summary> + /// true: the limit <see cref="YapexDbContext.TestProtocolMaxStringLength"/> was exceeded and + /// the <see cref="Protocol"/> was cut + /// </summary> + public bool CharacterLimitExceeded { get; set; } + /// <summary> + /// the db will only store a max of characters <see cref="YapexDbContext.TestProtocolMaxStringLength"/> + /// can be null for old results + /// </summary> + public int? CharacterLimitUsed { get; set; } } public class AnswerTestFromTestServer : AnswerTestFromTestServerBase @@ -3637,7 +3699,7 @@ namespace ClientServer.Controllers.Core.Testing } /// <summary> - /// the result from the test + /// the result from the test (what we send back to the frontend) /// </summary> public class TestAnswerFromBackend : AnswerTestFromTestServerBase { diff --git a/src/ClientServer/Controllers/Core/Users/GroupController.cs b/src/ClientServer/Controllers/Core/Users/GroupController.cs index f58fab2bab9500b4879cabf614bc725ebc968369..fb7537ccf8fb99c9879496e315a17de9e5655276 100644 --- a/src/ClientServer/Controllers/Core/Users/GroupController.cs +++ b/src/ClientServer/Controllers/Core/Users/GroupController.cs @@ -2,11 +2,9 @@ using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; -using System.Text.RegularExpressions; using System.Threading.Tasks; using ClientServer.Db; using ClientServer.Helpers; -using ClientServer.Migrations; using ClientServer.Models.Users; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; diff --git a/src/ClientServer/Controllers/Core/Users/UsersController.cs b/src/ClientServer/Controllers/Core/Users/UsersController.cs index 04ab0e5b2a9d5de8f851303e6d5ad379cfff8174..2b1912099b3e5ad988d57e98fe75be497a0604cd 100644 --- a/src/ClientServer/Controllers/Core/Users/UsersController.cs +++ b/src/ClientServer/Controllers/Core/Users/UsersController.cs @@ -776,6 +776,17 @@ namespace ClientServer.Controllers.Core.Users //TODO MUST check if all custom tests and exercise solutions and group memberships gets deleted!! + var participationWhereExIsPermanentlyLockedCount = await _context.ExerciseReleaseWithUserAsParticipations + .CountAsync(p => p.UserId == userId && p.ExerciseRelease.Exercise.IsPermanentlyLocked) + ; + + if (participationWhereExIsPermanentlyLockedCount > 0) + { + await + Response.WriteAsync(Jc.Serialize(new BasicResponse(ResponseCode.InvalidRequest, "cannot delete user because he has participation(s) (solutions) für locked exercise(s)"))); + return; + } + //delete all exercises where the user is thw owner but the exercise is hidden... (because no one has access to this exercises) diff --git a/src/ClientServer/Controllers/dashboard/DashboardController.cs b/src/ClientServer/Controllers/dashboard/DashboardController.cs index 3827ce77609a19ec8df5c9268383072ef4633c56..94693f81bc8716eb8eb289c38b94afafff91bb6c 100644 --- a/src/ClientServer/Controllers/dashboard/DashboardController.cs +++ b/src/ClientServer/Controllers/dashboard/DashboardController.cs @@ -527,9 +527,6 @@ namespace ClientServer.Controllers */ public int MaxParallelTests { get; set; } public int MaxNumberOfTestsWithOneRequest { get; set; } - public int MaxLinesToRead { get; set; } - public int MaxErrLinesToRead { get; set; } - public int MaxLinesToWrite { get; set; } public string DbServer { get; set; } public string DbName { get; set; } diff --git a/src/ClientServer/Db/YapexDbContext.cs b/src/ClientServer/Db/YapexDbContext.cs index 070af715497fad9906e6d2cde3b1cc5d86454fe9..01889b463adddaa840dcf273536003f4f23ab382 100644 --- a/src/ClientServer/Db/YapexDbContext.cs +++ b/src/ClientServer/Db/YapexDbContext.cs @@ -30,21 +30,23 @@ namespace ClientServer.Db /// /// this is not in constants because should not be changed... /// </summary> - public const int DefaultMaxStringLength = 500; + public const int DefaultMaxStringLength = 2000; - public const int DescriptionContentMaxStringLength = 10000; + public const int DescriptionContentMaxStringLength = 50000; - public const int FileContentMaxStringLength = 10000; + public const int FileContentMaxStringLength = 70000; - public const int TestContentMaxStringLength = 5000; + public const int TestContentMaxStringLength = 80000; - public const int TestProtocolMaxStringLength = TestContentMaxStringLength*2; + /// <summary> + /// add 100 bytes for some header stuff e.g. exit code, timeouts, ... + /// </summary> + public const int TestProtocolMaxStringLength = TestContentMaxStringLength*2 + 100; - public const int PathsMaxStringLength = 5000; /// <summary> /// also used for the server message /// </summary> - public const int NotesMaxStringLength = 1000; + public const int NotesMaxStringLength = 10000; /// <summary> @@ -419,7 +421,7 @@ namespace ClientServer.Db //old fk ExerciseId1 --> delete... m.Entity<Exercise>() .HasOne(p => p.MetaData) - .WithOne() + .WithOne(p => p.Exercise) .HasForeignKey<MetaData>(p => p.ExerciseId) .IsRequired() .OnDelete(DeleteBehavior.Cascade) diff --git a/src/ClientServer/Migrations/20160824181544_init.Designer.cs b/src/ClientServer/Migrations/20160824181544_init.Designer.cs deleted file mode 100644 index 5d41f3e541ab86635425602bbf0f67c00d4c55fe..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20160824181544_init.Designer.cs +++ /dev/null @@ -1,1324 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20160824181544_init")] - partial class init - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.ContentType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Type"); - - b.HasKey("Id"); - - b.ToTable("ContentTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl"); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<bool>("IsOnlyVisibleToMe"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("ShortDescription"); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired(); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionVersionId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionVersionId"); - - b.ToTable("CustomTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MainSolutionVersionid"); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int>("NormalTestPoints"); - - b.Property<string>("Note"); - - b.Property<int>("SolutionVersionId"); - - b.Property<int>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("SolutionVersionId") - .IsRequired(); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionExerciseReleaseId") - .IsRequired(); - - b.Property<int?>("SolutionPLangId") - .IsRequired(); - - b.Property<int?>("SolutionUserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionVersions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionVersionId"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Language"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanExportExerciseResults"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.LdapUser", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("LdapUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeGroups"); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxSolutionVersionsPerUser"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("LdapUserId"); - - b.Property<string>("Password"); - - b.Property<string>("StudentNumber"); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired(); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("LdapUserId") - .IsUnique(); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany() - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution") - .WithMany("SolutionVersions") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("TestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany("TagWithMetaDatas") - .HasForeignKey("TagId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.LdapUser", "LdapUser") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.User", "LdapUserId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20160827045350_init2.Designer.cs b/src/ClientServer/Migrations/20160827045350_init2.Designer.cs deleted file mode 100644 index 510860bd0f932b2e040891395a497e60573d3084..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20160827045350_init2.Designer.cs +++ /dev/null @@ -1,1326 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20160827045350_init2")] - partial class init2 - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.ContentType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Type"); - - b.HasKey("Id"); - - b.ToTable("ContentTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl"); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<bool>("IsOnlyVisibleToMe"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("ShortDescription"); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired(); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionVersionId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionVersionId"); - - b.ToTable("CustomTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MainSolutionVersionid"); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int>("NormalTestPoints"); - - b.Property<string>("Note"); - - b.Property<int>("SolutionVersionId"); - - b.Property<int>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("SolutionVersionId") - .IsRequired(); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionExerciseReleaseId") - .IsRequired(); - - b.Property<int?>("SolutionPLangId") - .IsRequired(); - - b.Property<int?>("SolutionUserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionVersions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionVersionId"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Language"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanExportExerciseResults"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.LdapUser", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("LdapUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme"); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeGroups"); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxSolutionVersionsPerUser"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("LdapUserId"); - - b.Property<string>("Password"); - - b.Property<string>("StudentNumber"); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired(); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("LdapUserId") - .IsUnique(); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany() - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution") - .WithMany("SolutionVersions") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("TestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany("TagWithMetaDatas") - .HasForeignKey("TagId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.LdapUser", "LdapUser") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.User", "LdapUserId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20160827045350_init2.cs b/src/ClientServer/Migrations/20160827045350_init2.cs deleted file mode 100644 index 6628773fdc19dee61c12442595c3d9d699789fdf..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20160827045350_init2.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class init2 : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn<bool>( - name: "UseWrapping", - table: "CodeEditorSettings", - nullable: false, - defaultValue: false); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "UseWrapping", - table: "CodeEditorSettings"); - } - } -} diff --git a/src/ClientServer/Migrations/20160831154002_userSettingsTheme.Designer.cs b/src/ClientServer/Migrations/20160831154002_userSettingsTheme.Designer.cs deleted file mode 100644 index f736968c582d6aae015607d371add639ef9da10e..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20160831154002_userSettingsTheme.Designer.cs +++ /dev/null @@ -1,1328 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20160831154002_userSettingsTheme")] - partial class userSettingsTheme - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.ContentType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Type"); - - b.HasKey("Id"); - - b.ToTable("ContentTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl"); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<bool>("IsOnlyVisibleToMe"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("ShortDescription"); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired(); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionVersionId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionVersionId"); - - b.ToTable("CustomTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MainSolutionVersionid"); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int>("NormalTestPoints"); - - b.Property<string>("Note"); - - b.Property<int>("SolutionVersionId"); - - b.Property<int>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("SolutionVersionId") - .IsRequired(); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionExerciseReleaseId") - .IsRequired(); - - b.Property<int?>("SolutionPLangId") - .IsRequired(); - - b.Property<int?>("SolutionUserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionVersions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionVersionId"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Language"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanExportExerciseResults"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.LdapUser", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("LdapUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme"); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeGroups"); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxSolutionVersionsPerUser"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("LdapUserId"); - - b.Property<string>("Password"); - - b.Property<string>("StudentNumber"); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired(); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("LdapUserId") - .IsUnique(); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany() - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution") - .WithMany("SolutionVersions") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("TestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany("TagWithMetaDatas") - .HasForeignKey("TagId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.LdapUser", "LdapUser") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.User", "LdapUserId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20160831154002_userSettingsTheme.cs b/src/ClientServer/Migrations/20160831154002_userSettingsTheme.cs deleted file mode 100644 index 435ea4da771ad38fd5ef80010ebf3dc31955a7b2..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20160831154002_userSettingsTheme.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class userSettingsTheme : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn<string>( - name: "Theme", - table: "UserSettingses", - nullable: true); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "Theme", - table: "UserSettingses"); - } - } -} diff --git a/src/ClientServer/Migrations/20160903141707_init4.Designer.cs b/src/ClientServer/Migrations/20160903141707_init4.Designer.cs deleted file mode 100644 index c2eebf8b467f32d0f0d56926a7c6b87e8e42fb86..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20160903141707_init4.Designer.cs +++ /dev/null @@ -1,1335 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20160903141707_init4")] - partial class init4 - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.ContentType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Type"); - - b.HasKey("Id"); - - b.ToTable("ContentTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl"); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<bool>("IsOnlyVisibleToMe"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("ShortDescription"); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired(); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionVersionId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionVersionId"); - - b.ToTable("CustomTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MainSolutionVersionid"); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int>("NormalTestPoints"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionVersionId"); - - b.Property<int>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId") - .IsUnique(); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("SolutionVersionId") - .IsRequired(); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionExerciseReleaseId") - .IsRequired(); - - b.Property<int?>("SolutionPLangId") - .IsRequired(); - - b.Property<int?>("SolutionUserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionVersions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionVersionId"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Language"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanExportExerciseResults"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.LdapUser", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("LdapUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme"); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeGroups"); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxSolutionVersionsPerUser"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("LdapUserId"); - - b.Property<string>("Password"); - - b.Property<string>("StudentNumber"); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired(); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("LdapUserId") - .IsUnique(); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution") - .WithMany("SolutionVersions") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("TestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany("TagWithMetaDatas") - .HasForeignKey("TagId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.LdapUser", "LdapUser") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.User", "LdapUserId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20160903141707_init4.cs b/src/ClientServer/Migrations/20160903141707_init4.cs deleted file mode 100644 index a5dbf2e57e4297d8753de05aa94fbbe9e69d87f0..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20160903141707_init4.cs +++ /dev/null @@ -1,98 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class init4 : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "FK_SolutionAssessment_SolutionVersions_SolutionVersionId", - table: "SolutionAssessment"); - - migrationBuilder.DropIndex( - name: "IX_SolutionAssessment_SolutionVersionId", - table: "SolutionAssessment"); - - migrationBuilder.AddColumn<bool>( - name: "HadAutomaticAssessmentErrors", - table: "ExerciseReleases", - nullable: false, - defaultValue: false); - - migrationBuilder.AddColumn<bool>( - name: "HasAutomaticAssessmentFinished", - table: "ExerciseReleases", - nullable: false, - defaultValue: false); - - migrationBuilder.AddColumn<bool>( - name: "HasAutomaticAssessmentStarted", - table: "ExerciseReleases", - nullable: false, - defaultValue: false); - - migrationBuilder.AlterColumn<int>( - name: "SolutionVersionId", - table: "SolutionAssessment", - nullable: true); - - migrationBuilder.CreateIndex( - name: "IX_SolutionAssessment_SolutionVersionId", - table: "SolutionAssessment", - column: "SolutionVersionId", - unique: true); - - migrationBuilder.AddForeignKey( - name: "FK_SolutionAssessment_SolutionVersions_SolutionVersionId", - table: "SolutionAssessment", - column: "SolutionVersionId", - principalTable: "SolutionVersions", - principalColumn: "Id", - onDelete: ReferentialAction.SetNull); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "FK_SolutionAssessment_SolutionVersions_SolutionVersionId", - table: "SolutionAssessment"); - - migrationBuilder.DropIndex( - name: "IX_SolutionAssessment_SolutionVersionId", - table: "SolutionAssessment"); - - migrationBuilder.DropColumn( - name: "HadAutomaticAssessmentErrors", - table: "ExerciseReleases"); - - migrationBuilder.DropColumn( - name: "HasAutomaticAssessmentFinished", - table: "ExerciseReleases"); - - migrationBuilder.DropColumn( - name: "HasAutomaticAssessmentStarted", - table: "ExerciseReleases"); - - migrationBuilder.AlterColumn<int>( - name: "SolutionVersionId", - table: "SolutionAssessment", - nullable: false); - - migrationBuilder.CreateIndex( - name: "IX_SolutionAssessment_SolutionVersionId", - table: "SolutionAssessment", - column: "SolutionVersionId"); - - migrationBuilder.AddForeignKey( - name: "FK_SolutionAssessment_SolutionVersions_SolutionVersionId", - table: "SolutionAssessment", - column: "SolutionVersionId", - principalTable: "SolutionVersions", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - } - } -} diff --git a/src/ClientServer/Migrations/20160906195429_init5.Designer.cs b/src/ClientServer/Migrations/20160906195429_init5.Designer.cs deleted file mode 100644 index 780b52012245851559a4dd6b54af9ad92f8d1830..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20160906195429_init5.Designer.cs +++ /dev/null @@ -1,1331 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20160906195429_init5")] - partial class init5 - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.ContentType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Type"); - - b.HasKey("Id"); - - b.ToTable("ContentTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl"); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<bool>("IsOnlyVisibleToMe"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("ShortDescription"); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired(); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionVersionId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionVersionId"); - - b.ToTable("CustomTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MainSolutionVersionid"); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int>("NormalTestPoints"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionVersionId"); - - b.Property<int>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId") - .IsUnique(); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("SolutionVersionId") - .IsRequired(); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionExerciseReleaseId") - .IsRequired(); - - b.Property<int?>("SolutionPLangId") - .IsRequired(); - - b.Property<int?>("SolutionUserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionVersions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionVersionId"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Language"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.LdapUser", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("LdapUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme"); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeGroups"); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxSolutionVersionsPerUser"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("LdapUserId"); - - b.Property<string>("Password"); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired(); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("LdapUserId") - .IsUnique(); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution") - .WithMany("SolutionVersions") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("TestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany("TagWithMetaDatas") - .HasForeignKey("TagId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.LdapUser", "LdapUser") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.User", "LdapUserId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20160906195429_init5.cs b/src/ClientServer/Migrations/20160906195429_init5.cs deleted file mode 100644 index 61c878e3a8b24a99eb793f057a3c6fe7cda01971..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20160906195429_init5.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class init5 : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "StudentNumber", - table: "Users"); - - migrationBuilder.DropColumn( - name: "CanExportExerciseResults", - table: "GroupRolePermissions"); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn<string>( - name: "StudentNumber", - table: "Users", - nullable: true); - - migrationBuilder.AddColumn<bool>( - name: "CanExportExerciseResults", - table: "GroupRolePermissions", - nullable: false, - defaultValue: false); - } - } -} diff --git a/src/ClientServer/Migrations/20160921124646_final1.Designer.cs b/src/ClientServer/Migrations/20160921124646_final1.Designer.cs deleted file mode 100644 index 77c1452f6b3d039357af8bc94df4768782dad437..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20160921124646_final1.Designer.cs +++ /dev/null @@ -1,1358 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20160921124646_final1")] - partial class final1 - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.ContentType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Type"); - - b.HasKey("Id"); - - b.ToTable("ContentTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl"); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<bool>("IsOnlyVisibleToMe"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("ShortDescription"); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired(); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionVersionId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionVersionId"); - - b.ToTable("CustomTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MainSolutionVersionid"); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int>("NormalTestPoints"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionVersionId"); - - b.Property<int>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId") - .IsUnique(); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("SolutionVersionId") - .IsRequired(); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionExerciseReleaseId") - .IsRequired(); - - b.Property<int?>("SolutionPLangId") - .IsRequired(); - - b.Property<int?>("SolutionUserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionVersions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionVersionId"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .IsRequired(); - - b.Property<string>("HtmlColor"); - - b.Property<string>("HtmlIcon"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasAlternateKey("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Language"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token"); - - b.Property<int?>("UserId"); - - b.HasKey("ExternalId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme"); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeGroups"); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxSolutionVersionsPerUser"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password"); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired(); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution") - .WithMany("SolutionVersions") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("TestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany("TagWithMetaDatas") - .HasForeignKey("TagId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20160921124646_final1.cs b/src/ClientServer/Migrations/20160921124646_final1.cs deleted file mode 100644 index 2eb749b5185c5c673e03f028e4b36885f4230b59..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20160921124646_final1.cs +++ /dev/null @@ -1,165 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class final1 : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "FK_Users_LdapUsers_LdapUserId", - table: "Users"); - - migrationBuilder.DropIndex( - name: "IX_Users_LdapUserId", - table: "Users"); - - migrationBuilder.DropColumn( - name: "LdapUserId", - table: "Users"); - - migrationBuilder.DropTable( - name: "LdapUsers"); - - migrationBuilder.CreateTable( - name: "ExternalUsers", - columns: table => new - { - ExternalId = table.Column<int>(nullable: false) - .Annotation("Npgsql:ValueGeneratedOnAdd", true), - CreatedAt = table.Column<DateTime>(nullable: false), - Email = table.Column<string>(nullable: true), - FirstName = table.Column<string>(nullable: true), - LastName = table.Column<string>(nullable: true), - LastUpdatedAt = table.Column<DateTime>(nullable: false), - NeedToRefreshData = table.Column<bool>(nullable: false), - Token = table.Column<string>(nullable: true), - UserId = table.Column<int>(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_ExternalUsers", x => x.ExternalId); - table.ForeignKey( - name: "FK_ExternalUsers_Users_UserId", - column: x => x.UserId, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.AddColumn<bool>( - name: "CanChangeUserData", - table: "SystemRolePermissions", - nullable: false, - defaultValue: false); - - migrationBuilder.AddColumn<string>( - name: "HtmlColor", - table: "Tags", - nullable: true); - - migrationBuilder.AddColumn<string>( - name: "HtmlIcon", - table: "Tags", - nullable: true); - - migrationBuilder.AddColumn<bool>( - name: "RunAlsoNormalTests", - table: "ExerciseReleases", - nullable: false, - defaultValue: false); - - migrationBuilder.AddColumn<bool>( - name: "ShouldAutomaticAssessSubmissions", - table: "ExerciseReleases", - nullable: false, - defaultValue: false); - - migrationBuilder.AlterColumn<string>( - name: "DisplayName", - table: "Tags", - nullable: false); - - migrationBuilder.AddUniqueConstraint( - name: "Unique_Tag", - table: "Tags", - column: "DisplayName"); - - migrationBuilder.CreateIndex( - name: "IX_ExternalUsers_UserId", - table: "ExternalUsers", - column: "UserId", - unique: true); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropUniqueConstraint( - name: "Unique_Tag", - table: "Tags"); - - migrationBuilder.DropColumn( - name: "CanChangeUserData", - table: "SystemRolePermissions"); - - migrationBuilder.DropColumn( - name: "HtmlColor", - table: "Tags"); - - migrationBuilder.DropColumn( - name: "HtmlIcon", - table: "Tags"); - - migrationBuilder.DropColumn( - name: "RunAlsoNormalTests", - table: "ExerciseReleases"); - - migrationBuilder.DropColumn( - name: "ShouldAutomaticAssessSubmissions", - table: "ExerciseReleases"); - - migrationBuilder.DropTable( - name: "ExternalUsers"); - - migrationBuilder.CreateTable( - name: "LdapUsers", - columns: table => new - { - Id = table.Column<int>(nullable: false) - .Annotation("Npgsql:ValueGeneratedOnAdd", true), - CreatedAt = table.Column<DateTime>(nullable: false), - LastUpdatedAt = table.Column<DateTime>(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_LdapUsers", x => x.Id); - }); - - migrationBuilder.AddColumn<int>( - name: "LdapUserId", - table: "Users", - nullable: true); - - migrationBuilder.CreateIndex( - name: "IX_Users_LdapUserId", - table: "Users", - column: "LdapUserId", - unique: true); - - migrationBuilder.AlterColumn<string>( - name: "DisplayName", - table: "Tags", - nullable: true); - - migrationBuilder.AddForeignKey( - name: "FK_Users_LdapUsers_LdapUserId", - table: "Users", - column: "LdapUserId", - principalTable: "LdapUsers", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - } - } -} diff --git a/src/ClientServer/Migrations/20160921130105_final2.Designer.cs b/src/ClientServer/Migrations/20160921130105_final2.Designer.cs deleted file mode 100644 index 014db0dc98e74e6c5b7593ec50f8e8fae7a1c80e..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20160921130105_final2.Designer.cs +++ /dev/null @@ -1,1358 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20160921130105_final2")] - partial class final2 - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.ContentType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Type"); - - b.HasKey("Id"); - - b.ToTable("ContentTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl"); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<bool>("IsOnlyVisibleToMe"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("ShortDescription"); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired(); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionVersionId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionVersionId"); - - b.ToTable("CustomTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MainSolutionVersionid"); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int>("NormalTestPoints"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionVersionId"); - - b.Property<int>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId") - .IsUnique(); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("SolutionVersionId") - .IsRequired(); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionExerciseReleaseId") - .IsRequired(); - - b.Property<int?>("SolutionPLangId") - .IsRequired(); - - b.Property<int?>("SolutionUserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionVersions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionVersionId"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .IsRequired(); - - b.Property<string>("HtmlColor"); - - b.Property<string>("HtmlIcon"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasAlternateKey("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Language"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token"); - - b.Property<int?>("UserId"); - - b.HasKey("ExternalId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme"); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeGroups"); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxSolutionVersionsPerUser"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password"); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired(); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionVersions") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("TestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany("TagWithMetaDatas") - .HasForeignKey("TagId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20160921130105_final2.cs b/src/ClientServer/Migrations/20160921130105_final2.cs deleted file mode 100644 index 70817d2f5b6ca6881b7a57c78c8bf413fe75ac0a..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20160921130105_final2.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - - public partial class final2 : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - //added SolutionVersion.Solution back property... - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - - } - } -} diff --git a/src/ClientServer/Migrations/20160921155214_final3.Designer.cs b/src/ClientServer/Migrations/20160921155214_final3.Designer.cs deleted file mode 100644 index 246c6dbdb372b84ec03770dacc0d2707261a9644..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20160921155214_final3.Designer.cs +++ /dev/null @@ -1,1358 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20160921155214_final3")] - partial class final3 - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.ContentType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Type"); - - b.HasKey("Id"); - - b.ToTable("ContentTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl"); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<bool>("IsOnlyVisibleToMe"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("ShortDescription"); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired(); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionVersionId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionVersionId"); - - b.ToTable("CustomTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MainSolutionVersionid"); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int>("NormalTestPoints"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionVersionId"); - - b.Property<int>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId") - .IsUnique(); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("SolutionVersionId") - .IsRequired(); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionExerciseReleaseId") - .IsRequired(); - - b.Property<int?>("SolutionPLangId") - .IsRequired(); - - b.Property<int?>("SolutionUserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionVersions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionVersionId"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .IsRequired(); - - b.Property<string>("HtmlColor"); - - b.Property<string>("HtmlIcon"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasAlternateKey("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Language"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token"); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme"); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeGroups"); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxSolutionVersionsPerUser"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password"); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired(); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionVersions") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("TestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany("TagWithMetaDatas") - .HasForeignKey("TagId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20160921155214_final3.cs b/src/ClientServer/Migrations/20160921155214_final3.cs deleted file mode 100644 index d2f9564993b23dee3aed38fe2898cb9def6fc74d..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20160921155214_final3.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class final3 : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AlterColumn<int>( - name: "UserId", - table: "ExternalUsers", - nullable: false); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.AlterColumn<int>( - name: "UserId", - table: "ExternalUsers", - nullable: true); - } - } -} diff --git a/src/ClientServer/Migrations/20160923095756_final4.Designer.cs b/src/ClientServer/Migrations/20160923095756_final4.Designer.cs deleted file mode 100644 index ffa5752a05a2f414acc6db5666d55819e7833470..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20160923095756_final4.Designer.cs +++ /dev/null @@ -1,1362 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20160923095756_final4")] - partial class final4 - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.ContentType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Type"); - - b.HasKey("Id"); - - b.ToTable("ContentTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl"); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<bool>("IsOnlyVisibleToMe"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("ShortDescription"); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired(); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionVersionId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionVersionId"); - - b.ToTable("CustomTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MainSolutionVersionid"); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int>("NormalTestPoints"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionVersionId"); - - b.Property<int>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId") - .IsUnique(); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("SolutionVersionId") - .IsRequired(); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionExerciseReleaseId") - .IsRequired(); - - b.Property<int?>("SolutionPLangId") - .IsRequired(); - - b.Property<int?>("SolutionUserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionVersions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionVersionId"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .IsRequired(); - - b.Property<string>("HtmlColor"); - - b.Property<string>("HtmlIcon"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasAlternateKey("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Language"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired(); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme"); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeGroups"); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxSolutionVersionsPerUser"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password"); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired(); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionVersions") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("TestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany("TagWithMetaDatas") - .HasForeignKey("TagId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20160923095756_final4.cs b/src/ClientServer/Migrations/20160923095756_final4.cs deleted file mode 100644 index 2279b2c2066408eaf00afdb9f19a2cc03506ad88..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20160923095756_final4.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class final4 : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AlterColumn<string>( - name: "Token", - table: "ExternalUsers", - nullable: false); - - migrationBuilder.AddUniqueConstraint( - name: "Unique_ExternalToken", - table: "ExternalUsers", - column: "Token"); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropUniqueConstraint( - name: "Unique_ExternalToken", - table: "ExternalUsers"); - - migrationBuilder.AlterColumn<string>( - name: "Token", - table: "ExternalUsers", - nullable: true); - } - } -} diff --git a/src/ClientServer/Migrations/20161001124636_tagPermission.Designer.cs b/src/ClientServer/Migrations/20161001124636_tagPermission.Designer.cs deleted file mode 100644 index 6f478532e5d1e8c2d3c99033ecb1945dc5ec0d1a..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20161001124636_tagPermission.Designer.cs +++ /dev/null @@ -1,1364 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20161001124636_tagPermission")] - partial class tagPermission - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.ContentType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Type"); - - b.HasKey("Id"); - - b.ToTable("ContentTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl"); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<bool>("IsOnlyVisibleToMe"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("ShortDescription"); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired(); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionVersionId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionVersionId"); - - b.ToTable("CustomTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MainSolutionVersionid"); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int>("NormalTestPoints"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionVersionId"); - - b.Property<int>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId") - .IsUnique(); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("SolutionVersionId") - .IsRequired(); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionExerciseReleaseId") - .IsRequired(); - - b.Property<int?>("SolutionPLangId") - .IsRequired(); - - b.Property<int?>("SolutionUserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionVersions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionVersionId"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .IsRequired(); - - b.Property<string>("HtmlColor"); - - b.Property<string>("HtmlIcon"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasAlternateKey("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Language"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired(); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme"); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeGroups"); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxSolutionVersionsPerUser"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password"); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired(); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionVersions") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("TestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany("TagWithMetaDatas") - .HasForeignKey("TagId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20161001124636_tagPermission.cs b/src/ClientServer/Migrations/20161001124636_tagPermission.cs deleted file mode 100644 index 47a7dfb23817bc9f95c279ce15fe50125f88a3eb..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20161001124636_tagPermission.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class tagPermission : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn<bool>( - name: "CanManageTags", - table: "SystemRolePermissions", - nullable: false, - defaultValue: false); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "CanManageTags", - table: "SystemRolePermissions"); - } - } -} diff --git a/src/ClientServer/Migrations/20161001140957_tagDisplayName2.Designer.cs b/src/ClientServer/Migrations/20161001140957_tagDisplayName2.Designer.cs deleted file mode 100644 index 6bc42092c633614c5d7a7b42504422615fb74212..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20161001140957_tagDisplayName2.Designer.cs +++ /dev/null @@ -1,1363 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20161001140957_tagDisplayName2")] - partial class tagDisplayName2 - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.ContentType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Type"); - - b.HasKey("Id"); - - b.ToTable("ContentTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl"); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<bool>("IsOnlyVisibleToMe"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("ShortDescription"); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired(); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionVersionId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionVersionId"); - - b.ToTable("CustomTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MainSolutionVersionid"); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int>("NormalTestPoints"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionVersionId"); - - b.Property<int>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId") - .IsUnique(); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("SolutionVersionId") - .IsRequired(); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionExerciseReleaseId") - .IsRequired(); - - b.Property<int?>("SolutionPLangId") - .IsRequired(); - - b.Property<int?>("SolutionUserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionVersions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionVersionId"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("HtmlColor"); - - b.Property<string>("HtmlIcon"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Language"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired(); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme"); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeGroups"); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxSolutionVersionsPerUser"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password"); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired(); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionVersions") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("TestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany("TagWithMetaDatas") - .HasForeignKey("TagId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20161001140957_tagDisplayName2.cs b/src/ClientServer/Migrations/20161001140957_tagDisplayName2.cs deleted file mode 100644 index 02bdb8631f718b0dca4c15185a3fbaf5c68ebc36..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20161001140957_tagDisplayName2.cs +++ /dev/null @@ -1,43 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class tagDisplayName2 : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropUniqueConstraint( - name: "Unique_Tag", - table: "Tags"); - - migrationBuilder.AlterColumn<string>( - name: "DisplayName", - table: "Tags", - nullable: true); - - migrationBuilder.CreateIndex( - name: "Unique_Tag", - table: "Tags", - column: "DisplayName"); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropIndex( - name: "Unique_Tag", - table: "Tags"); - - migrationBuilder.AlterColumn<string>( - name: "DisplayName", - table: "Tags", - nullable: false); - - migrationBuilder.AddUniqueConstraint( - name: "Unique_Tag", - table: "Tags", - column: "DisplayName"); - } - } -} diff --git a/src/ClientServer/Migrations/20161001142650_deleteTagCascade.Designer.cs b/src/ClientServer/Migrations/20161001142650_deleteTagCascade.Designer.cs deleted file mode 100644 index 9f6ba7791ad283a90dccb1b735d282a5106a0a64..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20161001142650_deleteTagCascade.Designer.cs +++ /dev/null @@ -1,1364 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20161001142650_deleteTagCascade")] - partial class deleteTagCascade - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.ContentType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Type"); - - b.HasKey("Id"); - - b.ToTable("ContentTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl"); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<bool>("IsOnlyVisibleToMe"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("ShortDescription"); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired(); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionVersionId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionVersionId"); - - b.ToTable("CustomTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MainSolutionVersionid"); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int>("NormalTestPoints"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionVersionId"); - - b.Property<int>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId") - .IsUnique(); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("SolutionVersionId") - .IsRequired(); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionExerciseReleaseId") - .IsRequired(); - - b.Property<int?>("SolutionPLangId") - .IsRequired(); - - b.Property<int?>("SolutionUserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionVersions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionVersionId"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("HtmlColor"); - - b.Property<string>("HtmlIcon"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Language"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired(); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme"); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeGroups"); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxSolutionVersionsPerUser"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password"); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired(); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionVersions") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("TestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany("TagWithMetaDatas") - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20161001142650_deleteTagCascade.cs b/src/ClientServer/Migrations/20161001142650_deleteTagCascade.cs deleted file mode 100644 index b95489f16539068ec1c6cdefd6c4dde60f5523aa..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20161001142650_deleteTagCascade.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class deleteTagCascade : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "FK_TagWithMetaDatas_Tags_TagId", - table: "TagWithMetaDatas"); - - migrationBuilder.AddForeignKey( - name: "FK_TagWithMetaDatas_Tags_TagId", - table: "TagWithMetaDatas", - column: "TagId", - principalTable: "Tags", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "FK_TagWithMetaDatas_Tags_TagId", - table: "TagWithMetaDatas"); - - migrationBuilder.AddForeignKey( - name: "FK_TagWithMetaDatas_Tags_TagId", - table: "TagWithMetaDatas", - column: "TagId", - principalTable: "Tags", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - } - } -} diff --git a/src/ClientServer/Migrations/20161220124855_ExerciseAddedNote.Designer.cs b/src/ClientServer/Migrations/20161220124855_ExerciseAddedNote.Designer.cs deleted file mode 100644 index c1562370fa54590346eb79cc604a47b7604c5ecd..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20161220124855_ExerciseAddedNote.Designer.cs +++ /dev/null @@ -1,1366 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20161220124855_ExerciseAddedNote")] - partial class ExerciseAddedNote - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.ContentType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Type"); - - b.HasKey("Id"); - - b.ToTable("ContentTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl"); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<bool>("IsOnlyVisibleToMe"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<string>("ShortDescription"); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired(); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionVersionId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionVersionId"); - - b.ToTable("CustomTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MainSolutionVersionid"); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int>("NormalTestPoints"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionVersionId"); - - b.Property<int>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId") - .IsUnique(); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("SolutionVersionId") - .IsRequired(); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionExerciseReleaseId") - .IsRequired(); - - b.Property<int?>("SolutionPLangId") - .IsRequired(); - - b.Property<int?>("SolutionUserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionVersions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionVersionId"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("HtmlColor"); - - b.Property<string>("HtmlIcon"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Language"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired(); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme"); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeGroups"); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxSolutionVersionsPerUser"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password"); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired(); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionVersions") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("TestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany("TagWithMetaDatas") - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20161220124855_ExerciseAddedNote.cs b/src/ClientServer/Migrations/20161220124855_ExerciseAddedNote.cs deleted file mode 100644 index d66bf78cb13915447d6956ae8dff2c2450869711..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20161220124855_ExerciseAddedNote.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class ExerciseAddedNote : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn<string>( - name: "Note", - table: "Exercises", - nullable: true); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "Note", - table: "Exercises"); - } - } -} diff --git a/src/ClientServer/Migrations/20170112222129_authTokens.Designer.cs b/src/ClientServer/Migrations/20170112222129_authTokens.Designer.cs deleted file mode 100644 index 231bf298fb058d1d428092ea905da47c6271cbe7..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20170112222129_authTokens.Designer.cs +++ /dev/null @@ -1,1396 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20170112222129_authTokens")] - partial class authTokens - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.ContentType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Type"); - - b.HasKey("Id"); - - b.ToTable("ContentTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl"); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<bool>("IsOnlyVisibleToMe"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<string>("ShortDescription"); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired(); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionVersionId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionVersionId"); - - b.ToTable("CustomTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MainSolutionVersionid"); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int>("NormalTestPoints"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionVersionId"); - - b.Property<int>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId") - .IsUnique(); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("SolutionVersionId") - .IsRequired(); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionExerciseReleaseId") - .IsRequired(); - - b.Property<int?>("SolutionPLangId") - .IsRequired(); - - b.Property<int?>("SolutionUserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionVersions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionVersionId"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("HtmlColor"); - - b.Property<string>("HtmlIcon"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Language"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret"); - - b.Property<string>("UserAuthToken"); - - b.HasKey("UserId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired(); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme"); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeGroups"); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxSolutionVersionsPerUser"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password"); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired(); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionVersions") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("TestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany("TagWithMetaDatas") - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20170112222129_authTokens.cs b/src/ClientServer/Migrations/20170112222129_authTokens.cs deleted file mode 100644 index e6e0725fad87bd12fee2032fe968f168a5701d90..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20170112222129_authTokens.cs +++ /dev/null @@ -1,46 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class authTokens : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "AuthTokens", - columns: table => new - { - UserId = table.Column<int>(nullable: false), - CreatedAt = table.Column<DateTime>(nullable: false), - ExpirationDateTime = table.Column<DateTime>(nullable: false), - LastUpdatedAt = table.Column<DateTime>(nullable: false), - RandomSecret = table.Column<string>(nullable: true), - UserAuthToken = table.Column<string>(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_AuthTokens", x => x.UserId); - table.ForeignKey( - name: "FK_AuthTokens_Users_UserId", - column: x => x.UserId, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateIndex( - name: "IX_AuthTokens_UserId", - table: "AuthTokens", - column: "UserId", - unique: true); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "AuthTokens"); - } - } -} diff --git a/src/ClientServer/Migrations/20170307190625_lang.Designer.cs b/src/ClientServer/Migrations/20170307190625_lang.Designer.cs deleted file mode 100644 index 5d11ad759fd4dcb1b3f474742490268095c18fa8..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20170307190625_lang.Designer.cs +++ /dev/null @@ -1,1398 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20170307190625_lang")] - partial class lang - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.ContentType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Type"); - - b.HasKey("Id"); - - b.ToTable("ContentTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl"); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<bool>("IsOnlyVisibleToMe"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<string>("ShortDescription"); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired(); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionVersionId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionVersionId"); - - b.ToTable("CustomTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MainSolutionVersionid"); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int>("NormalTestPoints"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionVersionId"); - - b.Property<int>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId") - .IsUnique(); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("SolutionVersionId") - .IsRequired(); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionExerciseReleaseId") - .IsRequired(); - - b.Property<int?>("SolutionPLangId") - .IsRequired(); - - b.Property<int?>("SolutionUserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionVersions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionVersionId"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("HtmlColor"); - - b.Property<string>("HtmlIcon"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut"); - - b.Property<string>("Language"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret"); - - b.Property<string>("UserAuthToken"); - - b.HasKey("UserId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired(); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme"); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeGroups"); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxSolutionVersionsPerUser"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password"); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired(); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionVersions") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("TestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany("TagWithMetaDatas") - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20170307190625_lang.cs b/src/ClientServer/Migrations/20170307190625_lang.cs deleted file mode 100644 index 275187a9b0923ec622b1ff0dd3f3169f648d1aa0..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20170307190625_lang.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class lang : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn<string>( - name: "LangShortcut", - table: "Langs", - nullable: true); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "LangShortcut", - table: "Langs"); - } - } -} diff --git a/src/ClientServer/Migrations/20171009190359_tagBackgroundColor.Designer.cs b/src/ClientServer/Migrations/20171009190359_tagBackgroundColor.Designer.cs deleted file mode 100755 index 653a853e42874998cda52cbe84e5c60b504e3265..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20171009190359_tagBackgroundColor.Designer.cs +++ /dev/null @@ -1,1400 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20171009190359_tagBackgroundColor")] - partial class tagBackgroundColor - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.ContentType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Type"); - - b.HasKey("Id"); - - b.ToTable("ContentTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl"); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<bool>("IsOnlyVisibleToMe"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<string>("ShortDescription"); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired(); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionVersionId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionVersionId"); - - b.ToTable("CustomTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MainSolutionVersionid"); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int>("NormalTestPoints"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionVersionId"); - - b.Property<int>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId") - .IsUnique(); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("SolutionVersionId") - .IsRequired(); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionExerciseReleaseId") - .IsRequired(); - - b.Property<int?>("SolutionPLangId") - .IsRequired(); - - b.Property<int?>("SolutionUserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionVersions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionVersionId"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("HtmlBackgroundColor"); - - b.Property<string>("HtmlColor"); - - b.Property<string>("HtmlIcon"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut"); - - b.Property<string>("Language"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret"); - - b.Property<string>("UserAuthToken"); - - b.HasKey("UserId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired(); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme"); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeGroups"); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxSolutionVersionsPerUser"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password"); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired(); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionVersions") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("TestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany("TagWithMetaDatas") - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20171009190359_tagBackgroundColor.cs b/src/ClientServer/Migrations/20171009190359_tagBackgroundColor.cs deleted file mode 100755 index acaa34906446b361b69b8d0a180fbb716beac375..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20171009190359_tagBackgroundColor.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class tagBackgroundColor : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn<string>( - name: "HtmlBackgroundColor", - table: "Tags", - nullable: true); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "HtmlBackgroundColor", - table: "Tags"); - } - } -} diff --git a/src/ClientServer/Migrations/20171009191709_tagDescription.Designer.cs b/src/ClientServer/Migrations/20171009191709_tagDescription.Designer.cs deleted file mode 100755 index 7be5ef637c8ff1ac7c6e0b427cc27b9b0724fa63..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20171009191709_tagDescription.Designer.cs +++ /dev/null @@ -1,1402 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20171009191709_tagDescription")] - partial class tagDescription - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.ContentType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Type"); - - b.HasKey("Id"); - - b.ToTable("ContentTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl"); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<bool>("IsOnlyVisibleToMe"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<string>("ShortDescription"); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired(); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionVersionId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionVersionId"); - - b.ToTable("CustomTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MainSolutionVersionid"); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int>("NormalTestPoints"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionVersionId"); - - b.Property<int>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId") - .IsUnique(); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("SolutionVersionId") - .IsRequired(); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionExerciseReleaseId") - .IsRequired(); - - b.Property<int?>("SolutionPLangId") - .IsRequired(); - - b.Property<int?>("SolutionUserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionVersions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionVersionId"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description"); - - b.Property<string>("DisplayName"); - - b.Property<string>("HtmlBackgroundColor"); - - b.Property<string>("HtmlColor"); - - b.Property<string>("HtmlIcon"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut"); - - b.Property<string>("Language"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret"); - - b.Property<string>("UserAuthToken"); - - b.HasKey("UserId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired(); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme"); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeGroups"); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxSolutionVersionsPerUser"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password"); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired(); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionVersions") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("TestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany("TagWithMetaDatas") - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20171009191709_tagDescription.cs b/src/ClientServer/Migrations/20171009191709_tagDescription.cs deleted file mode 100755 index 74ee3974dcbfda225749c6a0e2ebe01d7b794349..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20171009191709_tagDescription.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class tagDescription : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn<string>( - name: "Description", - table: "Tags", - nullable: true); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "Description", - table: "Tags"); - } - } -} diff --git a/src/ClientServer/Migrations/20171012120923_tutorFreedback.Designer.cs b/src/ClientServer/Migrations/20171012120923_tutorFreedback.Designer.cs deleted file mode 100644 index 5a2a67911cc145ed982e583d50bdc4297012ae67..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20171012120923_tutorFreedback.Designer.cs +++ /dev/null @@ -1,1404 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20171012120923_tutorFreedback")] - partial class tutorFreedback - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.ContentType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Type"); - - b.HasKey("Id"); - - b.ToTable("ContentTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl"); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<bool>("IsOnlyVisibleToMe"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<string>("ShortDescription"); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired(); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionVersionId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionVersionId"); - - b.ToTable("CustomTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MainSolutionVersionid"); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent"); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors"); - - b.Property<int?>("SolutionVersionId"); - - b.Property<int>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId") - .IsUnique(); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("SolutionVersionId") - .IsRequired(); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionExerciseReleaseId") - .IsRequired(); - - b.Property<int?>("SolutionPLangId") - .IsRequired(); - - b.Property<int?>("SolutionUserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionVersions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionVersionId"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description"); - - b.Property<string>("DisplayName"); - - b.Property<string>("HtmlBackgroundColor"); - - b.Property<string>("HtmlColor"); - - b.Property<string>("HtmlIcon"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut"); - - b.Property<string>("Language"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret"); - - b.Property<string>("UserAuthToken"); - - b.HasKey("UserId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired(); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme"); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeGroups"); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxSolutionVersionsPerUser"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password"); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired(); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionVersions") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("TestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany("TagWithMetaDatas") - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20171012120923_tutorFreedback.cs b/src/ClientServer/Migrations/20171012120923_tutorFreedback.cs deleted file mode 100644 index 010087b3dd4800e780498b4acfd259a0910129f8..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20171012120923_tutorFreedback.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class tutorFreedback : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.RenameColumn( - name: "Note", - table: "SolutionAssessment", - newName:"NoteForOtherTutors"); - - migrationBuilder.AddColumn<string>( - name: "FeedbackForStudent", - table: "SolutionAssessment", - nullable: true); - - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "FeedbackForStudent", - table: "SolutionAssessment"); - - migrationBuilder.RenameColumn( - name: "NoteForOtherTutors", - table: "SolutionAssessment", - newName: "Note"); - - } - } -} diff --git a/src/ClientServer/Migrations/20171015132006_enabledNullableAssessmentPoints.Designer.cs b/src/ClientServer/Migrations/20171015132006_enabledNullableAssessmentPoints.Designer.cs deleted file mode 100644 index b735cabc6df160bcba97c2e56d4d2e04fb67b08e..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20171015132006_enabledNullableAssessmentPoints.Designer.cs +++ /dev/null @@ -1,1404 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20171015132006_enabledNullableAssessmentPoints")] - partial class enabledNullableAssessmentPoints - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.ContentType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Type"); - - b.HasKey("Id"); - - b.ToTable("ContentTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl"); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<bool>("IsOnlyVisibleToMe"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<string>("ShortDescription"); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired(); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionVersionId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionVersionId"); - - b.ToTable("CustomTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MainSolutionVersionid"); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent"); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors"); - - b.Property<int?>("SolutionVersionId"); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId") - .IsUnique(); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("SolutionVersionId") - .IsRequired(); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionExerciseReleaseId") - .IsRequired(); - - b.Property<int?>("SolutionPLangId") - .IsRequired(); - - b.Property<int?>("SolutionUserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionVersions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionVersionId"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description"); - - b.Property<string>("DisplayName"); - - b.Property<string>("HtmlBackgroundColor"); - - b.Property<string>("HtmlColor"); - - b.Property<string>("HtmlIcon"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut"); - - b.Property<string>("Language"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret"); - - b.Property<string>("UserAuthToken"); - - b.HasKey("UserId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired(); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme"); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeGroups"); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxSolutionVersionsPerUser"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password"); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired(); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionVersions") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("TestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany("TagWithMetaDatas") - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20171015132006_enabledNullableAssessmentPoints.cs b/src/ClientServer/Migrations/20171015132006_enabledNullableAssessmentPoints.cs deleted file mode 100644 index 5d982fbac5a5cc26737d2bf970e00a0466071b7e..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20171015132006_enabledNullableAssessmentPoints.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class enabledNullableAssessmentPoints : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AlterColumn<int>( - name: "SubmitTestPoints", - table: "SolutionAssessment", - nullable: true); - - migrationBuilder.AlterColumn<int>( - name: "NormalTestPoints", - table: "SolutionAssessment", - nullable: true); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.AlterColumn<int>( - name: "SubmitTestPoints", - table: "SolutionAssessment", - nullable: false); - - migrationBuilder.AlterColumn<int>( - name: "NormalTestPoints", - table: "SolutionAssessment", - nullable: false); - } - } -} diff --git a/src/ClientServer/Migrations/20171025160923_uniqueAuthToken.Designer.cs b/src/ClientServer/Migrations/20171025160923_uniqueAuthToken.Designer.cs deleted file mode 100755 index c7da8f51bf5bc9708b0dbe48cfc43f0db61d4566..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20171025160923_uniqueAuthToken.Designer.cs +++ /dev/null @@ -1,1407 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20171025160923_uniqueAuthToken")] - partial class uniqueAuthToken - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.ContentType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Type"); - - b.HasKey("Id"); - - b.ToTable("ContentTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl"); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<bool>("IsOnlyVisibleToMe"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<string>("ShortDescription"); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired(); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionVersionId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionVersionId"); - - b.ToTable("CustomTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MainSolutionVersionid"); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent"); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors"); - - b.Property<int?>("SolutionVersionId"); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId") - .IsUnique(); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("SolutionVersionId") - .IsRequired(); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionExerciseReleaseId") - .IsRequired(); - - b.Property<int?>("SolutionPLangId") - .IsRequired(); - - b.Property<int?>("SolutionUserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionVersions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionVersionId"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description"); - - b.Property<string>("DisplayName"); - - b.Property<string>("HtmlBackgroundColor"); - - b.Property<string>("HtmlColor"); - - b.Property<string>("HtmlIcon"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut"); - - b.Property<string>("Language"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret"); - - b.Property<string>("UserAuthToken"); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired(); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme"); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeGroups"); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxSolutionVersionsPerUser"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password"); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired(); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionVersions") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("TestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany("TagWithMetaDatas") - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20171025160923_uniqueAuthToken.cs b/src/ClientServer/Migrations/20171025160923_uniqueAuthToken.cs deleted file mode 100755 index e30ae1012f2a8850e22344282f982c11a6f8f9f8..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20171025160923_uniqueAuthToken.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class uniqueAuthToken : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateIndex( - name: "IX_AuthTokens_UserAuthToken", - table: "AuthTokens", - column: "UserAuthToken", - unique: true); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropIndex( - name: "IX_AuthTokens_UserAuthToken", - table: "AuthTokens"); - } - } -} diff --git a/src/ClientServer/Migrations/20171106184650_participationShouldNotCount.Designer.cs b/src/ClientServer/Migrations/20171106184650_participationShouldNotCount.Designer.cs deleted file mode 100755 index 86ecc3c5d79a8ead2221189d60c6fad91a9e2cc4..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20171106184650_participationShouldNotCount.Designer.cs +++ /dev/null @@ -1,1410 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20171106184650_participationShouldNotCount")] - partial class participationShouldNotCount - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.ContentType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Type"); - - b.HasKey("Id"); - - b.ToTable("ContentTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl"); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<bool>("IsOnlyVisibleToMe"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<string>("ShortDescription"); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired(); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionVersionId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionVersionId"); - - b.ToTable("CustomTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MainSolutionVersionid"); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent"); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors"); - - b.Property<int?>("SolutionVersionId"); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId") - .IsUnique(); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("SolutionVersionId") - .IsRequired(); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionExerciseReleaseId") - .IsRequired(); - - b.Property<int?>("SolutionPLangId") - .IsRequired(); - - b.Property<int?>("SolutionUserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionVersions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionVersionId"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description"); - - b.Property<string>("DisplayName"); - - b.Property<string>("HtmlBackgroundColor"); - - b.Property<string>("HtmlColor"); - - b.Property<string>("HtmlIcon"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut"); - - b.Property<string>("Language"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret"); - - b.Property<string>("UserAuthToken"); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired(); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme"); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeGroups"); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxSolutionVersionsPerUser"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password"); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired(); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionVersions") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("TestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany("TagWithMetaDatas") - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20171106184650_participationShouldNotCount.cs b/src/ClientServer/Migrations/20171106184650_participationShouldNotCount.cs deleted file mode 100755 index da909c14bd8e5d656c01b5d53ea1938758222fcb..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20171106184650_participationShouldNotCount.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class participationShouldNotCount : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn<bool>( - name: "ShouldNotCount", - table: "ExerciseReleaseWithUserAsParticipations", - nullable: false, - defaultValue: false); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "ShouldNotCount", - table: "ExerciseReleaseWithUserAsParticipations"); - } - } -} diff --git a/src/ClientServer/Migrations/20171109144627_customProjects.Designer.cs b/src/ClientServer/Migrations/20171109144627_customProjects.Designer.cs deleted file mode 100755 index 8d11c6d5f790ec29a0b91c6e2e3117e7e0b82a40..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20171109144627_customProjects.Designer.cs +++ /dev/null @@ -1,1685 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20171109144627_customProjects")] - partial class customProjects - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.ContentType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Type"); - - b.HasKey("Id"); - - b.ToTable("ContentTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl"); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName"); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<bool>("IsOnlyVisibleToMe"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<string>("ShortDescription"); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired(); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionVersionId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionVersionId"); - - b.ToTable("CustomTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MainSolutionVersionid"); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent"); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors"); - - b.Property<int?>("SolutionVersionId"); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId") - .IsUnique(); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("SolutionVersionId") - .IsRequired(); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionExerciseReleaseId") - .IsRequired(); - - b.Property<int?>("SolutionPLangId") - .IsRequired(); - - b.Property<int?>("SolutionUserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionVersions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionVersionId"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description"); - - b.Property<string>("DisplayName"); - - b.Property<string>("HtmlBackgroundColor"); - - b.Property<string>("HtmlColor"); - - b.Property<string>("HtmlIcon"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut"); - - b.Property<string>("Language"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret"); - - b.Property<string>("UserAuthToken"); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired(); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme"); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeGroups"); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxSolutionVersionsPerUser"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password"); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired(); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionVersions") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("TestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20171109144627_customProjects.cs b/src/ClientServer/Migrations/20171109144627_customProjects.cs deleted file mode 100755 index 7c6f2d24b7821f32f8f4b84088754ae389511f87..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20171109144627_customProjects.cs +++ /dev/null @@ -1,347 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class customProjects : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "CustomProjects", - columns: table => new - { - Id = table.Column<int>(nullable: false) - .Annotation("Npgsql:ValueGeneratedOnAdd", true), - CreatedAt = table.Column<DateTime>(nullable: false), - DisplayName = table.Column<string>(nullable: true), - LastEditorPLangId = table.Column<int>(nullable: false), - LastUpdatedAt = table.Column<DateTime>(nullable: false), - UserId = table.Column<int>(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_CustomProjects", x => x.Id); - table.ForeignKey( - name: "FK_CustomProjects_Users_UserId", - column: x => x.UserId, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "CustomProjectDescriptions", - columns: table => new - { - Id = table.Column<int>(nullable: false) - .Annotation("Npgsql:ValueGeneratedOnAdd", true), - Content = table.Column<string>(nullable: true), - CreatedAt = table.Column<DateTime>(nullable: false), - CustomProjectId = table.Column<int>(nullable: false), - LastUpdatedAt = table.Column<DateTime>(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_CustomProjectDescriptions", x => x.Id); - table.ForeignKey( - name: "FK_CustomProjectDescriptions_CustomProjects_CustomProjectId", - column: x => x.CustomProjectId, - principalTable: "CustomProjects", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "CustomProjectTests", - columns: table => new - { - Id = table.Column<int>(nullable: false) - .Annotation("Npgsql:ValueGeneratedOnAdd", true), - Content = table.Column<string>(nullable: true), - CreatedAt = table.Column<DateTime>(nullable: false), - CustomProjectId = table.Column<int>(nullable: false), - DisplayIndex = table.Column<int>(nullable: false), - DisplayName = table.Column<string>(nullable: true), - LastUpdatedAt = table.Column<DateTime>(nullable: false), - TestSettingsId = table.Column<int>(nullable: false), - TestTypeId = table.Column<int>(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_CustomProjectTests", x => x.Id); - table.ForeignKey( - name: "FK_CustomProjectTests_CustomProjects_CustomProjectId", - column: x => x.CustomProjectId, - principalTable: "CustomProjects", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_CustomProjectTests_TestCaseSettingses_TestSettingsId", - column: x => x.TestSettingsId, - principalTable: "TestCaseSettingses", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_CustomProjectTests_TestTypes_TestTypeId", - column: x => x.TestTypeId, - principalTable: "TestTypes", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "CustomProjectTestAssets", - columns: table => new - { - Id = table.Column<int>(nullable: false) - .Annotation("Npgsql:ValueGeneratedOnAdd", true), - Content = table.Column<byte[]>(nullable: true), - CreatedAt = table.Column<DateTime>(nullable: false), - CustomProjectTestId = table.Column<int>(nullable: false), - DisplayName = table.Column<string>(nullable: true), - LastUpdatedAt = table.Column<DateTime>(nullable: false), - MimeType = table.Column<string>(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_CustomProjectTestAssets", x => x.Id); - table.ForeignKey( - name: "FK_CustomProjectTestAssets_CustomProjectTests_CustomProjectTestId", - column: x => x.CustomProjectTestId, - principalTable: "CustomProjectTests", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "CustomProjectSolutions", - columns: table => new - { - Id = table.Column<int>(nullable: false) - .Annotation("Npgsql:ValueGeneratedOnAdd", true), - CreatedAt = table.Column<DateTime>(nullable: false), - CustomProjectId = table.Column<int>(nullable: false), - LastUpdatedAt = table.Column<DateTime>(nullable: false), - MainFileId = table.Column<int>(nullable: true), - PLangId = table.Column<int>(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_CustomProjectSolutions", x => x.Id); - table.ForeignKey( - name: "FK_CustomProjectSolutions_CustomProjects_CustomProjectId", - column: x => x.CustomProjectId, - principalTable: "CustomProjects", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_CustomProjectSolutions_PLangs_PLangId", - column: x => x.PLangId, - principalTable: "PLangs", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "CustomProjectSolutionFiles", - columns: table => new - { - Id = table.Column<int>(nullable: false) - .Annotation("Npgsql:ValueGeneratedOnAdd", true), - Content = table.Column<string>(nullable: true), - CreatedAt = table.Column<DateTime>(nullable: false), - CustomProjectSolutionId = table.Column<int>(nullable: false), - DisplayIndex = table.Column<int>(nullable: false), - FileNameWithExtension = table.Column<string>(nullable: true), - IsDisplayed = table.Column<bool>(nullable: false), - LastUpdatedAt = table.Column<DateTime>(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_CustomProjectSolutionFiles", x => x.Id); - table.ForeignKey( - name: "FK_CustomProjectSolutionFiles_CustomProjectSolutions_CustomProjectSolutionId", - column: x => x.CustomProjectSolutionId, - principalTable: "CustomProjectSolutions", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "CustomProjectTestWithSolutionAsTestResults", - columns: table => new - { - CustomProjectSolutionId = table.Column<int>(nullable: false), - CustomProjectTestId = table.Column<int>(nullable: false), - CreatedAt = table.Column<DateTime>(nullable: false), - HasCompiled = table.Column<bool>(nullable: true), - LastUpdatedAt = table.Column<DateTime>(nullable: false), - Passed = table.Column<bool>(nullable: true), - ProgramExitCode = table.Column<int>(nullable: true), - Protocol = table.Column<string>(nullable: true), - TestResultCode = table.Column<int>(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_CustomProjectTestWithSolutionAsTestResults", x => new { x.CustomProjectSolutionId, x.CustomProjectTestId }); - table.ForeignKey( - name: "FK_CustomProjectTestWithSolutionAsTestResults_CustomProjectSolutions_CustomProjectSolutionId", - column: x => x.CustomProjectSolutionId, - principalTable: "CustomProjectSolutions", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_CustomProjectTestWithSolutionAsTestResults_CustomProjectTests_CustomProjectTestId", - column: x => x.CustomProjectTestId, - principalTable: "CustomProjectTests", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.AddColumn<int>( - name: "MaxCustomProjectsPerUser", - table: "SystemSettings", - nullable: false, - defaultValue: 10); - - migrationBuilder.AddColumn<int>( - name: "CustomProjectDescriptionId", - table: "Assets", - nullable: true); - - migrationBuilder.CreateIndex( - name: "IX_Assets_CustomProjectDescriptionId", - table: "Assets", - column: "CustomProjectDescriptionId"); - - migrationBuilder.CreateIndex( - name: "IX_CustomProjects_UserId", - table: "CustomProjects", - column: "UserId"); - - migrationBuilder.CreateIndex( - name: "IX_CustomProjectDescriptions_CustomProjectId", - table: "CustomProjectDescriptions", - column: "CustomProjectId", - unique: true); - - migrationBuilder.CreateIndex( - name: "IX_CustomProjectSolutions_CustomProjectId", - table: "CustomProjectSolutions", - column: "CustomProjectId"); - - migrationBuilder.CreateIndex( - name: "IX_CustomProjectSolutions_MainFileId", - table: "CustomProjectSolutions", - column: "MainFileId", - unique: true); - - migrationBuilder.CreateIndex( - name: "IX_CustomProjectSolutions_PLangId", - table: "CustomProjectSolutions", - column: "PLangId"); - - migrationBuilder.CreateIndex( - name: "IX_CustomProjectSolutionFiles_CustomProjectSolutionId", - table: "CustomProjectSolutionFiles", - column: "CustomProjectSolutionId"); - - migrationBuilder.CreateIndex( - name: "IX_CustomProjectTests_CustomProjectId", - table: "CustomProjectTests", - column: "CustomProjectId"); - - migrationBuilder.CreateIndex( - name: "IX_CustomProjectTests_TestSettingsId", - table: "CustomProjectTests", - column: "TestSettingsId", - unique: true); - - migrationBuilder.CreateIndex( - name: "IX_CustomProjectTests_TestTypeId", - table: "CustomProjectTests", - column: "TestTypeId"); - - migrationBuilder.CreateIndex( - name: "IX_CustomProjectTestAssets_CustomProjectTestId", - table: "CustomProjectTestAssets", - column: "CustomProjectTestId"); - - migrationBuilder.CreateIndex( - name: "IX_CustomProjectTestWithSolutionAsTestResults_CustomProjectSolutionId", - table: "CustomProjectTestWithSolutionAsTestResults", - column: "CustomProjectSolutionId"); - - migrationBuilder.CreateIndex( - name: "IX_CustomProjectTestWithSolutionAsTestResults_CustomProjectTestId", - table: "CustomProjectTestWithSolutionAsTestResults", - column: "CustomProjectTestId"); - - migrationBuilder.AddForeignKey( - name: "FK_Assets_CustomProjectDescriptions_CustomProjectDescriptionId", - table: "Assets", - column: "CustomProjectDescriptionId", - principalTable: "CustomProjectDescriptions", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - - migrationBuilder.AddForeignKey( - name: "FK_CustomProjectSolutions_CustomProjectSolutionFiles_MainFileId", - table: "CustomProjectSolutions", - column: "MainFileId", - principalTable: "CustomProjectSolutionFiles", - principalColumn: "Id", - onDelete: ReferentialAction.SetNull); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "FK_Assets_CustomProjectDescriptions_CustomProjectDescriptionId", - table: "Assets"); - - migrationBuilder.DropForeignKey( - name: "FK_CustomProjectSolutions_CustomProjects_CustomProjectId", - table: "CustomProjectSolutions"); - - migrationBuilder.DropForeignKey( - name: "FK_CustomProjectSolutions_CustomProjectSolutionFiles_MainFileId", - table: "CustomProjectSolutions"); - - migrationBuilder.DropIndex( - name: "IX_Assets_CustomProjectDescriptionId", - table: "Assets"); - - migrationBuilder.DropColumn( - name: "MaxCustomProjectsPerUser", - table: "SystemSettings"); - - migrationBuilder.DropColumn( - name: "CustomProjectDescriptionId", - table: "Assets"); - - migrationBuilder.DropTable( - name: "CustomProjectDescriptions"); - - migrationBuilder.DropTable( - name: "CustomProjectTestAssets"); - - migrationBuilder.DropTable( - name: "CustomProjectTestWithSolutionAsTestResults"); - - migrationBuilder.DropTable( - name: "CustomProjectTests"); - - migrationBuilder.DropTable( - name: "CustomProjects"); - - migrationBuilder.DropTable( - name: "CustomProjectSolutionFiles"); - - migrationBuilder.DropTable( - name: "CustomProjectSolutions"); - } - } -} diff --git a/src/ClientServer/Migrations/20171110153042_customProjectTestsWeights.Designer.cs b/src/ClientServer/Migrations/20171110153042_customProjectTestsWeights.Designer.cs deleted file mode 100755 index 2123e897aa535372cd26bf8698990a74380b8a82..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20171110153042_customProjectTestsWeights.Designer.cs +++ /dev/null @@ -1,1687 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20171110153042_customProjectTestsWeights")] - partial class customProjectTestsWeights - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.ContentType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Type"); - - b.HasKey("Id"); - - b.ToTable("ContentTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl"); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName"); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<bool>("IsOnlyVisibleToMe"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<string>("ShortDescription"); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired(); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionVersionId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionVersionId"); - - b.ToTable("CustomTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MainSolutionVersionid"); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent"); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors"); - - b.Property<int?>("SolutionVersionId"); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId") - .IsUnique(); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("SolutionVersionId") - .IsRequired(); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionExerciseReleaseId") - .IsRequired(); - - b.Property<int?>("SolutionPLangId") - .IsRequired(); - - b.Property<int?>("SolutionUserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionVersions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionVersionId"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description"); - - b.Property<string>("DisplayName"); - - b.Property<string>("HtmlBackgroundColor"); - - b.Property<string>("HtmlColor"); - - b.Property<string>("HtmlIcon"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut"); - - b.Property<string>("Language"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret"); - - b.Property<string>("UserAuthToken"); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired(); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme"); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeGroups"); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxSolutionVersionsPerUser"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password"); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired(); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionVersions") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("TestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20171110153042_customProjectTestsWeights.cs b/src/ClientServer/Migrations/20171110153042_customProjectTestsWeights.cs deleted file mode 100755 index 3b0e7d201c51cb55d3307636b9f402bc68a0daf5..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20171110153042_customProjectTestsWeights.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class customProjectTestsWeights : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn<int>( - name: "Weight", - table: "CustomProjectTests", - nullable: false, - defaultValue: 0); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "Weight", - table: "CustomProjectTests"); - } - } -} diff --git a/src/ClientServer/Migrations/20171229135558_dashboardSystemRolePermission.Designer.cs b/src/ClientServer/Migrations/20171229135558_dashboardSystemRolePermission.Designer.cs deleted file mode 100755 index 6a2a60bd39b78514c30f453df14ea09cf1c72889..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20171229135558_dashboardSystemRolePermission.Designer.cs +++ /dev/null @@ -1,1689 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20171229135558_dashboardSystemRolePermission")] - partial class dashboardSystemRolePermission - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.ContentType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Type"); - - b.HasKey("Id"); - - b.ToTable("ContentTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl"); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName"); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<bool>("IsOnlyVisibleToMe"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<string>("ShortDescription"); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired(); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionVersionId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionVersionId"); - - b.ToTable("CustomTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MainSolutionVersionid"); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent"); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors"); - - b.Property<int?>("SolutionVersionId"); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId") - .IsUnique(); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("SolutionVersionId") - .IsRequired(); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionExerciseReleaseId") - .IsRequired(); - - b.Property<int?>("SolutionPLangId") - .IsRequired(); - - b.Property<int?>("SolutionUserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionVersions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionVersionId"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description"); - - b.Property<string>("DisplayName"); - - b.Property<string>("HtmlBackgroundColor"); - - b.Property<string>("HtmlColor"); - - b.Property<string>("HtmlIcon"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut"); - - b.Property<string>("Language"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret"); - - b.Property<string>("UserAuthToken"); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired(); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme"); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeGroups"); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxSolutionVersionsPerUser"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password"); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired(); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionVersions") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("TestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20171229135558_dashboardSystemRolePermission.cs b/src/ClientServer/Migrations/20171229135558_dashboardSystemRolePermission.cs deleted file mode 100755 index 60d459d1e1f5fe76c0f3eea3603a5066e7f620e6..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20171229135558_dashboardSystemRolePermission.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class dashboardSystemRolePermission : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn<bool>( - name: "CanViewDashboard", - table: "SystemRolePermissions", - nullable: false, - defaultValue: false); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "CanViewDashboard", - table: "SystemRolePermissions"); - } - } -} diff --git a/src/ClientServer/Migrations/20180214130057_ReleaseEExamOptions.Designer.cs b/src/ClientServer/Migrations/20180214130057_ReleaseEExamOptions.Designer.cs deleted file mode 100755 index 4e5dcc8c74cb1fc8cda258ca522854722551b557..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20180214130057_ReleaseEExamOptions.Designer.cs +++ /dev/null @@ -1,1693 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20180214130057_ReleaseEExamOptions")] - partial class ReleaseEExamOptions - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.ContentType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Type"); - - b.HasKey("Id"); - - b.ToTable("ContentTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl"); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName"); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<bool>("IsOnlyVisibleToMe"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<string>("ShortDescription"); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired(); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionVersionId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionVersionId"); - - b.ToTable("CustomTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MainSolutionVersionid"); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent"); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors"); - - b.Property<int?>("SolutionVersionId"); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId") - .IsUnique(); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("SolutionVersionId") - .IsRequired(); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionExerciseReleaseId") - .IsRequired(); - - b.Property<int?>("SolutionPLangId") - .IsRequired(); - - b.Property<int?>("SolutionUserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionVersions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionVersionId"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description"); - - b.Property<string>("DisplayName"); - - b.Property<string>("HtmlBackgroundColor"); - - b.Property<string>("HtmlColor"); - - b.Property<string>("HtmlIcon"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut"); - - b.Property<string>("Language"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret"); - - b.Property<string>("UserAuthToken"); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired(); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme"); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeGroups"); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxSolutionVersionsPerUser"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password"); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired(); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionVersions") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("TestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20180214130057_ReleaseEExamOptions.cs b/src/ClientServer/Migrations/20180214130057_ReleaseEExamOptions.cs deleted file mode 100755 index a43fdbfebd9aeb2792105c09b9b3d853b483aafe..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20180214130057_ReleaseEExamOptions.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class ReleaseEExamOptions : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn<bool>( - name: "HideInOverviews", - table: "ExerciseReleases", - nullable: false, - defaultValue: false); - - migrationBuilder.AddColumn<bool>( - name: "ShouldClearClipboard", - table: "ExerciseReleases", - nullable: false, - defaultValue: false); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "HideInOverviews", - table: "ExerciseReleases"); - - migrationBuilder.DropColumn( - name: "ShouldClearClipboard", - table: "ExerciseReleases"); - } - } -} diff --git a/src/ClientServer/Migrations/20180215112957_ReleaseHideSiteHeaderBar.Designer.cs b/src/ClientServer/Migrations/20180215112957_ReleaseHideSiteHeaderBar.Designer.cs deleted file mode 100755 index 270ddcd9649fbd636d188351d89b59fddc7d2fe2..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20180215112957_ReleaseHideSiteHeaderBar.Designer.cs +++ /dev/null @@ -1,1695 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20180215112957_ReleaseHideSiteHeaderBar")] - partial class ReleaseHideSiteHeaderBar - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.ContentType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Type"); - - b.HasKey("Id"); - - b.ToTable("ContentTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl"); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName"); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<bool>("IsOnlyVisibleToMe"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<string>("ShortDescription"); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired(); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionVersionId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionVersionId"); - - b.ToTable("CustomTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MainSolutionVersionid"); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent"); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors"); - - b.Property<int?>("SolutionVersionId"); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId") - .IsUnique(); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("SolutionVersionId") - .IsRequired(); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionExerciseReleaseId") - .IsRequired(); - - b.Property<int?>("SolutionPLangId") - .IsRequired(); - - b.Property<int?>("SolutionUserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionVersions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionVersionId"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description"); - - b.Property<string>("DisplayName"); - - b.Property<string>("HtmlBackgroundColor"); - - b.Property<string>("HtmlColor"); - - b.Property<string>("HtmlIcon"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut"); - - b.Property<string>("Language"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret"); - - b.Property<string>("UserAuthToken"); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired(); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme"); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeGroups"); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxSolutionVersionsPerUser"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password"); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired(); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionVersions") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("TestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20180215112957_ReleaseHideSiteHeaderBar.cs b/src/ClientServer/Migrations/20180215112957_ReleaseHideSiteHeaderBar.cs deleted file mode 100755 index 8b22758cd67ab0e0dc23067d5bbd22c2ee86845a..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20180215112957_ReleaseHideSiteHeaderBar.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class ReleaseHideSiteHeaderBar : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn<bool>( - name: "HideSiteHeaderBar", - table: "ExerciseReleases", - nullable: false, - defaultValue: false); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "HideSiteHeaderBar", - table: "ExerciseReleases"); - } - } -} diff --git a/src/ClientServer/Migrations/20180912160339_removeSolutionVersion1.Designer.cs b/src/ClientServer/Migrations/20180912160339_removeSolutionVersion1.Designer.cs deleted file mode 100755 index 92d3d409a9201e64c5b9f3f766c735c022e56f85..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20180912160339_removeSolutionVersion1.Designer.cs +++ /dev/null @@ -1,1789 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20180912160339_removeSolutionVersion1")] - partial class removeSolutionVersion1 - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.ContentType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Type"); - - b.HasKey("Id"); - - b.ToTable("ContentTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl"); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName"); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<bool>("IsOnlyVisibleToMe"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<string>("ShortDescription"); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired(); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<bool?>("HasCompiled"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionVersionId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionVersionId"); - - b.ToTable("CustomTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("MainSolutionVersionid"); - - b.Property<string>("Note"); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent"); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors"); - - b.Property<int?>("SolutionVersionId"); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId") - .IsUnique(); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("SolutionVersionId") - .IsRequired(); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionExerciseReleaseId") - .IsRequired(); - - b.Property<int?>("SolutionPLangId") - .IsRequired(); - - b.Property<int?>("SolutionUserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionVersions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<bool?>("HasCompiled"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionVersionId"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description"); - - b.Property<string>("DisplayName"); - - b.Property<string>("HtmlBackgroundColor"); - - b.Property<string>("HtmlColor"); - - b.Property<string>("HtmlIcon"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut"); - - b.Property<string>("Language"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret"); - - b.Property<string>("UserAuthToken"); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired(); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme"); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeGroups"); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxSolutionVersionsPerUser"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password"); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired(); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionVersions") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("TestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20180912160339_removeSolutionVersion1.cs b/src/ClientServer/Migrations/20180912160339_removeSolutionVersion1.cs deleted file mode 100755 index 4da9dabaad53764658b2e185646fc1e3242021af..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20180912160339_removeSolutionVersion1.cs +++ /dev/null @@ -1,151 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class removeSolutionVersion1 : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "CustomTestWithSingleSolutionAsTestResult", - columns: table => new - { - CustomTestId = table.Column<int>(nullable: false), - SolutionUserId = table.Column<int>(nullable: false), - SolutionExerciseReleaseId = table.Column<int>(nullable: false), - SolutionPLangId = table.Column<int>(nullable: false), - HasCompiled = table.Column<bool>(nullable: true), - Passed = table.Column<bool>(nullable: true), - ProgramExitCode = table.Column<int>(nullable: true), - Protocol = table.Column<string>(nullable: true), - TestResultCode = table.Column<int>(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_CustomTestWithSingleSolutionAsTestResult", x => new { x.CustomTestId, x.SolutionUserId, x.SolutionExerciseReleaseId, x.SolutionPLangId }); - table.ForeignKey( - name: "FK_CustomTestWithSingleSolutionAsTestResult_CustomTest_CustomTestId", - column: x => x.CustomTestId, - principalTable: "CustomTest", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_CustomTestWithSingleSolutionAsTestResult_Solutions_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId", - columns: x => new { x.SolutionUserId, x.SolutionExerciseReleaseId, x.SolutionPLangId }, - principalTable: "Solutions", - principalColumns: new[] { "UserId", "ExerciseReleaseId", "PLangId" }, - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "TestWithSingleSolutionAsTestResult", - columns: table => new - { - TestId = table.Column<int>(nullable: false), - SolutionUserId = table.Column<int>(nullable: false), - SolutionExerciseReleaseId = table.Column<int>(nullable: false), - SolutionPLangId = table.Column<int>(nullable: false), - HasCompiled = table.Column<bool>(nullable: true), - Passed = table.Column<bool>(nullable: true), - ProgramExitCode = table.Column<int>(nullable: true), - Protocol = table.Column<string>(nullable: true), - TestResultCode = table.Column<int>(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_TestWithSingleSolutionAsTestResult", x => new { x.TestId, x.SolutionUserId, x.SolutionExerciseReleaseId, x.SolutionPLangId }); - table.ForeignKey( - name: "FK_TestWithSingleSolutionAsTestResult_Tests_TestId", - column: x => x.TestId, - principalTable: "Tests", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_TestWithSingleSolutionAsTestResult_Solutions_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId", - columns: x => new { x.SolutionUserId, x.SolutionExerciseReleaseId, x.SolutionPLangId }, - principalTable: "Solutions", - principalColumns: new[] { "UserId", "ExerciseReleaseId", "PLangId" }, - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.AddColumn<int>( - name: "SolutionExerciseReleaseId", - table: "SolutionFiles", - nullable: false, - defaultValue: 0); - - migrationBuilder.AddColumn<int>( - name: "SolutionPLangId", - table: "SolutionFiles", - nullable: false, - defaultValue: 0); - - migrationBuilder.AddColumn<int>( - name: "SolutionUserId", - table: "SolutionFiles", - nullable: false, - defaultValue: 0); - - migrationBuilder.AddColumn<int>( - name: "MainFileId", - table: "Solutions", - nullable: true); - - migrationBuilder.AddColumn<string>( - name: "Note", - table: "Solutions", - nullable: true); - - migrationBuilder.CreateIndex( - name: "IX_CustomTestWithSingleSolutionAsTestResult_CustomTestId", - table: "CustomTestWithSingleSolutionAsTestResult", - column: "CustomTestId"); - - migrationBuilder.CreateIndex( - name: "IX_CustomTestWithSingleSolutionAsTestResult_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId", - table: "CustomTestWithSingleSolutionAsTestResult", - columns: new[] { "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId" }); - - migrationBuilder.CreateIndex( - name: "IX_TestWithSingleSolutionAsTestResult_TestId", - table: "TestWithSingleSolutionAsTestResult", - column: "TestId"); - - migrationBuilder.CreateIndex( - name: "IX_TestWithSingleSolutionAsTestResult_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId", - table: "TestWithSingleSolutionAsTestResult", - columns: new[] { "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId" }); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "SolutionExerciseReleaseId", - table: "SolutionFiles"); - - migrationBuilder.DropColumn( - name: "SolutionPLangId", - table: "SolutionFiles"); - - migrationBuilder.DropColumn( - name: "SolutionUserId", - table: "SolutionFiles"); - - migrationBuilder.DropColumn( - name: "MainFileId", - table: "Solutions"); - - migrationBuilder.DropColumn( - name: "Note", - table: "Solutions"); - - migrationBuilder.DropTable( - name: "CustomTestWithSingleSolutionAsTestResult"); - - migrationBuilder.DropTable( - name: "TestWithSingleSolutionAsTestResult"); - } - } -} diff --git a/src/ClientServer/Migrations/20180912171554_removeSolutionVersion2.Designer.cs b/src/ClientServer/Migrations/20180912171554_removeSolutionVersion2.Designer.cs deleted file mode 100755 index bcd52bea73390cb856e08960603b201fd21bf2b4..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20180912171554_removeSolutionVersion2.Designer.cs +++ /dev/null @@ -1,1804 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20180912171554_removeSolutionVersion2")] - partial class removeSolutionVersion2 - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.ContentType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Type"); - - b.HasKey("Id"); - - b.ToTable("ContentTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl"); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName"); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<bool>("IsOnlyVisibleToMe"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<string>("ShortDescription"); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired(); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<bool?>("HasCompiled"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionVersionId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionVersionId"); - - b.ToTable("CustomTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("MainSolutionVersionid"); - - b.Property<string>("Note"); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent"); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors"); - - b.Property<int?>("SolutionVersionId"); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId") - .IsUnique(); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("SolutionVersionId") - .IsRequired(); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TemplateFileId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionExerciseReleaseId") - .IsRequired(); - - b.Property<int?>("SolutionPLangId") - .IsRequired(); - - b.Property<int?>("SolutionUserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionVersions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<bool?>("HasCompiled"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionVersionId"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description"); - - b.Property<string>("DisplayName"); - - b.Property<string>("HtmlBackgroundColor"); - - b.Property<string>("HtmlColor"); - - b.Property<string>("HtmlIcon"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut"); - - b.Property<string>("Language"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret"); - - b.Property<string>("UserAuthToken"); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired(); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme"); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeGroups"); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxSolutionVersionsPerUser"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password"); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired(); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionVersions") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("TestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20180912171554_removeSolutionVersion2.cs b/src/ClientServer/Migrations/20180912171554_removeSolutionVersion2.cs deleted file mode 100755 index 044d01e8c20acd0ed253b230ffcabc4d9c75417d..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20180912171554_removeSolutionVersion2.cs +++ /dev/null @@ -1,58 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class removeSolutionVersion2 : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateIndex( - name: "IX_SolutionFiles_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId", - table: "SolutionFiles", - columns: new[] { "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId" }); - - migrationBuilder.CreateIndex( - name: "IX_Solutions_MainFileId", - table: "Solutions", - column: "MainFileId", - unique: true); - - migrationBuilder.AddForeignKey( - name: "FK_Solutions_SolutionFiles_MainFileId", - table: "Solutions", - column: "MainFileId", - principalTable: "SolutionFiles", - principalColumn: "Id", - onDelete: ReferentialAction.SetNull); - - migrationBuilder.AddForeignKey( - name: "FK_SolutionFiles_Solutions_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId", - table: "SolutionFiles", - columns: new[] { "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId" }, - principalTable: "Solutions", - principalColumns: new[] { "UserId", "ExerciseReleaseId", "PLangId" }, - onDelete: ReferentialAction.Cascade); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "FK_Solutions_SolutionFiles_MainFileId", - table: "Solutions"); - - migrationBuilder.DropForeignKey( - name: "FK_SolutionFiles_Solutions_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId", - table: "SolutionFiles"); - - migrationBuilder.DropIndex( - name: "IX_SolutionFiles_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId", - table: "SolutionFiles"); - - migrationBuilder.DropIndex( - name: "IX_Solutions_MainFileId", - table: "Solutions"); - } - } -} diff --git a/src/ClientServer/Migrations/20180912182512_removeSolutionVersion3.Designer.cs b/src/ClientServer/Migrations/20180912182512_removeSolutionVersion3.Designer.cs deleted file mode 100755 index 17ca2ddedf9f196e5cb2f8aa9905223b7181c1c6..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20180912182512_removeSolutionVersion3.Designer.cs +++ /dev/null @@ -1,1812 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20180912182512_removeSolutionVersion3")] - partial class removeSolutionVersion3 - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.ContentType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Type"); - - b.HasKey("Id"); - - b.ToTable("ContentTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl"); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName"); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<bool>("IsOnlyVisibleToMe"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<string>("ShortDescription"); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired(); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionVersionId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionVersionId"); - - b.ToTable("CustomTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("MainSolutionVersionid"); - - b.Property<string>("Note"); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent"); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors"); - - b.Property<int?>("SolutionVersionId"); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId") - .IsUnique(); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("SolutionVersionId") - .IsRequired(); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TemplateFileId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note"); - - b.Property<int?>("SolutionExerciseReleaseId") - .IsRequired(); - - b.Property<int?>("SolutionPLangId") - .IsRequired(); - - b.Property<int?>("SolutionUserId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionVersions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionVersionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionVersionId"); - - b.HasIndex("SolutionVersionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description"); - - b.Property<string>("DisplayName"); - - b.Property<string>("HtmlBackgroundColor"); - - b.Property<string>("HtmlColor"); - - b.Property<string>("HtmlIcon"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut"); - - b.Property<string>("Language"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret"); - - b.Property<string>("UserAuthToken"); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired(); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme"); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeGroups"); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxSolutionVersionsPerUser"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password"); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired(); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionAssessment", "SolutionVersionId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionVersion", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.SolutionVersion", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionVersions") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionVersion", "SolutionVersion") - .WithMany("TestResults") - .HasForeignKey("SolutionVersionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20180912182512_removeSolutionVersion3.cs b/src/ClientServer/Migrations/20180912182512_removeSolutionVersion3.cs deleted file mode 100755 index 3acde87fcd39b30d80b5a4021ee91d81b57b6509..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20180912182512_removeSolutionVersion3.cs +++ /dev/null @@ -1,55 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class removeSolutionVersion3 : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn<DateTime>( - name: "CreatedAt", - table: "TestWithSingleSolutionAsTestResult", - nullable: false, - defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)); - - migrationBuilder.AddColumn<DateTime>( - name: "LastUpdatedAt", - table: "TestWithSingleSolutionAsTestResult", - nullable: false, - defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)); - - migrationBuilder.AddColumn<DateTime>( - name: "CreatedAt", - table: "CustomTestWithSingleSolutionAsTestResult", - nullable: false, - defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)); - - migrationBuilder.AddColumn<DateTime>( - name: "LastUpdatedAt", - table: "CustomTestWithSingleSolutionAsTestResult", - nullable: false, - defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "CreatedAt", - table: "TestWithSingleSolutionAsTestResult"); - - migrationBuilder.DropColumn( - name: "LastUpdatedAt", - table: "TestWithSingleSolutionAsTestResult"); - - migrationBuilder.DropColumn( - name: "CreatedAt", - table: "CustomTestWithSingleSolutionAsTestResult"); - - migrationBuilder.DropColumn( - name: "LastUpdatedAt", - table: "CustomTestWithSingleSolutionAsTestResult"); - } - } -} diff --git a/src/ClientServer/Migrations/20180913125543_removeSolutionVersion4.Designer.cs b/src/ClientServer/Migrations/20180913125543_removeSolutionVersion4.Designer.cs deleted file mode 100755 index 2d1b9cece3050d8069f0c2ecb96d18756b571eb3..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20180913125543_removeSolutionVersion4.Designer.cs +++ /dev/null @@ -1,1656 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20180913125543_removeSolutionVersion4")] - partial class removeSolutionVersion4 - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.ContentType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Type"); - - b.HasKey("Id"); - - b.ToTable("ContentTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl"); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName"); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<bool>("IsOnlyVisibleToMe"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<string>("ShortDescription"); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired(); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note"); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent"); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors"); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("TemplateFileId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description"); - - b.Property<string>("DisplayName"); - - b.Property<string>("HtmlBackgroundColor"); - - b.Property<string>("HtmlColor"); - - b.Property<string>("HtmlIcon"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut"); - - b.Property<string>("Language"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret"); - - b.Property<string>("UserAuthToken"); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired(); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme"); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeGroups"); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password"); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired(); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20180913125543_removeSolutionVersion4.cs b/src/ClientServer/Migrations/20180913125543_removeSolutionVersion4.cs deleted file mode 100755 index defa883b4ad394dd55cddf80363d41e5e3cb39b4..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20180913125543_removeSolutionVersion4.cs +++ /dev/null @@ -1,230 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class removeSolutionVersion4 : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "FK_SolutionAssessment_SolutionVersions_SolutionVersionId", - table: "SolutionAssessment"); - - migrationBuilder.DropForeignKey( - name: "FK_SolutionFiles_SolutionVersions_SolutionVersionId", - table: "SolutionFiles"); - - migrationBuilder.DropIndex( - name: "IX_SolutionFiles_SolutionVersionId", - table: "SolutionFiles"); - - migrationBuilder.DropIndex( - name: "IX_SolutionAssessment_SolutionVersionId", - table: "SolutionAssessment"); - - migrationBuilder.DropColumn( - name: "MaxSolutionVersionsPerUser", - table: "SystemSettings"); - - migrationBuilder.DropColumn( - name: "SolutionVersionId", - table: "SolutionFiles"); - - migrationBuilder.DropColumn( - name: "SolutionVersionId", - table: "SolutionAssessment"); - - migrationBuilder.DropColumn( - name: "MainSolutionVersionid", - table: "Solutions"); - - migrationBuilder.DropTable( - name: "CustomTestWithSolutionAsTestResults"); - - migrationBuilder.DropTable( - name: "TestResults"); - - migrationBuilder.DropTable( - name: "SolutionVersions"); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "SolutionVersions", - columns: table => new - { - Id = table.Column<int>(nullable: false) - .Annotation("Npgsql:ValueGeneratedOnAdd", true), - CreatedAt = table.Column<DateTime>(nullable: false), - LastUpdatedAt = table.Column<DateTime>(nullable: false), - MainFileId = table.Column<int>(nullable: true), - Note = table.Column<string>(nullable: true), - SolutionExerciseReleaseId = table.Column<int>(nullable: false), - SolutionPLangId = table.Column<int>(nullable: false), - SolutionUserId = table.Column<int>(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_SolutionVersions", x => x.Id); - table.ForeignKey( - name: "FK_SolutionVersions_SolutionFiles_MainFileId", - column: x => x.MainFileId, - principalTable: "SolutionFiles", - principalColumn: "Id", - onDelete: ReferentialAction.SetNull); - table.ForeignKey( - name: "FK_SolutionVersions_Solutions_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId", - columns: x => new { x.SolutionUserId, x.SolutionExerciseReleaseId, x.SolutionPLangId }, - principalTable: "Solutions", - principalColumns: new[] { "UserId", "ExerciseReleaseId", "PLangId" }, - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "CustomTestWithSolutionAsTestResults", - columns: table => new - { - CustomTestId = table.Column<int>(nullable: false), - SolutionVersionId = table.Column<int>(nullable: false), - CreatedAt = table.Column<DateTime>(nullable: false), - HasCompiled = table.Column<bool>(nullable: true), - LastUpdatedAt = table.Column<DateTime>(nullable: false), - Passed = table.Column<bool>(nullable: true), - ProgramExitCode = table.Column<int>(nullable: true), - Protocol = table.Column<string>(nullable: true), - TestResultCode = table.Column<int>(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_CustomTestWithSolutionAsTestResults", x => new { x.CustomTestId, x.SolutionVersionId }); - table.ForeignKey( - name: "FK_CustomTestWithSolutionAsTestResults_CustomTest_CustomTestId", - column: x => x.CustomTestId, - principalTable: "CustomTest", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_CustomTestWithSolutionAsTestResults_SolutionVersions_SolutionVersionId", - column: x => x.SolutionVersionId, - principalTable: "SolutionVersions", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "TestResults", - columns: table => new - { - TestId = table.Column<int>(nullable: false), - SolutionVersionId = table.Column<int>(nullable: false), - CreatedAt = table.Column<DateTime>(nullable: false), - HasCompiled = table.Column<bool>(nullable: true), - LastUpdatedAt = table.Column<DateTime>(nullable: false), - Passed = table.Column<bool>(nullable: true), - ProgramExitCode = table.Column<int>(nullable: true), - Protocol = table.Column<string>(nullable: true), - TestResultCode = table.Column<int>(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_TestResults", x => new { x.TestId, x.SolutionVersionId }); - table.ForeignKey( - name: "FK_TestResults_SolutionVersions_SolutionVersionId", - column: x => x.SolutionVersionId, - principalTable: "SolutionVersions", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_TestResults_Tests_TestId", - column: x => x.TestId, - principalTable: "Tests", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.AddColumn<int>( - name: "MaxSolutionVersionsPerUser", - table: "SystemSettings", - nullable: false, - defaultValue: 0); - - migrationBuilder.AddColumn<int>( - name: "SolutionVersionId", - table: "SolutionFiles", - nullable: false, - defaultValue: 0); - - migrationBuilder.AddColumn<int>( - name: "SolutionVersionId", - table: "SolutionAssessment", - nullable: true); - - migrationBuilder.AddColumn<int>( - name: "MainSolutionVersionid", - table: "Solutions", - nullable: false, - defaultValue: 0); - - migrationBuilder.CreateIndex( - name: "IX_SolutionFiles_SolutionVersionId", - table: "SolutionFiles", - column: "SolutionVersionId"); - - migrationBuilder.CreateIndex( - name: "IX_SolutionAssessment_SolutionVersionId", - table: "SolutionAssessment", - column: "SolutionVersionId", - unique: true); - - migrationBuilder.CreateIndex( - name: "IX_CustomTestWithSolutionAsTestResults_CustomTestId", - table: "CustomTestWithSolutionAsTestResults", - column: "CustomTestId"); - - migrationBuilder.CreateIndex( - name: "IX_CustomTestWithSolutionAsTestResults_SolutionVersionId", - table: "CustomTestWithSolutionAsTestResults", - column: "SolutionVersionId"); - - migrationBuilder.CreateIndex( - name: "IX_SolutionVersions_MainFileId", - table: "SolutionVersions", - column: "MainFileId", - unique: true); - - migrationBuilder.CreateIndex( - name: "IX_SolutionVersions_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId", - table: "SolutionVersions", - columns: new[] { "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId" }); - - migrationBuilder.CreateIndex( - name: "IX_TestResults_SolutionVersionId", - table: "TestResults", - column: "SolutionVersionId"); - - migrationBuilder.CreateIndex( - name: "IX_TestResults_TestId", - table: "TestResults", - column: "TestId"); - - migrationBuilder.AddForeignKey( - name: "FK_SolutionAssessment_SolutionVersions_SolutionVersionId", - table: "SolutionAssessment", - column: "SolutionVersionId", - principalTable: "SolutionVersions", - principalColumn: "Id", - onDelete: ReferentialAction.SetNull); - - migrationBuilder.AddForeignKey( - name: "FK_SolutionFiles_SolutionVersions_SolutionVersionId", - table: "SolutionFiles", - column: "SolutionVersionId", - principalTable: "SolutionVersions", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - } - } -} diff --git a/src/ClientServer/Migrations/20180921120340_groupRolePermissionAndUpdatedAt.Designer.cs b/src/ClientServer/Migrations/20180921120340_groupRolePermissionAndUpdatedAt.Designer.cs deleted file mode 100755 index 2c6f20944f6a3e8376e29a0b1d424d2032a2ca25..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20180921120340_groupRolePermissionAndUpdatedAt.Designer.cs +++ /dev/null @@ -1,1660 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20180921120340_groupRolePermissionAndUpdatedAt")] - partial class groupRolePermissionAndUpdatedAt - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.ContentType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Type"); - - b.HasKey("Id"); - - b.ToTable("ContentTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl"); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName"); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<bool>("IsOnlyVisibleToOwner"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<string>("ShortDescription"); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired(); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note"); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent"); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors"); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("TemplateFileId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description"); - - b.Property<string>("DisplayName"); - - b.Property<string>("HtmlBackgroundColor"); - - b.Property<string>("HtmlColor"); - - b.Property<string>("HtmlIcon"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut"); - - b.Property<string>("Language"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret"); - - b.Property<string>("UserAuthToken"); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired(); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeGroupData"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<bool>("CanSeeOtherMembers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme"); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeGroups"); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password"); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired(); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20180921120340_groupRolePermissionAndUpdatedAt.cs b/src/ClientServer/Migrations/20180921120340_groupRolePermissionAndUpdatedAt.cs deleted file mode 100755 index 3a41338231472e25387e85e699343e3fe63a4a1f..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20180921120340_groupRolePermissionAndUpdatedAt.cs +++ /dev/null @@ -1,46 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class groupRolePermissionAndUpdatedAt : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.RenameColumn( - name: "IsOnlyVisibleToMe", - table: "Exercises", - newName: "IsOnlyVisibleToOwner"); - - migrationBuilder.AddColumn<bool>( - name: "CanChangeGroupData", - table: "GroupRolePermissions", - nullable: false, - defaultValue: false); - - migrationBuilder.AddColumn<bool>( - name: "CanSeeOtherMembers", - table: "GroupRolePermissions", - nullable: false, - defaultValue: false); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "CanChangeGroupData", - table: "GroupRolePermissions"); - - migrationBuilder.DropColumn( - name: "CanSeeOtherMembers", - table: "GroupRolePermissions"); - - migrationBuilder.RenameColumn( - name: "IsOnlyVisibleToOwner", - table: "Exercises", - newName: "IsOnlyVisibleToMe" - ); - } - } -} diff --git a/src/ClientServer/Migrations/20180929145343_addedAfterSolution.Designer.cs b/src/ClientServer/Migrations/20180929145343_addedAfterSolution.Designer.cs deleted file mode 100755 index 3fcbd678873e1f0b12a87b42ea0fa229048a6a14..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20180929145343_addedAfterSolution.Designer.cs +++ /dev/null @@ -1,1827 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20180929145343_addedAfterSolution")] - partial class addedAfterSolution - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.ContentType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Type"); - - b.HasKey("Id"); - - b.ToTable("ContentTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .IsUnique(); - - b.ToTable("AfterSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("AfterSolutionId"); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("AfterSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl"); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName"); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<bool>("IsOnlyVisibleToOwner"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<string>("ShortDescription"); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired(); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note"); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent"); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors"); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("TemplateFileId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description"); - - b.Property<string>("DisplayName"); - - b.Property<string>("HtmlBackgroundColor"); - - b.Property<string>("HtmlColor"); - - b.Property<string>("HtmlIcon"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut"); - - b.Property<string>("Language"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret"); - - b.Property<string>("UserAuthToken"); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired(); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeGroupData"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<bool>("CanSeeOtherMembers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme"); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeGroups"); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password"); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired(); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithOne("AfterSolution") - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("SolutionFiles") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany() - .HasForeignKey("TemplateFileId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("CustomTestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("AfterTestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("TestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("AfterTestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20180929145343_addedAfterSolution.cs b/src/ClientServer/Migrations/20180929145343_addedAfterSolution.cs deleted file mode 100755 index 5cbb92501410c55dd32f286ae39cd42a46eca62a..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20180929145343_addedAfterSolution.cs +++ /dev/null @@ -1,199 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class addedAfterSolution : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "AfterSolutionFiles", - columns: table => new - { - Id = table.Column<int>(nullable: false) - .Annotation("Npgsql:ValueGeneratedOnAdd", true), - AfterSolutionId = table.Column<int>(nullable: false), - Content = table.Column<string>(nullable: true), - CreatedAt = table.Column<DateTime>(nullable: false), - DisplayIndex = table.Column<int>(nullable: false), - FileNameWithExtension = table.Column<string>(nullable: true), - IsDisplayed = table.Column<bool>(nullable: false), - LastUpdatedAt = table.Column<DateTime>(nullable: false), - TemplateFileId = table.Column<int>(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_AfterSolutionFiles", x => x.Id); - table.ForeignKey( - name: "FK_AfterSolutionFiles_TemplateFiles_TemplateFileId", - column: x => x.TemplateFileId, - principalTable: "TemplateFiles", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "AfterSolutions", - columns: table => new - { - Id = table.Column<int>(nullable: false) - .Annotation("Npgsql:ValueGeneratedOnAdd", true), - CreatedAt = table.Column<DateTime>(nullable: false), - LastUpdatedAt = table.Column<DateTime>(nullable: false), - MainFileId = table.Column<int>(nullable: true), - SolutionExerciseReleaseId = table.Column<int>(nullable: false), - SolutionPLangId = table.Column<int>(nullable: false), - SolutionUserId = table.Column<int>(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_AfterSolutions", x => x.Id); - table.ForeignKey( - name: "FK_AfterSolutions_AfterSolutionFiles_MainFileId", - column: x => x.MainFileId, - principalTable: "AfterSolutionFiles", - principalColumn: "Id", - onDelete: ReferentialAction.SetNull); - table.ForeignKey( - name: "FK_AfterSolutions_Solutions_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId", - columns: x => new { x.SolutionUserId, x.SolutionExerciseReleaseId, x.SolutionPLangId }, - principalTable: "Solutions", - principalColumns: new[] { "UserId", "ExerciseReleaseId", "PLangId" }, - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "CustomTestWithAfterSolutionAsTestResults", - columns: table => new - { - CustomTestId = table.Column<int>(nullable: false), - AfterSolutionId = table.Column<int>(nullable: false), - CreatedAt = table.Column<DateTime>(nullable: false), - HasCompiled = table.Column<bool>(nullable: true), - LastUpdatedAt = table.Column<DateTime>(nullable: false), - Passed = table.Column<bool>(nullable: true), - ProgramExitCode = table.Column<int>(nullable: true), - Protocol = table.Column<string>(nullable: true), - TestResultCode = table.Column<int>(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_CustomTestWithAfterSolutionAsTestResults", x => new { x.CustomTestId, x.AfterSolutionId }); - table.ForeignKey( - name: "FK_CustomTestWithAfterSolutionAsTestResults_AfterSolutions_AfterSolutionId", - column: x => x.AfterSolutionId, - principalTable: "AfterSolutions", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_CustomTestWithAfterSolutionAsTestResults_CustomTest_CustomTestId", - column: x => x.CustomTestId, - principalTable: "CustomTest", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "TestWithAfterSolutionAsTestResults", - columns: table => new - { - TestId = table.Column<int>(nullable: false), - AfterSolutionId = table.Column<int>(nullable: false), - CreatedAt = table.Column<DateTime>(nullable: false), - HasCompiled = table.Column<bool>(nullable: true), - LastUpdatedAt = table.Column<DateTime>(nullable: false), - Passed = table.Column<bool>(nullable: true), - ProgramExitCode = table.Column<int>(nullable: true), - Protocol = table.Column<string>(nullable: true), - TestResultCode = table.Column<int>(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_TestWithAfterSolutionAsTestResults", x => new { x.TestId, x.AfterSolutionId }); - table.ForeignKey( - name: "FK_TestWithAfterSolutionAsTestResults_AfterSolutions_AfterSolutionId", - column: x => x.AfterSolutionId, - principalTable: "AfterSolutions", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_TestWithAfterSolutionAsTestResults_Tests_TestId", - column: x => x.TestId, - principalTable: "Tests", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateIndex( - name: "IX_AfterSolutions_MainFileId", - table: "AfterSolutions", - column: "MainFileId", - unique: true); - - migrationBuilder.CreateIndex( - name: "IX_AfterSolutions_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId", - table: "AfterSolutions", - columns: new[] { "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId" }, - unique: true); - - migrationBuilder.CreateIndex( - name: "IX_AfterSolutionFiles_AfterSolutionId", - table: "AfterSolutionFiles", - column: "AfterSolutionId"); - - migrationBuilder.CreateIndex( - name: "IX_AfterSolutionFiles_TemplateFileId", - table: "AfterSolutionFiles", - column: "TemplateFileId"); - - migrationBuilder.CreateIndex( - name: "IX_CustomTestWithAfterSolutionAsTestResults_AfterSolutionId", - table: "CustomTestWithAfterSolutionAsTestResults", - column: "AfterSolutionId"); - - migrationBuilder.CreateIndex( - name: "IX_CustomTestWithAfterSolutionAsTestResults_CustomTestId", - table: "CustomTestWithAfterSolutionAsTestResults", - column: "CustomTestId"); - - migrationBuilder.CreateIndex( - name: "IX_TestWithAfterSolutionAsTestResults_AfterSolutionId", - table: "TestWithAfterSolutionAsTestResults", - column: "AfterSolutionId"); - - migrationBuilder.CreateIndex( - name: "IX_TestWithAfterSolutionAsTestResults_TestId", - table: "TestWithAfterSolutionAsTestResults", - column: "TestId"); - - migrationBuilder.AddForeignKey( - name: "FK_AfterSolutionFiles_AfterSolutions_AfterSolutionId", - table: "AfterSolutionFiles", - column: "AfterSolutionId", - principalTable: "AfterSolutions", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "FK_AfterSolutions_AfterSolutionFiles_MainFileId", - table: "AfterSolutions"); - - migrationBuilder.DropTable( - name: "CustomTestWithAfterSolutionAsTestResults"); - - migrationBuilder.DropTable( - name: "TestWithAfterSolutionAsTestResults"); - - migrationBuilder.DropTable( - name: "AfterSolutionFiles"); - - migrationBuilder.DropTable( - name: "AfterSolutions"); - } - } -} diff --git a/src/ClientServer/Migrations/20181001151109_maxCustomTests.Designer.cs b/src/ClientServer/Migrations/20181001151109_maxCustomTests.Designer.cs deleted file mode 100755 index 5ca63edb4f9755ae3d21fff5feb0666c048837f6..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20181001151109_maxCustomTests.Designer.cs +++ /dev/null @@ -1,1829 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20181001151109_maxCustomTests")] - partial class maxCustomTests - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.ContentType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Type"); - - b.HasKey("Id"); - - b.ToTable("ContentTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .IsUnique(); - - b.ToTable("AfterSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("AfterSolutionId"); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("AfterSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl"); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName"); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<bool>("IsOnlyVisibleToOwner"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<string>("ShortDescription"); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired(); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note"); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent"); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors"); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("TemplateFileId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description"); - - b.Property<string>("DisplayName"); - - b.Property<string>("HtmlBackgroundColor"); - - b.Property<string>("HtmlColor"); - - b.Property<string>("HtmlIcon"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut"); - - b.Property<string>("Language"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret"); - - b.Property<string>("UserAuthToken"); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired(); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeGroupData"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<bool>("CanSeeOtherMembers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme"); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeGroups"); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxCustomTestsPerParticipation"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password"); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired(); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithOne("AfterSolution") - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("SolutionFiles") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany() - .HasForeignKey("TemplateFileId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("CustomTestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("AfterTestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("TestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("AfterTestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20181001151109_maxCustomTests.cs b/src/ClientServer/Migrations/20181001151109_maxCustomTests.cs deleted file mode 100755 index 1d0499ede4b6a6aa15103f94b4943322e214e1af..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20181001151109_maxCustomTests.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class maxCustomTests : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn<int>( - name: "MaxCustomTestsPerParticipation", - table: "SystemSettings", - nullable: false, - defaultValue: 10); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "MaxCustomTestsPerParticipation", - table: "SystemSettings"); - } - } -} diff --git a/src/ClientServer/Migrations/20181004180755_csrfToken.Designer.cs b/src/ClientServer/Migrations/20181004180755_csrfToken.Designer.cs deleted file mode 100755 index 4328f7b958691af483ff349d7702677a95a6e65f..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20181004180755_csrfToken.Designer.cs +++ /dev/null @@ -1,1831 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20181004180755_csrfToken")] - partial class csrfToken - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.ContentType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Type"); - - b.HasKey("Id"); - - b.ToTable("ContentTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .IsUnique(); - - b.ToTable("AfterSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("AfterSolutionId"); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("AfterSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl"); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName"); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<bool>("IsOnlyVisibleToOwner"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<string>("ShortDescription"); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired(); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note"); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent"); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors"); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("TemplateFileId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description"); - - b.Property<string>("DisplayName"); - - b.Property<string>("HtmlBackgroundColor"); - - b.Property<string>("HtmlColor"); - - b.Property<string>("HtmlIcon"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut"); - - b.Property<string>("Language"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CsrfToken"); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret"); - - b.Property<string>("UserAuthToken"); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired(); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeGroupData"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<bool>("CanSeeOtherMembers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme"); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeGroups"); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxCustomTestsPerParticipation"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password"); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired(); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithOne("AfterSolution") - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("SolutionFiles") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany() - .HasForeignKey("TemplateFileId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("CustomTestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("AfterTestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("TestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("AfterTestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20181004180755_csrfToken.cs b/src/ClientServer/Migrations/20181004180755_csrfToken.cs deleted file mode 100755 index 6dbd0917e8b11cc3d05bb7dc85c3a1d7402fb3c7..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20181004180755_csrfToken.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class csrfToken : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn<string>( - name: "CsrfToken", - table: "AuthTokens", - nullable: true); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "CsrfToken", - table: "AuthTokens"); - } - } -} diff --git a/src/ClientServer/Migrations/20181008183904_UserSettingsAllowRemoveLang.Designer.cs b/src/ClientServer/Migrations/20181008183904_UserSettingsAllowRemoveLang.Designer.cs deleted file mode 100755 index 99411d81300be536b1f0da45739fafbbe303ac98..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20181008183904_UserSettingsAllowRemoveLang.Designer.cs +++ /dev/null @@ -1,1831 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20181008183904_UserSettingsAllowRemoveLang")] - partial class UserSettingsAllowRemoveLang - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.ContentType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Type"); - - b.HasKey("Id"); - - b.ToTable("ContentTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .IsUnique(); - - b.ToTable("AfterSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("AfterSolutionId"); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("AfterSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl"); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName"); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<bool>("IsOnlyVisibleToOwner"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<string>("ShortDescription"); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired(); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note"); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent"); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors"); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("TemplateFileId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description"); - - b.Property<string>("DisplayName"); - - b.Property<string>("HtmlBackgroundColor"); - - b.Property<string>("HtmlColor"); - - b.Property<string>("HtmlIcon"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut"); - - b.Property<string>("Language"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CsrfToken"); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret"); - - b.Property<string>("UserAuthToken"); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired(); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeGroupData"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<bool>("CanSeeOtherMembers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme"); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeGroups"); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxCustomTestsPerParticipation"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password"); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired(); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithOne("AfterSolution") - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("SolutionFiles") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany() - .HasForeignKey("TemplateFileId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("CustomTestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("AfterTestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("TestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("AfterTestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20181008183904_UserSettingsAllowRemoveLang.cs b/src/ClientServer/Migrations/20181008183904_UserSettingsAllowRemoveLang.cs deleted file mode 100755 index 82f40e2602e091a62558f07fe0ecc1a8b45f06da..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20181008183904_UserSettingsAllowRemoveLang.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class UserSettingsAllowRemoveLang : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AlterColumn<int>( - name: "LangId", - table: "UserSettingses", - nullable: true); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.AlterColumn<int>( - name: "LangId", - table: "UserSettingses", - nullable: false); - } - } -} diff --git a/src/ClientServer/Migrations/20181011102314_removedSystemPermissionCanEditGroup.Designer.cs b/src/ClientServer/Migrations/20181011102314_removedSystemPermissionCanEditGroup.Designer.cs deleted file mode 100755 index 0ab752370f19267360fe2c67c01bf0df7a7251ab..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20181011102314_removedSystemPermissionCanEditGroup.Designer.cs +++ /dev/null @@ -1,1829 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20181011102314_removedSystemPermissionCanEditGroup")] - partial class removedSystemPermissionCanEditGroup - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.ContentType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Type"); - - b.HasKey("Id"); - - b.ToTable("ContentTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .IsUnique(); - - b.ToTable("AfterSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("AfterSolutionId"); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("AfterSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl"); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName"); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<bool>("IsOnlyVisibleToOwner"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<string>("ShortDescription"); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired(); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note"); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note"); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent"); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors"); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("TemplateFileId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol"); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description"); - - b.Property<string>("DisplayName"); - - b.Property<string>("HtmlBackgroundColor"); - - b.Property<string>("HtmlColor"); - - b.Property<string>("HtmlIcon"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName"); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType"); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut"); - - b.Property<string>("Language"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("InternalName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CsrfToken"); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret"); - - b.Property<string>("UserAuthToken"); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired(); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeGroupData"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<bool>("CanSeeOtherMembers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme"); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxCustomTestsPerParticipation"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email"); - - b.Property<string>("FirstName"); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password"); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired(); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName"); - - b.Property<string>("Email"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithOne("AfterSolution") - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("SolutionFiles") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany() - .HasForeignKey("TemplateFileId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("CustomTestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("AfterTestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("TestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("AfterTestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20181011102314_removedSystemPermissionCanEditGroup.cs b/src/ClientServer/Migrations/20181011102314_removedSystemPermissionCanEditGroup.cs deleted file mode 100755 index b4ea33c0d0a8cae65f7e7297b1ca52711a156eb9..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20181011102314_removedSystemPermissionCanEditGroup.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class removedSystemPermissionCanEditGroup : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "CanChangeGroups", - table: "SystemRolePermissions"); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn<bool>( - name: "CanChangeGroups", - table: "SystemRolePermissions", - nullable: false, - defaultValue: false); - } - } -} diff --git a/src/ClientServer/Migrations/20181012124603_SetStringMaxLengths.Designer.cs b/src/ClientServer/Migrations/20181012124603_SetStringMaxLengths.Designer.cs deleted file mode 100755 index 3539a26a1cdd176c5dc092cd11983547fd020b31..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20181012124603_SetStringMaxLengths.Designer.cs +++ /dev/null @@ -1,1882 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20181012124603_SetStringMaxLengths")] - partial class SetStringMaxLengths - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .IsUnique(); - - b.ToTable("AfterSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("AfterSolutionId"); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("AfterSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl") - .HasMaxLength(500); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<bool>("IsOnlyVisibleToOwner"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<string>("ShortDescription") - .HasMaxLength(500); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired() - .HasMaxLength(500); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent") - .HasMaxLength(1000); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors") - .HasMaxLength(1000); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("TemplateFileId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description") - .HasMaxLength(500); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("HtmlBackgroundColor") - .HasMaxLength(500); - - b.Property<string>("HtmlColor") - .HasMaxLength(500); - - b.Property<string>("HtmlIcon") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut") - .HasMaxLength(500); - - b.Property<string>("Language") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CsrfToken") - .HasMaxLength(500); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret") - .HasMaxLength(500); - - b.Property<string>("UserAuthToken") - .HasMaxLength(500); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeGroupData"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<bool>("CanSeeOtherMembers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxCustomTestsPerParticipation"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password") - .HasMaxLength(500); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithOne("AfterSolution") - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("SolutionFiles") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany() - .HasForeignKey("TemplateFileId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("CustomTestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("AfterTestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("TestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("AfterTestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20181012124603_SetStringMaxLengths.cs b/src/ClientServer/Migrations/20181012124603_SetStringMaxLengths.cs deleted file mode 100755 index 0bcfe4d35574fa4fe068fdd246e939b0c0aa8ee8..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20181012124603_SetStringMaxLengths.cs +++ /dev/null @@ -1,792 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class SetStringMaxLengths : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "ContentTypes"); - - migrationBuilder.AlterColumn<string>( - name: "Email", - table: "UserGroups", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "DisplayName", - table: "UserGroups", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Token", - table: "Users", - maxLength: 500, - nullable: false); - - migrationBuilder.AlterColumn<string>( - name: "Password", - table: "Users", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "LastName", - table: "Users", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "FirstName", - table: "Users", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Email", - table: "Users", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Email", - table: "SystemRoles", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "DisplayName", - table: "SystemRoles", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Theme", - table: "UserSettingses", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Theme", - table: "CodeEditorSettings", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "DisplayName", - table: "GroupRoles", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Token", - table: "ExternalUsers", - maxLength: 500, - nullable: false); - - migrationBuilder.AlterColumn<string>( - name: "LastName", - table: "ExternalUsers", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "FirstName", - table: "ExternalUsers", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Email", - table: "ExternalUsers", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "UserAuthToken", - table: "AuthTokens", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "RandomSecret", - table: "AuthTokens", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "CsrfToken", - table: "AuthTokens", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "InternalName", - table: "PLangs", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "DisplayName", - table: "PLangs", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Language", - table: "Langs", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "LangShortcut", - table: "Langs", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "InternalName", - table: "TestTypes", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "DisplayName", - table: "TestTypes", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "MimeType", - table: "TestAssets", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "DisplayName", - table: "TestAssets", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "DisplayName", - table: "Tests", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Content", - table: "Tests", - maxLength: 5000, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "MimeType", - table: "CustomTestAssets", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "DisplayName", - table: "CustomTestAssets", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "DisplayName", - table: "CustomTest", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Content", - table: "CustomTest", - maxLength: 5000, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "FileNameWithExtension", - table: "TemplateFiles", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Content", - table: "TemplateFiles", - maxLength: 10000, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "HtmlIcon", - table: "Tags", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "HtmlColor", - table: "Tags", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "HtmlBackgroundColor", - table: "Tags", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "DisplayName", - table: "Tags", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Description", - table: "Tags", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Protocol", - table: "TestWithSingleSolutionAsTestResult", - maxLength: 10000, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "FileNameWithExtension", - table: "SolutionFiles", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Content", - table: "SolutionFiles", - maxLength: 10000, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "NoteForOtherTutors", - table: "SolutionAssessment", - maxLength: 1000, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "FeedbackForStudent", - table: "SolutionAssessment", - maxLength: 1000, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Note", - table: "Solutions", - maxLength: 1000, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Protocol", - table: "CustomTestWithSingleSolutionAsTestResult", - maxLength: 10000, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Note", - table: "ExerciseReleases", - maxLength: 1000, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "GeneratedCode", - table: "ExerciseReleases", - maxLength: 500, - nullable: false); - - migrationBuilder.AlterColumn<string>( - name: "Content", - table: "ExerciseDescriptions", - maxLength: 10000, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "ShortDescription", - table: "Exercises", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Note", - table: "Exercises", - maxLength: 1000, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "DisplayName", - table: "Exercises", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "MimeType", - table: "Assets", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "DisplayName", - table: "Assets", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "AssetUrl", - table: "Assets", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Protocol", - table: "TestWithAfterSolutionAsTestResults", - maxLength: 10000, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Protocol", - table: "CustomTestWithAfterSolutionAsTestResults", - maxLength: 10000, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "FileNameWithExtension", - table: "AfterSolutionFiles", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Content", - table: "AfterSolutionFiles", - maxLength: 10000, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Protocol", - table: "CustomProjectTestWithSolutionAsTestResults", - maxLength: 10000, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "MimeType", - table: "CustomProjectTestAssets", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "DisplayName", - table: "CustomProjectTestAssets", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "DisplayName", - table: "CustomProjectTests", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Content", - table: "CustomProjectTests", - maxLength: 5000, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "FileNameWithExtension", - table: "CustomProjectSolutionFiles", - maxLength: 500, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Content", - table: "CustomProjectSolutionFiles", - maxLength: 10000, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Content", - table: "CustomProjectDescriptions", - maxLength: 10000, - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "DisplayName", - table: "CustomProjects", - maxLength: 500, - nullable: true); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "ContentTypes", - columns: table => new - { - Id = table.Column<int>(nullable: false) - .Annotation("Npgsql:ValueGeneratedOnAdd", true), - CreatedAt = table.Column<DateTime>(nullable: false), - LastUpdatedAt = table.Column<DateTime>(nullable: false), - Type = table.Column<string>(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_ContentTypes", x => x.Id); - }); - - migrationBuilder.AlterColumn<string>( - name: "Email", - table: "UserGroups", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "DisplayName", - table: "UserGroups", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Token", - table: "Users", - nullable: false); - - migrationBuilder.AlterColumn<string>( - name: "Password", - table: "Users", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "LastName", - table: "Users", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "FirstName", - table: "Users", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Email", - table: "Users", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Email", - table: "SystemRoles", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "DisplayName", - table: "SystemRoles", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Theme", - table: "UserSettingses", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Theme", - table: "CodeEditorSettings", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "DisplayName", - table: "GroupRoles", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Token", - table: "ExternalUsers", - nullable: false); - - migrationBuilder.AlterColumn<string>( - name: "LastName", - table: "ExternalUsers", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "FirstName", - table: "ExternalUsers", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Email", - table: "ExternalUsers", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "UserAuthToken", - table: "AuthTokens", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "RandomSecret", - table: "AuthTokens", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "CsrfToken", - table: "AuthTokens", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "InternalName", - table: "PLangs", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "DisplayName", - table: "PLangs", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Language", - table: "Langs", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "LangShortcut", - table: "Langs", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "InternalName", - table: "TestTypes", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "DisplayName", - table: "TestTypes", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "MimeType", - table: "TestAssets", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "DisplayName", - table: "TestAssets", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "DisplayName", - table: "Tests", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Content", - table: "Tests", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "MimeType", - table: "CustomTestAssets", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "DisplayName", - table: "CustomTestAssets", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "DisplayName", - table: "CustomTest", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Content", - table: "CustomTest", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "FileNameWithExtension", - table: "TemplateFiles", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Content", - table: "TemplateFiles", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "HtmlIcon", - table: "Tags", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "HtmlColor", - table: "Tags", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "HtmlBackgroundColor", - table: "Tags", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "DisplayName", - table: "Tags", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Description", - table: "Tags", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Protocol", - table: "TestWithSingleSolutionAsTestResult", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "FileNameWithExtension", - table: "SolutionFiles", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Content", - table: "SolutionFiles", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "NoteForOtherTutors", - table: "SolutionAssessment", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "FeedbackForStudent", - table: "SolutionAssessment", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Note", - table: "Solutions", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Protocol", - table: "CustomTestWithSingleSolutionAsTestResult", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Note", - table: "ExerciseReleases", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "GeneratedCode", - table: "ExerciseReleases", - nullable: false); - - migrationBuilder.AlterColumn<string>( - name: "Content", - table: "ExerciseDescriptions", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "ShortDescription", - table: "Exercises", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Note", - table: "Exercises", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "DisplayName", - table: "Exercises", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "MimeType", - table: "Assets", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "DisplayName", - table: "Assets", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "AssetUrl", - table: "Assets", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Protocol", - table: "TestWithAfterSolutionAsTestResults", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Protocol", - table: "CustomTestWithAfterSolutionAsTestResults", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "FileNameWithExtension", - table: "AfterSolutionFiles", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Content", - table: "AfterSolutionFiles", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Protocol", - table: "CustomProjectTestWithSolutionAsTestResults", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "MimeType", - table: "CustomProjectTestAssets", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "DisplayName", - table: "CustomProjectTestAssets", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "DisplayName", - table: "CustomProjectTests", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Content", - table: "CustomProjectTests", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "FileNameWithExtension", - table: "CustomProjectSolutionFiles", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Content", - table: "CustomProjectSolutionFiles", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "Content", - table: "CustomProjectDescriptions", - nullable: true); - - migrationBuilder.AlterColumn<string>( - name: "DisplayName", - table: "CustomProjects", - nullable: true); - } - } -} diff --git a/src/ClientServer/Migrations/20181026193143_ServerMessage.Designer.cs b/src/ClientServer/Migrations/20181026193143_ServerMessage.Designer.cs deleted file mode 100755 index a7bc0a9faae7f1a89c364b1fd284b721370a42cd..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20181026193143_ServerMessage.Designer.cs +++ /dev/null @@ -1,1885 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20181026193143_ServerMessage")] - partial class ServerMessage - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .IsUnique(); - - b.ToTable("AfterSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("AfterSolutionId"); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("AfterSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl") - .HasMaxLength(500); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<bool>("IsOnlyVisibleToOwner"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<string>("ShortDescription") - .HasMaxLength(500); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired() - .HasMaxLength(500); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent") - .HasMaxLength(1000); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors") - .HasMaxLength(1000); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("TemplateFileId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description") - .HasMaxLength(500); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("HtmlBackgroundColor") - .HasMaxLength(500); - - b.Property<string>("HtmlColor") - .HasMaxLength(500); - - b.Property<string>("HtmlIcon") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut") - .HasMaxLength(500); - - b.Property<string>("Language") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CsrfToken") - .HasMaxLength(500); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret") - .HasMaxLength(500); - - b.Property<string>("UserAuthToken") - .HasMaxLength(500); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeGroupData"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<bool>("CanSeeOtherMembers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CurrentServerMessage") - .HasMaxLength(1000); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxCustomTestsPerParticipation"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password") - .HasMaxLength(500); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithOne("AfterSolution") - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("SolutionFiles") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany() - .HasForeignKey("TemplateFileId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("CustomTestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("AfterTestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("TestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("AfterTestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20181026193143_ServerMessage.cs b/src/ClientServer/Migrations/20181026193143_ServerMessage.cs deleted file mode 100755 index 9adb661c2e6258e1a0e3fc2152cdbcb67bc15bb9..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20181026193143_ServerMessage.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class ServerMessage : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn<string>( - name: "CurrentServerMessage", - table: "SystemSettings", - maxLength: 1000, - nullable: true); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "CurrentServerMessage", - table: "SystemSettings"); - } - } -} diff --git a/src/ClientServer/Migrations/20181027121021_ParticipationLockSolutionsFlag.Designer.cs b/src/ClientServer/Migrations/20181027121021_ParticipationLockSolutionsFlag.Designer.cs deleted file mode 100755 index f8b75779ff0bcf8acde2ac556a59905dd212f2c9..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20181027121021_ParticipationLockSolutionsFlag.Designer.cs +++ /dev/null @@ -1,1887 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20181027121021_ParticipationLockSolutionsFlag")] - partial class ParticipationLockSolutionsFlag - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .IsUnique(); - - b.ToTable("AfterSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("AfterSolutionId"); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("AfterSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl") - .HasMaxLength(500); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<bool>("IsOnlyVisibleToOwner"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<string>("ShortDescription") - .HasMaxLength(500); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired() - .HasMaxLength(500); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("LockSolutions"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent") - .HasMaxLength(1000); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors") - .HasMaxLength(1000); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("TemplateFileId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description") - .HasMaxLength(500); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("HtmlBackgroundColor") - .HasMaxLength(500); - - b.Property<string>("HtmlColor") - .HasMaxLength(500); - - b.Property<string>("HtmlIcon") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut") - .HasMaxLength(500); - - b.Property<string>("Language") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CsrfToken") - .HasMaxLength(500); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret") - .HasMaxLength(500); - - b.Property<string>("UserAuthToken") - .HasMaxLength(500); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeGroupData"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<bool>("CanSeeOtherMembers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CurrentServerMessage") - .HasMaxLength(1000); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxCustomTestsPerParticipation"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password") - .HasMaxLength(500); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithOne("AfterSolution") - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("SolutionFiles") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany() - .HasForeignKey("TemplateFileId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("CustomTestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("AfterTestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("TestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("AfterTestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20181027121021_ParticipationLockSolutionsFlag.cs b/src/ClientServer/Migrations/20181027121021_ParticipationLockSolutionsFlag.cs deleted file mode 100755 index 00ee35f69afd51dca85981068478eb8d2dfd1fe0..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20181027121021_ParticipationLockSolutionsFlag.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class ParticipationLockSolutionsFlag : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn<bool>( - name: "LockSolutions", - table: "ExerciseReleaseWithUserAsParticipations", - nullable: false, - defaultValue: false); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "LockSolutions", - table: "ExerciseReleaseWithUserAsParticipations"); - } - } -} diff --git a/src/ClientServer/Migrations/20181027122426_ParticipationLockSolutionsFlag2.Designer.cs b/src/ClientServer/Migrations/20181027122426_ParticipationLockSolutionsFlag2.Designer.cs deleted file mode 100755 index 9b118584e91ce42d955c6160f62c2ee83930d5a9..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20181027122426_ParticipationLockSolutionsFlag2.Designer.cs +++ /dev/null @@ -1,1887 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20181027122426_ParticipationLockSolutionsFlag2")] - partial class ParticipationLockSolutionsFlag2 - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .IsUnique(); - - b.ToTable("AfterSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("AfterSolutionId"); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("AfterSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl") - .HasMaxLength(500); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<bool>("IsOnlyVisibleToOwner"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<string>("ShortDescription") - .HasMaxLength(500); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired() - .HasMaxLength(500); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("LockSolutionsFlag"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent") - .HasMaxLength(1000); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors") - .HasMaxLength(1000); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("TemplateFileId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description") - .HasMaxLength(500); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("HtmlBackgroundColor") - .HasMaxLength(500); - - b.Property<string>("HtmlColor") - .HasMaxLength(500); - - b.Property<string>("HtmlIcon") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut") - .HasMaxLength(500); - - b.Property<string>("Language") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CsrfToken") - .HasMaxLength(500); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret") - .HasMaxLength(500); - - b.Property<string>("UserAuthToken") - .HasMaxLength(500); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeGroupData"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<bool>("CanSeeOtherMembers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CurrentServerMessage") - .HasMaxLength(1000); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxCustomTestsPerParticipation"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password") - .HasMaxLength(500); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithOne("AfterSolution") - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("SolutionFiles") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany() - .HasForeignKey("TemplateFileId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("CustomTestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("AfterTestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("TestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("AfterTestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20181027122426_ParticipationLockSolutionsFlag2.cs b/src/ClientServer/Migrations/20181027122426_ParticipationLockSolutionsFlag2.cs deleted file mode 100755 index f07b0b0a603f6b33a7050db4868cc5b78633cea8..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20181027122426_ParticipationLockSolutionsFlag2.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class ParticipationLockSolutionsFlag2 : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.RenameColumn( - name: "LockSolutions", - table: "ExerciseReleaseWithUserAsParticipations", - newName: "LockSolutionsFlag" - ); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.RenameColumn( - name: "LockSolutionsFlag", - table: "ExerciseReleaseWithUserAsParticipations", - newName: "LockSolutions" - ); - } - } -} diff --git a/src/ClientServer/Migrations/20181123151602_StoreAssessmentErrors.Designer.cs b/src/ClientServer/Migrations/20181123151602_StoreAssessmentErrors.Designer.cs deleted file mode 100755 index 120d92db1ada24159f0b6ae7586e917fb76ecd8f..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20181123151602_StoreAssessmentErrors.Designer.cs +++ /dev/null @@ -1,1890 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20181123151602_StoreAssessmentErrors")] - partial class StoreAssessmentErrors - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .IsUnique(); - - b.ToTable("AfterSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("AfterSolutionId"); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("AfterSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl") - .HasMaxLength(500); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<bool>("IsOnlyVisibleToOwner"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<string>("ShortDescription") - .HasMaxLength(500); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired() - .HasMaxLength(500); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("LockSolutionsFlag"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent") - .HasMaxLength(1000); - - b.Property<string>("LastAssessmentErrorMessage") - .HasMaxLength(5000); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors") - .HasMaxLength(1000); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("TemplateFileId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description") - .HasMaxLength(500); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("HtmlBackgroundColor") - .HasMaxLength(500); - - b.Property<string>("HtmlColor") - .HasMaxLength(500); - - b.Property<string>("HtmlIcon") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut") - .HasMaxLength(500); - - b.Property<string>("Language") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CsrfToken") - .HasMaxLength(500); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret") - .HasMaxLength(500); - - b.Property<string>("UserAuthToken") - .HasMaxLength(500); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeGroupData"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<bool>("CanSeeOtherMembers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CurrentServerMessage") - .HasMaxLength(1000); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxCustomTestsPerParticipation"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password") - .HasMaxLength(500); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithOne("AfterSolution") - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("SolutionFiles") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany() - .HasForeignKey("TemplateFileId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("CustomTestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("AfterTestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("TestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("AfterTestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20181123151602_StoreAssessmentErrors.cs b/src/ClientServer/Migrations/20181123151602_StoreAssessmentErrors.cs deleted file mode 100755 index 9c5646368771082578f9c934d3ae88352aa72ac1..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20181123151602_StoreAssessmentErrors.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class StoreAssessmentErrors : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn<string>( - name: "LastAssessmentErrorMessage", - table: "SolutionAssessment", - maxLength: 5000, - nullable: true); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "LastAssessmentErrorMessage", - table: "SolutionAssessment"); - } - } -} diff --git a/src/ClientServer/Migrations/20190202125311_MoreExamOptions.Designer.cs b/src/ClientServer/Migrations/20190202125311_MoreExamOptions.Designer.cs deleted file mode 100755 index 02fce0ae6d4d92fe0fe289c6c0fd706b4bbaa9de..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190202125311_MoreExamOptions.Designer.cs +++ /dev/null @@ -1,1896 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20190202125311_MoreExamOptions")] - partial class MoreExamOptions - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .IsUnique(); - - b.ToTable("AfterSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("AfterSolutionId"); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("AfterSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl") - .HasMaxLength(500); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<bool>("IsOnlyVisibleToOwner"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<string>("ShortDescription") - .HasMaxLength(500); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired() - .HasMaxLength(500); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideExerciseLeaveActions"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HidePrintOptions"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.Property<bool>("ShowAdditionalLogButton"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("LockSolutionsFlag"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent") - .HasMaxLength(1000); - - b.Property<string>("LastAssessmentErrorMessage") - .HasMaxLength(5000); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors") - .HasMaxLength(1000); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("TemplateFileId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description") - .HasMaxLength(500); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("HtmlBackgroundColor") - .HasMaxLength(500); - - b.Property<string>("HtmlColor") - .HasMaxLength(500); - - b.Property<string>("HtmlIcon") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut") - .HasMaxLength(500); - - b.Property<string>("Language") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CsrfToken") - .HasMaxLength(500); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret") - .HasMaxLength(500); - - b.Property<string>("UserAuthToken") - .HasMaxLength(500); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeGroupData"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<bool>("CanSeeOtherMembers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CurrentServerMessage") - .HasMaxLength(1000); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxCustomTestsPerParticipation"); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password") - .HasMaxLength(500); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithOne("AfterSolution") - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("SolutionFiles") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany() - .HasForeignKey("TemplateFileId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("CustomTestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("AfterTestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("TestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("AfterTestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20190202125311_MoreExamOptions.cs b/src/ClientServer/Migrations/20190202125311_MoreExamOptions.cs deleted file mode 100755 index d2d99df476ea6a2c716599af738c252d8471d62d..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190202125311_MoreExamOptions.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class MoreExamOptions : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn<bool>( - name: "HideExerciseLeaveActions", - table: "ExerciseReleases", - nullable: false, - defaultValue: false); - - migrationBuilder.AddColumn<bool>( - name: "HidePrintOptions", - table: "ExerciseReleases", - nullable: false, - defaultValue: false); - - migrationBuilder.AddColumn<bool>( - name: "ShowAdditionalLogButton", - table: "ExerciseReleases", - nullable: false, - defaultValue: false); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "HideExerciseLeaveActions", - table: "ExerciseReleases"); - - migrationBuilder.DropColumn( - name: "HidePrintOptions", - table: "ExerciseReleases"); - - migrationBuilder.DropColumn( - name: "ShowAdditionalLogButton", - table: "ExerciseReleases"); - } - } -} diff --git a/src/ClientServer/Migrations/20190213174200_NewSystemSettings.Designer.cs b/src/ClientServer/Migrations/20190213174200_NewSystemSettings.Designer.cs deleted file mode 100755 index 0d7baf3eca971d147c3afe387ee605ce12cd460b..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190213174200_NewSystemSettings.Designer.cs +++ /dev/null @@ -1,1913 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20190213174200_NewSystemSettings")] - partial class NewSystemSettings - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .IsUnique(); - - b.ToTable("AfterSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("AfterSolutionId"); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("AfterSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl") - .HasMaxLength(500); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<bool>("IsOnlyVisibleToOwner"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<string>("ShortDescription") - .HasMaxLength(500); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired() - .HasMaxLength(500); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideExerciseLeaveActions"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HidePrintOptions"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.Property<bool>("ShowAdditionalLogButton"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("LockSolutionsFlag"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent") - .HasMaxLength(1000); - - b.Property<string>("LastAssessmentErrorMessage") - .HasMaxLength(5000); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors") - .HasMaxLength(1000); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("TemplateFileId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description") - .HasMaxLength(500); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("HtmlBackgroundColor") - .HasMaxLength(500); - - b.Property<string>("HtmlColor") - .HasMaxLength(500); - - b.Property<string>("HtmlIcon") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut") - .HasMaxLength(500); - - b.Property<string>("Language") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CsrfToken") - .HasMaxLength(500); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret") - .HasMaxLength(500); - - b.Property<string>("UserAuthToken") - .HasMaxLength(500); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeGroupData"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<bool>("CanSeeOtherMembers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CurrentServerMessage") - .HasMaxLength(1000); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxCustomTestsPerParticipation"); - - b.Property<int>("MaxNumberOfTestsWithOneRequest"); - - b.Property<int>("MaxNumberOfTestsWithOneRequestSubmitTestServer"); - - b.Property<int>("SubmitTestServerTimeoutInMs"); - - b.Property<string>("SubmitTestServerUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerStatsUrl") - .HasMaxLength(500); - - b.Property<int>("TestServerTimeoutInMs"); - - b.Property<string>("TestServerUrl") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password") - .HasMaxLength(500); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithOne("AfterSolution") - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("SolutionFiles") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany() - .HasForeignKey("TemplateFileId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("CustomTestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("AfterTestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("TestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("AfterTestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20190213174200_NewSystemSettings.cs b/src/ClientServer/Migrations/20190213174200_NewSystemSettings.cs deleted file mode 100755 index 08764ad43d8b9c5bdac4e88cb3b6a384920e47e8..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190213174200_NewSystemSettings.cs +++ /dev/null @@ -1,85 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class NewSystemSettings : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn<int>( - name: "MaxNumberOfTestsWithOneRequest", - table: "SystemSettings", - nullable: false, - defaultValue: 5); - - migrationBuilder.AddColumn<int>( - name: "MaxNumberOfTestsWithOneRequestSubmitTestServer", - table: "SystemSettings", - nullable: false, - defaultValue: 15); - - migrationBuilder.AddColumn<int>( - name: "SubmitTestServerTimeoutInMs", - table: "SystemSettings", - nullable: false, - defaultValue: 15000); - - migrationBuilder.AddColumn<string>( - name: "SubmitTestServerUrl", - table: "SystemSettings", - maxLength: 500, - nullable: true); - - migrationBuilder.AddColumn<string>( - name: "TestServerStatsUrl", - table: "SystemSettings", - maxLength: 500, - nullable: true); - - migrationBuilder.AddColumn<int>( - name: "TestServerTimeoutInMs", - table: "SystemSettings", - nullable: false, - defaultValue: 7000); - - migrationBuilder.AddColumn<string>( - name: "TestServerUrl", - table: "SystemSettings", - maxLength: 500, - nullable: true); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "MaxNumberOfTestsWithOneRequest", - table: "SystemSettings"); - - migrationBuilder.DropColumn( - name: "MaxNumberOfTestsWithOneRequestSubmitTestServer", - table: "SystemSettings"); - - migrationBuilder.DropColumn( - name: "SubmitTestServerTimeoutInMs", - table: "SystemSettings"); - - migrationBuilder.DropColumn( - name: "SubmitTestServerUrl", - table: "SystemSettings"); - - migrationBuilder.DropColumn( - name: "TestServerStatsUrl", - table: "SystemSettings"); - - migrationBuilder.DropColumn( - name: "TestServerTimeoutInMs", - table: "SystemSettings"); - - migrationBuilder.DropColumn( - name: "TestServerUrl", - table: "SystemSettings"); - } - } -} diff --git a/src/ClientServer/Migrations/20190214140941_PLangHighlighting.Designer.cs b/src/ClientServer/Migrations/20190214140941_PLangHighlighting.Designer.cs deleted file mode 100755 index b429996f159a77bade737e92c330bdb3a4fdff03..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190214140941_PLangHighlighting.Designer.cs +++ /dev/null @@ -1,1919 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20190214140941_PLangHighlighting")] - partial class PLangHighlighting - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .IsUnique(); - - b.ToTable("AfterSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("AfterSolutionId"); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("AfterSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl") - .HasMaxLength(500); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<bool>("IsOnlyVisibleToOwner"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<string>("ShortDescription") - .HasMaxLength(500); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired() - .HasMaxLength(500); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideExerciseLeaveActions"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HidePrintOptions"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.Property<bool>("ShowAdditionalLogButton"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("LockSolutionsFlag"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent") - .HasMaxLength(1000); - - b.Property<string>("LastAssessmentErrorMessage") - .HasMaxLength(5000); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors") - .HasMaxLength(1000); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("TemplateFileId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description") - .HasMaxLength(500); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("HtmlBackgroundColor") - .HasMaxLength(500); - - b.Property<string>("HtmlColor") - .HasMaxLength(500); - - b.Property<string>("HtmlIcon") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut") - .HasMaxLength(500); - - b.Property<string>("Language") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("EditorHighlightModeName") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MarkdownHighlightModeName") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CsrfToken") - .HasMaxLength(500); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret") - .HasMaxLength(500); - - b.Property<string>("UserAuthToken") - .HasMaxLength(500); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeGroupData"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<bool>("CanSeeOtherMembers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CurrentServerMessage") - .HasMaxLength(1000); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxCustomTestsPerParticipation"); - - b.Property<int>("MaxNumberOfTestsWithOneRequest"); - - b.Property<int>("MaxNumberOfTestsWithOneRequestSubmitTestServer"); - - b.Property<int>("SubmitTestServerTimeoutInMs"); - - b.Property<string>("SubmitTestServerUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerStatsUrl") - .HasMaxLength(500); - - b.Property<int>("TestServerTimeoutInMs"); - - b.Property<string>("TestServerUrl") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password") - .HasMaxLength(500); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithOne("AfterSolution") - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("SolutionFiles") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany() - .HasForeignKey("TemplateFileId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("CustomTestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("AfterTestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("TestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("AfterTestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20190214140941_PLangHighlighting.cs b/src/ClientServer/Migrations/20190214140941_PLangHighlighting.cs deleted file mode 100755 index 766653fea5be49a9d9c8926b825238b94eff228f..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190214140941_PLangHighlighting.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class PLangHighlighting : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn<string>( - name: "EditorHighlightModeName", - table: "PLangs", - maxLength: 500, - nullable: true); - - migrationBuilder.AddColumn<string>( - name: "MarkdownHighlightModeName", - table: "PLangs", - maxLength: 500, - nullable: true); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "EditorHighlightModeName", - table: "PLangs"); - - migrationBuilder.DropColumn( - name: "MarkdownHighlightModeName", - table: "PLangs"); - } - } -} diff --git a/src/ClientServer/Migrations/20190214151239_PLangFileExtensions.Designer.cs b/src/ClientServer/Migrations/20190214151239_PLangFileExtensions.Designer.cs deleted file mode 100755 index 16e2efe4168c949b831fd962aab9e84abc62ff75..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190214151239_PLangFileExtensions.Designer.cs +++ /dev/null @@ -1,1922 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20190214151239_PLangFileExtensions")] - partial class PLangFileExtensions - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .IsUnique(); - - b.ToTable("AfterSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("AfterSolutionId"); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("AfterSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl") - .HasMaxLength(500); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<bool>("IsOnlyVisibleToOwner"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<string>("ShortDescription") - .HasMaxLength(500); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired() - .HasMaxLength(500); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideExerciseLeaveActions"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HidePrintOptions"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.Property<bool>("ShowAdditionalLogButton"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("LockSolutionsFlag"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent") - .HasMaxLength(1000); - - b.Property<string>("LastAssessmentErrorMessage") - .HasMaxLength(5000); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors") - .HasMaxLength(1000); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("TemplateFileId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description") - .HasMaxLength(500); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("HtmlBackgroundColor") - .HasMaxLength(500); - - b.Property<string>("HtmlColor") - .HasMaxLength(500); - - b.Property<string>("HtmlIcon") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut") - .HasMaxLength(500); - - b.Property<string>("Language") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("EditorHighlightModeName") - .HasMaxLength(500); - - b.Property<string>("FileExtensionsWithDot") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MarkdownHighlightModeName") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CsrfToken") - .HasMaxLength(500); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret") - .HasMaxLength(500); - - b.Property<string>("UserAuthToken") - .HasMaxLength(500); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeGroupData"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<bool>("CanSeeOtherMembers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CurrentServerMessage") - .HasMaxLength(1000); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxCustomTestsPerParticipation"); - - b.Property<int>("MaxNumberOfTestsWithOneRequest"); - - b.Property<int>("MaxNumberOfTestsWithOneRequestSubmitTestServer"); - - b.Property<int>("SubmitTestServerTimeoutInMs"); - - b.Property<string>("SubmitTestServerUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerStatsUrl") - .HasMaxLength(500); - - b.Property<int>("TestServerTimeoutInMs"); - - b.Property<string>("TestServerUrl") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password") - .HasMaxLength(500); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithOne("AfterSolution") - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("SolutionFiles") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany() - .HasForeignKey("TemplateFileId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("CustomTestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("AfterTestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("TestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("AfterTestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20190214151239_PLangFileExtensions.cs b/src/ClientServer/Migrations/20190214151239_PLangFileExtensions.cs deleted file mode 100755 index abd0b3886607a7adff17a84b2d07eb9eaba51ac4..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190214151239_PLangFileExtensions.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class PLangFileExtensions : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn<string>( - name: "FileExtensionsWithDot", - table: "PLangs", - maxLength: 500, - nullable: true); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "FileExtensionsWithDot", - table: "PLangs"); - } - } -} diff --git a/src/ClientServer/Migrations/20190214202737_RemovedUnusedPlangMarkdownMode.Designer.cs b/src/ClientServer/Migrations/20190214202737_RemovedUnusedPlangMarkdownMode.Designer.cs deleted file mode 100755 index 4b20cd77932849279a5964a4dd2ed8474584e3ef..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190214202737_RemovedUnusedPlangMarkdownMode.Designer.cs +++ /dev/null @@ -1,1919 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20190214202737_RemovedUnusedPlangMarkdownMode")] - partial class RemovedUnusedPlangMarkdownMode - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .IsUnique(); - - b.ToTable("AfterSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("AfterSolutionId"); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("AfterSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl") - .HasMaxLength(500); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<bool>("IsOnlyVisibleToOwner"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<string>("ShortDescription") - .HasMaxLength(500); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired() - .HasMaxLength(500); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideExerciseLeaveActions"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HidePrintOptions"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.Property<bool>("ShowAdditionalLogButton"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("LockSolutionsFlag"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent") - .HasMaxLength(1000); - - b.Property<string>("LastAssessmentErrorMessage") - .HasMaxLength(5000); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors") - .HasMaxLength(1000); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("TemplateFileId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description") - .HasMaxLength(500); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("HtmlBackgroundColor") - .HasMaxLength(500); - - b.Property<string>("HtmlColor") - .HasMaxLength(500); - - b.Property<string>("HtmlIcon") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut") - .HasMaxLength(500); - - b.Property<string>("Language") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("EditorHighlightModeName") - .HasMaxLength(500); - - b.Property<string>("FileExtensionsWithDot") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CsrfToken") - .HasMaxLength(500); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret") - .HasMaxLength(500); - - b.Property<string>("UserAuthToken") - .HasMaxLength(500); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeGroupData"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<bool>("CanSeeOtherMembers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CurrentServerMessage") - .HasMaxLength(1000); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxCustomTestsPerParticipation"); - - b.Property<int>("MaxNumberOfTestsWithOneRequest"); - - b.Property<int>("MaxNumberOfTestsWithOneRequestSubmitTestServer"); - - b.Property<int>("SubmitTestServerTimeoutInMs"); - - b.Property<string>("SubmitTestServerUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerStatsUrl") - .HasMaxLength(500); - - b.Property<int>("TestServerTimeoutInMs"); - - b.Property<string>("TestServerUrl") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password") - .HasMaxLength(500); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithOne("AfterSolution") - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("SolutionFiles") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany() - .HasForeignKey("TemplateFileId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("CustomTestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("AfterTestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("TestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("AfterTestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20190214202737_RemovedUnusedPlangMarkdownMode.cs b/src/ClientServer/Migrations/20190214202737_RemovedUnusedPlangMarkdownMode.cs deleted file mode 100755 index b508be0b48704a3700767d17da6f6fb3cceebd61..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190214202737_RemovedUnusedPlangMarkdownMode.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class RemovedUnusedPlangMarkdownMode : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "MarkdownHighlightModeName", - table: "PLangs"); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn<string>( - name: "MarkdownHighlightModeName", - table: "PLangs", - maxLength: 500, - nullable: true); - } - } -} diff --git a/src/ClientServer/Migrations/20190320182329_TestAssetHashes.Designer.cs b/src/ClientServer/Migrations/20190320182329_TestAssetHashes.Designer.cs deleted file mode 100755 index 7b37ac90980d5078da9276bb8bf1c012667ff4ed..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190320182329_TestAssetHashes.Designer.cs +++ /dev/null @@ -1,1928 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20190320182329_TestAssetHashes")] - partial class TestAssetHashes - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .IsUnique(); - - b.ToTable("AfterSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("AfterSolutionId"); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("AfterSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl") - .HasMaxLength(500); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<bool>("IsOnlyVisibleToOwner"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<string>("ShortDescription") - .HasMaxLength(500); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired() - .HasMaxLength(500); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideExerciseLeaveActions"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HidePrintOptions"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.Property<bool>("ShowAdditionalLogButton"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("LockSolutionsFlag"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent") - .HasMaxLength(1000); - - b.Property<string>("LastAssessmentErrorMessage") - .HasMaxLength(5000); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors") - .HasMaxLength(1000); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("TemplateFileId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description") - .HasMaxLength(500); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("HtmlBackgroundColor") - .HasMaxLength(500); - - b.Property<string>("HtmlColor") - .HasMaxLength(500); - - b.Property<string>("HtmlIcon") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut") - .HasMaxLength(500); - - b.Property<string>("Language") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("EditorHighlightModeName") - .HasMaxLength(500); - - b.Property<string>("FileExtensionsWithDot") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CsrfToken") - .HasMaxLength(500); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret") - .HasMaxLength(500); - - b.Property<string>("UserAuthToken") - .HasMaxLength(500); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeGroupData"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<bool>("CanSeeOtherMembers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CurrentServerMessage") - .HasMaxLength(1000); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxCustomTestsPerParticipation"); - - b.Property<int>("MaxNumberOfTestsWithOneRequest"); - - b.Property<int>("MaxNumberOfTestsWithOneRequestSubmitTestServer"); - - b.Property<int>("SubmitTestServerTimeoutInMs"); - - b.Property<string>("SubmitTestServerUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerStatsUrl") - .HasMaxLength(500); - - b.Property<int>("TestServerTimeoutInMs"); - - b.Property<string>("TestServerUrl") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password") - .HasMaxLength(500); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithOne("AfterSolution") - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("SolutionFiles") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany() - .HasForeignKey("TemplateFileId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("CustomTestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("AfterTestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("TestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("AfterTestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20190320182329_TestAssetHashes.cs b/src/ClientServer/Migrations/20190320182329_TestAssetHashes.cs deleted file mode 100755 index edb792b5e1b76da1e62992bba8126d4d22417e56..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190320182329_TestAssetHashes.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class TestAssetHashes : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn<string>( - name: "Hash", - table: "TestAssets", - maxLength: 500, - nullable: true); - - migrationBuilder.AddColumn<string>( - name: "Hash", - table: "CustomTestAssets", - maxLength: 500, - nullable: true); - - migrationBuilder.AddColumn<string>( - name: "Hash", - table: "CustomProjectTestAssets", - maxLength: 500, - nullable: true); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "Hash", - table: "TestAssets"); - - migrationBuilder.DropColumn( - name: "Hash", - table: "CustomTestAssets"); - - migrationBuilder.DropColumn( - name: "Hash", - table: "CustomProjectTestAssets"); - } - } -} diff --git a/src/ClientServer/Migrations/20190329152856_LastEditingIpSolution.Designer.cs b/src/ClientServer/Migrations/20190329152856_LastEditingIpSolution.Designer.cs deleted file mode 100755 index b53f12d47de050a60aeb6efd33807db26ed3be3a..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190329152856_LastEditingIpSolution.Designer.cs +++ /dev/null @@ -1,1931 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20190329152856_LastEditingIpSolution")] - partial class LastEditingIpSolution - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .IsUnique(); - - b.ToTable("AfterSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("AfterSolutionId"); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("AfterSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl") - .HasMaxLength(500); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<bool>("IsOnlyVisibleToOwner"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<string>("ShortDescription") - .HasMaxLength(500); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired() - .HasMaxLength(500); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideExerciseLeaveActions"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HidePrintOptions"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.Property<bool>("ShowAdditionalLogButton"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("LockSolutionsFlag"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LastEditingIpAddress") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent") - .HasMaxLength(1000); - - b.Property<string>("LastAssessmentErrorMessage") - .HasMaxLength(5000); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors") - .HasMaxLength(1000); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("TemplateFileId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description") - .HasMaxLength(500); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("HtmlBackgroundColor") - .HasMaxLength(500); - - b.Property<string>("HtmlColor") - .HasMaxLength(500); - - b.Property<string>("HtmlIcon") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut") - .HasMaxLength(500); - - b.Property<string>("Language") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("EditorHighlightModeName") - .HasMaxLength(500); - - b.Property<string>("FileExtensionsWithDot") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CsrfToken") - .HasMaxLength(500); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret") - .HasMaxLength(500); - - b.Property<string>("UserAuthToken") - .HasMaxLength(500); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeGroupData"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<bool>("CanSeeOtherMembers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CurrentServerMessage") - .HasMaxLength(1000); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxCustomTestsPerParticipation"); - - b.Property<int>("MaxNumberOfTestsWithOneRequest"); - - b.Property<int>("MaxNumberOfTestsWithOneRequestSubmitTestServer"); - - b.Property<int>("SubmitTestServerTimeoutInMs"); - - b.Property<string>("SubmitTestServerUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerStatsUrl") - .HasMaxLength(500); - - b.Property<int>("TestServerTimeoutInMs"); - - b.Property<string>("TestServerUrl") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password") - .HasMaxLength(500); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithOne("AfterSolution") - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("SolutionFiles") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany() - .HasForeignKey("TemplateFileId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("CustomTestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("AfterTestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("TestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("AfterTestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20190329152856_LastEditingIpSolution.cs b/src/ClientServer/Migrations/20190329152856_LastEditingIpSolution.cs deleted file mode 100755 index 548f14f5b881be65f5d380c32aacb145599b3be8..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190329152856_LastEditingIpSolution.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class LastEditingIpSolution : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn<string>( - name: "LastEditingIpAddress", - table: "Solutions", - maxLength: 500, - nullable: true); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "LastEditingIpAddress", - table: "Solutions"); - } - } -} diff --git a/src/ClientServer/Migrations/20190409160808_SystemSettingsTestServerUiUrl.Designer.cs b/src/ClientServer/Migrations/20190409160808_SystemSettingsTestServerUiUrl.Designer.cs deleted file mode 100755 index 5f593603e065f6fce62a3fa48c99ed2976ecaf57..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190409160808_SystemSettingsTestServerUiUrl.Designer.cs +++ /dev/null @@ -1,1934 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20190409160808_SystemSettingsTestServerUiUrl")] - partial class SystemSettingsTestServerUiUrl - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .IsUnique(); - - b.ToTable("AfterSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("AfterSolutionId"); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("AfterSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl") - .HasMaxLength(500); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<bool>("IsOnlyVisibleToOwner"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<string>("ShortDescription") - .HasMaxLength(500); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired() - .HasMaxLength(500); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideExerciseLeaveActions"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HidePrintOptions"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.Property<bool>("ShowAdditionalLogButton"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("LockSolutionsFlag"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LastEditingIpAddress") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent") - .HasMaxLength(1000); - - b.Property<string>("LastAssessmentErrorMessage") - .HasMaxLength(5000); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors") - .HasMaxLength(1000); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("TemplateFileId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description") - .HasMaxLength(500); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("HtmlBackgroundColor") - .HasMaxLength(500); - - b.Property<string>("HtmlColor") - .HasMaxLength(500); - - b.Property<string>("HtmlIcon") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut") - .HasMaxLength(500); - - b.Property<string>("Language") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("EditorHighlightModeName") - .HasMaxLength(500); - - b.Property<string>("FileExtensionsWithDot") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CsrfToken") - .HasMaxLength(500); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret") - .HasMaxLength(500); - - b.Property<string>("UserAuthToken") - .HasMaxLength(500); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeGroupData"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<bool>("CanSeeOtherMembers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CurrentServerMessage") - .HasMaxLength(1000); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxCustomTestsPerParticipation"); - - b.Property<int>("MaxNumberOfTestsWithOneRequest"); - - b.Property<int>("MaxNumberOfTestsWithOneRequestSubmitTestServer"); - - b.Property<int>("SubmitTestServerTimeoutInMs"); - - b.Property<string>("SubmitTestServerUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerConfigUiUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerStatsUrl") - .HasMaxLength(500); - - b.Property<int>("TestServerTimeoutInMs"); - - b.Property<string>("TestServerUrl") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password") - .HasMaxLength(500); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithOne("AfterSolution") - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("SolutionFiles") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany() - .HasForeignKey("TemplateFileId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("CustomTestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("AfterTestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("TestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("AfterTestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20190409160808_SystemSettingsTestServerUiUrl.cs b/src/ClientServer/Migrations/20190409160808_SystemSettingsTestServerUiUrl.cs deleted file mode 100755 index 74a1220b85bb5e5d8fad8af6a2f8a02c9eeaae02..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190409160808_SystemSettingsTestServerUiUrl.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class SystemSettingsTestServerUiUrl : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn<string>( - name: "TestServerConfigUiUrl", - table: "SystemSettings", - maxLength: 500, - nullable: true); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "TestServerConfigUiUrl", - table: "SystemSettings"); - } - } -} diff --git a/src/ClientServer/Migrations/20190410160446_SomeDeleteActionsChanged1.Designer.cs b/src/ClientServer/Migrations/20190410160446_SomeDeleteActionsChanged1.Designer.cs deleted file mode 100755 index fc2af7262625f8290c40bceebcbfc943a56b5e92..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190410160446_SomeDeleteActionsChanged1.Designer.cs +++ /dev/null @@ -1,1926 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20190410160446_SomeDeleteActionsChanged1")] - partial class SomeDeleteActionsChanged1 - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .IsUnique(); - - b.ToTable("AfterSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("AfterSolutionId"); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("AfterSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl") - .HasMaxLength(500); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<bool>("IsOnlyVisibleToOwner"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<string>("ShortDescription") - .HasMaxLength(500); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired() - .HasMaxLength(500); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideExerciseLeaveActions"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HidePrintOptions"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.Property<bool>("ShowAdditionalLogButton"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("LockSolutionsFlag"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LastEditingIpAddress") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent") - .HasMaxLength(1000); - - b.Property<string>("LastAssessmentErrorMessage") - .HasMaxLength(5000); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors") - .HasMaxLength(1000); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("TemplateFileId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description") - .HasMaxLength(500); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("HtmlBackgroundColor") - .HasMaxLength(500); - - b.Property<string>("HtmlColor") - .HasMaxLength(500); - - b.Property<string>("HtmlIcon") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut") - .HasMaxLength(500); - - b.Property<string>("Language") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("EditorHighlightModeName") - .HasMaxLength(500); - - b.Property<string>("FileExtensionsWithDot") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CsrfToken") - .HasMaxLength(500); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret") - .HasMaxLength(500); - - b.Property<string>("UserAuthToken") - .HasMaxLength(500); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeGroupData"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<bool>("CanSeeOtherMembers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CurrentServerMessage") - .HasMaxLength(1000); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxCustomTestsPerParticipation"); - - b.Property<int>("MaxNumberOfTestsWithOneRequest"); - - b.Property<int>("MaxNumberOfTestsWithOneRequestSubmitTestServer"); - - b.Property<int>("SubmitTestServerTimeoutInMs"); - - b.Property<string>("SubmitTestServerUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerConfigUiUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerStatsUrl") - .HasMaxLength(500); - - b.Property<int>("TestServerTimeoutInMs"); - - b.Property<string>("TestServerUrl") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password") - .HasMaxLength(500); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithOne("AfterSolution") - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("SolutionFiles") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany() - .HasForeignKey("TemplateFileId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("CustomTestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("AfterTestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("TestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("AfterTestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId"); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId"); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId"); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId"); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20190410160446_SomeDeleteActionsChanged1.cs b/src/ClientServer/Migrations/20190410160446_SomeDeleteActionsChanged1.cs deleted file mode 100755 index 89eed66ebb561fc2cf50f536a875574cc22776c5..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190410160446_SomeDeleteActionsChanged1.cs +++ /dev/null @@ -1,207 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class SomeDeleteActionsChanged1 : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "FK_Templates_PLangs_PLangId", - table: "Templates"); - - migrationBuilder.DropForeignKey( - name: "FK_ExerciseReleases_PLangs_PLangId", - table: "ExerciseReleases"); - - migrationBuilder.DropForeignKey( - name: "FK_ExerciseReleaseWithUserAsParticipations_PLangs_LastEditedPLangId", - table: "ExerciseReleaseWithUserAsParticipations"); - - migrationBuilder.DropForeignKey( - name: "FK_Solutions_PLangs_PLangId", - table: "Solutions"); - - migrationBuilder.DropForeignKey( - name: "FK_SystemSettings_GroupRoles_DefaultGroupCreatorGroupRoleId", - table: "SystemSettings"); - - migrationBuilder.DropForeignKey( - name: "FK_SystemSettings_GroupRoles_DefaultGroupRoleId", - table: "SystemSettings"); - - migrationBuilder.DropForeignKey( - name: "FK_SystemSettings_UserGroups_DefaultUserGroupId", - table: "SystemSettings"); - - migrationBuilder.DropForeignKey( - name: "FK_UserWithUserGroups_GroupRoles_GroupRoleId", - table: "UserWithUserGroups"); - - migrationBuilder.AddForeignKey( - name: "FK_Templates_PLangs_PLangId", - table: "Templates", - column: "PLangId", - principalTable: "PLangs", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - - migrationBuilder.AddForeignKey( - name: "FK_ExerciseReleases_PLangs_PLangId", - table: "ExerciseReleases", - column: "PLangId", - principalTable: "PLangs", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - - migrationBuilder.AddForeignKey( - name: "FK_ExerciseReleaseWithUserAsParticipations_PLangs_LastEditedPLangId", - table: "ExerciseReleaseWithUserAsParticipations", - column: "LastEditedPLangId", - principalTable: "PLangs", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - - migrationBuilder.AddForeignKey( - name: "FK_Solutions_PLangs_PLangId", - table: "Solutions", - column: "PLangId", - principalTable: "PLangs", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - - migrationBuilder.AddForeignKey( - name: "FK_SystemSettings_GroupRoles_DefaultGroupCreatorGroupRoleId", - table: "SystemSettings", - column: "DefaultGroupCreatorGroupRoleId", - principalTable: "GroupRoles", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - - migrationBuilder.AddForeignKey( - name: "FK_SystemSettings_GroupRoles_DefaultGroupRoleId", - table: "SystemSettings", - column: "DefaultGroupRoleId", - principalTable: "GroupRoles", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - - migrationBuilder.AddForeignKey( - name: "FK_SystemSettings_UserGroups_DefaultUserGroupId", - table: "SystemSettings", - column: "DefaultUserGroupId", - principalTable: "UserGroups", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - - migrationBuilder.AddForeignKey( - name: "FK_UserWithUserGroups_GroupRoles_GroupRoleId", - table: "UserWithUserGroups", - column: "GroupRoleId", - principalTable: "GroupRoles", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "FK_Templates_PLangs_PLangId", - table: "Templates"); - - migrationBuilder.DropForeignKey( - name: "FK_ExerciseReleases_PLangs_PLangId", - table: "ExerciseReleases"); - - migrationBuilder.DropForeignKey( - name: "FK_ExerciseReleaseWithUserAsParticipations_PLangs_LastEditedPLangId", - table: "ExerciseReleaseWithUserAsParticipations"); - - migrationBuilder.DropForeignKey( - name: "FK_Solutions_PLangs_PLangId", - table: "Solutions"); - - migrationBuilder.DropForeignKey( - name: "FK_SystemSettings_GroupRoles_DefaultGroupCreatorGroupRoleId", - table: "SystemSettings"); - - migrationBuilder.DropForeignKey( - name: "FK_SystemSettings_GroupRoles_DefaultGroupRoleId", - table: "SystemSettings"); - - migrationBuilder.DropForeignKey( - name: "FK_SystemSettings_UserGroups_DefaultUserGroupId", - table: "SystemSettings"); - - migrationBuilder.DropForeignKey( - name: "FK_UserWithUserGroups_GroupRoles_GroupRoleId", - table: "UserWithUserGroups"); - - migrationBuilder.AddForeignKey( - name: "FK_Templates_PLangs_PLangId", - table: "Templates", - column: "PLangId", - principalTable: "PLangs", - principalColumn: "Id", - onDelete: ReferentialAction.SetNull); - - migrationBuilder.AddForeignKey( - name: "FK_ExerciseReleases_PLangs_PLangId", - table: "ExerciseReleases", - column: "PLangId", - principalTable: "PLangs", - principalColumn: "Id", - onDelete: ReferentialAction.SetNull); - - migrationBuilder.AddForeignKey( - name: "FK_ExerciseReleaseWithUserAsParticipations_PLangs_LastEditedPLangId", - table: "ExerciseReleaseWithUserAsParticipations", - column: "LastEditedPLangId", - principalTable: "PLangs", - principalColumn: "Id", - onDelete: ReferentialAction.SetNull); - - migrationBuilder.AddForeignKey( - name: "FK_Solutions_PLangs_PLangId", - table: "Solutions", - column: "PLangId", - principalTable: "PLangs", - principalColumn: "Id", - onDelete: ReferentialAction.SetNull); - - migrationBuilder.AddForeignKey( - name: "FK_SystemSettings_GroupRoles_DefaultGroupCreatorGroupRoleId", - table: "SystemSettings", - column: "DefaultGroupCreatorGroupRoleId", - principalTable: "GroupRoles", - principalColumn: "Id", - onDelete: ReferentialAction.SetNull); - - migrationBuilder.AddForeignKey( - name: "FK_SystemSettings_GroupRoles_DefaultGroupRoleId", - table: "SystemSettings", - column: "DefaultGroupRoleId", - principalTable: "GroupRoles", - principalColumn: "Id", - onDelete: ReferentialAction.SetNull); - - migrationBuilder.AddForeignKey( - name: "FK_SystemSettings_UserGroups_DefaultUserGroupId", - table: "SystemSettings", - column: "DefaultUserGroupId", - principalTable: "UserGroups", - principalColumn: "Id", - onDelete: ReferentialAction.SetNull); - - migrationBuilder.AddForeignKey( - name: "FK_UserWithUserGroups_GroupRoles_GroupRoleId", - table: "UserWithUserGroups", - column: "GroupRoleId", - principalTable: "GroupRoles", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - } - } -} diff --git a/src/ClientServer/Migrations/20190419112922_JustRunTimeout.Designer.cs b/src/ClientServer/Migrations/20190419112922_JustRunTimeout.Designer.cs deleted file mode 100755 index 3775fe8fc634057b59a3f117e24abc7feb561760..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190419112922_JustRunTimeout.Designer.cs +++ /dev/null @@ -1,1928 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20190419112922_JustRunTimeout")] - partial class JustRunTimeout - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .IsUnique(); - - b.ToTable("AfterSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("AfterSolutionId"); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("AfterSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl") - .HasMaxLength(500); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<bool>("IsOnlyVisibleToOwner"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<string>("ShortDescription") - .HasMaxLength(500); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired() - .HasMaxLength(500); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideExerciseLeaveActions"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HidePrintOptions"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.Property<bool>("ShowAdditionalLogButton"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("LockSolutionsFlag"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LastEditingIpAddress") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent") - .HasMaxLength(1000); - - b.Property<string>("LastAssessmentErrorMessage") - .HasMaxLength(5000); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors") - .HasMaxLength(1000); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("TemplateFileId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description") - .HasMaxLength(500); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("HtmlBackgroundColor") - .HasMaxLength(500); - - b.Property<string>("HtmlColor") - .HasMaxLength(500); - - b.Property<string>("HtmlIcon") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut") - .HasMaxLength(500); - - b.Property<string>("Language") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("EditorHighlightModeName") - .HasMaxLength(500); - - b.Property<string>("FileExtensionsWithDot") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CsrfToken") - .HasMaxLength(500); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret") - .HasMaxLength(500); - - b.Property<string>("UserAuthToken") - .HasMaxLength(500); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeGroupData"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<bool>("CanSeeOtherMembers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CurrentServerMessage") - .HasMaxLength(1000); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<int>("JustRunProgramTimeoutInMs"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxCustomTestsPerParticipation"); - - b.Property<int>("MaxNumberOfTestsWithOneRequest"); - - b.Property<int>("MaxNumberOfTestsWithOneRequestSubmitTestServer"); - - b.Property<int>("SubmitTestServerTimeoutInMs"); - - b.Property<string>("SubmitTestServerUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerConfigUiUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerStatsUrl") - .HasMaxLength(500); - - b.Property<int>("TestServerTimeoutInMs"); - - b.Property<string>("TestServerUrl") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password") - .HasMaxLength(500); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithOne("AfterSolution") - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("SolutionFiles") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany() - .HasForeignKey("TemplateFileId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("CustomTestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("AfterTestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("TestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("AfterTestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId"); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId"); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId"); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId"); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20190419112922_JustRunTimeout.cs b/src/ClientServer/Migrations/20190419112922_JustRunTimeout.cs deleted file mode 100755 index 11b5883b8c3c6adfdb9acb24f6ccc88262a6272d..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190419112922_JustRunTimeout.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class JustRunTimeout : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn<int>( - name: "JustRunProgramTimeoutInMs", - table: "SystemSettings", - nullable: false, - defaultValue: 1000); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "JustRunProgramTimeoutInMs", - table: "SystemSettings"); - } - } -} diff --git a/src/ClientServer/Migrations/20190419153412_OtherJustRunTestLimits.Designer.cs b/src/ClientServer/Migrations/20190419153412_OtherJustRunTestLimits.Designer.cs deleted file mode 100755 index 1cf2da810d4690f7cdbb207544a14d97dddaef11..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190419153412_OtherJustRunTestLimits.Designer.cs +++ /dev/null @@ -1,1932 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20190419153412_OtherJustRunTestLimits")] - partial class OtherJustRunTestLimits - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .IsUnique(); - - b.ToTable("AfterSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("AfterSolutionId"); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("AfterSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl") - .HasMaxLength(500); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<bool>("IsOnlyVisibleToOwner"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<string>("ShortDescription") - .HasMaxLength(500); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired() - .HasMaxLength(500); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideExerciseLeaveActions"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HidePrintOptions"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.Property<bool>("ShowAdditionalLogButton"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("LockSolutionsFlag"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LastEditingIpAddress") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent") - .HasMaxLength(1000); - - b.Property<string>("LastAssessmentErrorMessage") - .HasMaxLength(5000); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors") - .HasMaxLength(1000); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("TemplateFileId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description") - .HasMaxLength(500); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("HtmlBackgroundColor") - .HasMaxLength(500); - - b.Property<string>("HtmlColor") - .HasMaxLength(500); - - b.Property<string>("HtmlIcon") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut") - .HasMaxLength(500); - - b.Property<string>("Language") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("EditorHighlightModeName") - .HasMaxLength(500); - - b.Property<string>("FileExtensionsWithDot") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CsrfToken") - .HasMaxLength(500); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret") - .HasMaxLength(500); - - b.Property<string>("UserAuthToken") - .HasMaxLength(500); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeGroupData"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<bool>("CanSeeOtherMembers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CurrentServerMessage") - .HasMaxLength(1000); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<int>("JustRunProgramMaxDiskSpaceInKb"); - - b.Property<int>("JustRunProgramMemoryLimitInKb"); - - b.Property<int>("JustRunProgramTimeoutInMs"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxCustomTestsPerParticipation"); - - b.Property<int>("MaxNumberOfTestsWithOneRequest"); - - b.Property<int>("MaxNumberOfTestsWithOneRequestSubmitTestServer"); - - b.Property<int>("SubmitTestServerTimeoutInMs"); - - b.Property<string>("SubmitTestServerUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerConfigUiUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerStatsUrl") - .HasMaxLength(500); - - b.Property<int>("TestServerTimeoutInMs"); - - b.Property<string>("TestServerUrl") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password") - .HasMaxLength(500); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithOne("AfterSolution") - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("SolutionFiles") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany() - .HasForeignKey("TemplateFileId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("CustomTestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("AfterTestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("TestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("AfterTestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId"); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId"); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId"); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId"); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20190419153412_OtherJustRunTestLimits.cs b/src/ClientServer/Migrations/20190419153412_OtherJustRunTestLimits.cs deleted file mode 100755 index 3dd67f34d95c2031a3633fa3d2ac2557bf4aeea4..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190419153412_OtherJustRunTestLimits.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class OtherJustRunTestLimits : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn<int>( - name: "JustRunProgramMaxDiskSpaceInKb", - table: "SystemSettings", - nullable: false, - defaultValue: 1000); - - migrationBuilder.AddColumn<int>( - name: "JustRunProgramMemoryLimitInKb", - table: "SystemSettings", - nullable: false, - defaultValue: 1000); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "JustRunProgramMaxDiskSpaceInKb", - table: "SystemSettings"); - - migrationBuilder.DropColumn( - name: "JustRunProgramMemoryLimitInKb", - table: "SystemSettings"); - } - } -} diff --git a/src/ClientServer/Migrations/20190420100505_CustomProjectTestLimits.Designer.cs b/src/ClientServer/Migrations/20190420100505_CustomProjectTestLimits.Designer.cs deleted file mode 100755 index 3da6ddbb8014ca3d3da7981e62d2fa609716f307..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190420100505_CustomProjectTestLimits.Designer.cs +++ /dev/null @@ -1,1938 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20190420100505_CustomProjectTestLimits")] - partial class CustomProjectTestLimits - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .IsUnique(); - - b.ToTable("AfterSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("AfterSolutionId"); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("AfterSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl") - .HasMaxLength(500); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<bool>("IsOnlyVisibleToOwner"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<string>("ShortDescription") - .HasMaxLength(500); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired() - .HasMaxLength(500); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideExerciseLeaveActions"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HidePrintOptions"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.Property<bool>("ShowAdditionalLogButton"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("LockSolutionsFlag"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LastEditingIpAddress") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent") - .HasMaxLength(1000); - - b.Property<string>("LastAssessmentErrorMessage") - .HasMaxLength(5000); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors") - .HasMaxLength(1000); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("TemplateFileId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<int?>("TestResultCode"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description") - .HasMaxLength(500); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("HtmlBackgroundColor") - .HasMaxLength(500); - - b.Property<string>("HtmlColor") - .HasMaxLength(500); - - b.Property<string>("HtmlIcon") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut") - .HasMaxLength(500); - - b.Property<string>("Language") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("EditorHighlightModeName") - .HasMaxLength(500); - - b.Property<string>("FileExtensionsWithDot") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CsrfToken") - .HasMaxLength(500); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret") - .HasMaxLength(500); - - b.Property<string>("UserAuthToken") - .HasMaxLength(500); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeGroupData"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<bool>("CanSeeOtherMembers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CurrentServerMessage") - .HasMaxLength(1000); - - b.Property<int>("CustomProjectTestMaxDiskSpaceInKb"); - - b.Property<int>("CustomProjectTestMemoryLimitInKb"); - - b.Property<int>("CustomProjectTestTimeoutInMs"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<int>("JustRunProgramMaxDiskSpaceInKb"); - - b.Property<int>("JustRunProgramMemoryLimitInKb"); - - b.Property<int>("JustRunProgramTimeoutInMs"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxCustomTestsPerParticipation"); - - b.Property<int>("MaxNumberOfTestsWithOneRequest"); - - b.Property<int>("MaxNumberOfTestsWithOneRequestSubmitTestServer"); - - b.Property<int>("SubmitTestServerTimeoutInMs"); - - b.Property<string>("SubmitTestServerUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerConfigUiUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerStatsUrl") - .HasMaxLength(500); - - b.Property<int>("TestServerTimeoutInMs"); - - b.Property<string>("TestServerUrl") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password") - .HasMaxLength(500); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithOne("AfterSolution") - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("SolutionFiles") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany() - .HasForeignKey("TemplateFileId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("CustomTestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("AfterTestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("TestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("AfterTestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId"); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId"); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId"); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId"); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20190420100505_CustomProjectTestLimits.cs b/src/ClientServer/Migrations/20190420100505_CustomProjectTestLimits.cs deleted file mode 100755 index fcc366fea0f3d66a45ec8bfa00ae5f88dd404c84..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190420100505_CustomProjectTestLimits.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class CustomProjectTestLimits : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn<int>( - name: "CustomProjectTestMaxDiskSpaceInKb", - table: "SystemSettings", - nullable: false, - defaultValue: 1000); - - migrationBuilder.AddColumn<int>( - name: "CustomProjectTestMemoryLimitInKb", - table: "SystemSettings", - nullable: false, - defaultValue: 1000); - - migrationBuilder.AddColumn<int>( - name: "CustomProjectTestTimeoutInMs", - table: "SystemSettings", - nullable: false, - defaultValue: 1000); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "CustomProjectTestMaxDiskSpaceInKb", - table: "SystemSettings"); - - migrationBuilder.DropColumn( - name: "CustomProjectTestMemoryLimitInKb", - table: "SystemSettings"); - - migrationBuilder.DropColumn( - name: "CustomProjectTestTimeoutInMs", - table: "SystemSettings"); - } - } -} diff --git a/src/ClientServer/Migrations/20190420164845_TestRunningTimes.Designer.cs b/src/ClientServer/Migrations/20190420164845_TestRunningTimes.Designer.cs deleted file mode 100755 index 998a583019fafdcbe68b78d00e22bdea7dd4cc57..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190420164845_TestRunningTimes.Designer.cs +++ /dev/null @@ -1,1988 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20190420164845_TestRunningTimes")] - partial class TestRunningTimes - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .IsUnique(); - - b.ToTable("AfterSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("AfterSolutionId"); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("AfterSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.HasKey("CustomTestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.HasKey("TestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl") - .HasMaxLength(500); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<bool>("IsOnlyVisibleToOwner"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<string>("ShortDescription") - .HasMaxLength(500); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired() - .HasMaxLength(500); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideExerciseLeaveActions"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HidePrintOptions"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.Property<bool>("ShowAdditionalLogButton"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("LockSolutionsFlag"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LastEditingIpAddress") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent") - .HasMaxLength(1000); - - b.Property<string>("LastAssessmentErrorMessage") - .HasMaxLength(5000); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors") - .HasMaxLength(1000); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("TemplateFileId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description") - .HasMaxLength(500); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("HtmlBackgroundColor") - .HasMaxLength(500); - - b.Property<string>("HtmlColor") - .HasMaxLength(500); - - b.Property<string>("HtmlIcon") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut") - .HasMaxLength(500); - - b.Property<string>("Language") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("EditorHighlightModeName") - .HasMaxLength(500); - - b.Property<string>("FileExtensionsWithDot") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CsrfToken") - .HasMaxLength(500); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret") - .HasMaxLength(500); - - b.Property<string>("UserAuthToken") - .HasMaxLength(500); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeGroupData"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<bool>("CanSeeOtherMembers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CurrentServerMessage") - .HasMaxLength(1000); - - b.Property<int>("CustomProjectTestMaxDiskSpaceInKb"); - - b.Property<int>("CustomProjectTestMemoryLimitInKb"); - - b.Property<int>("CustomProjectTestTimeoutInMs"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<int>("JustRunProgramMaxDiskSpaceInKb"); - - b.Property<int>("JustRunProgramMemoryLimitInKb"); - - b.Property<int>("JustRunProgramTimeoutInMs"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxCustomTestsPerParticipation"); - - b.Property<int>("MaxNumberOfTestsWithOneRequest"); - - b.Property<int>("MaxNumberOfTestsWithOneRequestSubmitTestServer"); - - b.Property<int>("SubmitTestServerTimeoutInMs"); - - b.Property<string>("SubmitTestServerUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerConfigUiUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerStatsUrl") - .HasMaxLength(500); - - b.Property<int>("TestServerTimeoutInMs"); - - b.Property<string>("TestServerUrl") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password") - .HasMaxLength(500); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithOne("AfterSolution") - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("SolutionFiles") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany() - .HasForeignKey("TemplateFileId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("CustomTestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("AfterTestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("TestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("AfterTestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId"); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId"); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId"); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId"); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20190420164845_TestRunningTimes.cs b/src/ClientServer/Migrations/20190420164845_TestRunningTimes.cs deleted file mode 100755 index fe49ff407c07843f701bcc67c2d48185f6f6de94..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190420164845_TestRunningTimes.cs +++ /dev/null @@ -1,205 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class TestRunningTimes : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn<string>( - name: "RunnerVersion", - table: "TestWithSingleSolutionAsTestResult", - maxLength: 500, - nullable: true); - - migrationBuilder.AddColumn<string>( - name: "TestServerVersion", - table: "TestWithSingleSolutionAsTestResult", - maxLength: 500, - nullable: true); - - migrationBuilder.AddColumn<int>( - name: "TimeForCompiling", - table: "TestWithSingleSolutionAsTestResult", - nullable: true); - - migrationBuilder.AddColumn<int>( - name: "TimeForUserProgram", - table: "TestWithSingleSolutionAsTestResult", - nullable: true); - - migrationBuilder.AddColumn<string>( - name: "RunnerVersion", - table: "CustomTestWithSingleSolutionAsTestResult", - maxLength: 500, - nullable: true); - - migrationBuilder.AddColumn<string>( - name: "TestServerVersion", - table: "CustomTestWithSingleSolutionAsTestResult", - maxLength: 500, - nullable: true); - - migrationBuilder.AddColumn<int>( - name: "TimeForCompiling", - table: "CustomTestWithSingleSolutionAsTestResult", - nullable: true); - - migrationBuilder.AddColumn<int>( - name: "TimeForUserProgram", - table: "CustomTestWithSingleSolutionAsTestResult", - nullable: true); - - migrationBuilder.AddColumn<string>( - name: "RunnerVersion", - table: "TestWithAfterSolutionAsTestResults", - maxLength: 500, - nullable: true); - - migrationBuilder.AddColumn<string>( - name: "TestServerVersion", - table: "TestWithAfterSolutionAsTestResults", - maxLength: 500, - nullable: true); - - migrationBuilder.AddColumn<int>( - name: "TimeForCompiling", - table: "TestWithAfterSolutionAsTestResults", - nullable: true); - - migrationBuilder.AddColumn<int>( - name: "TimeForUserProgram", - table: "TestWithAfterSolutionAsTestResults", - nullable: true); - - migrationBuilder.AddColumn<string>( - name: "RunnerVersion", - table: "CustomTestWithAfterSolutionAsTestResults", - maxLength: 500, - nullable: true); - - migrationBuilder.AddColumn<string>( - name: "TestServerVersion", - table: "CustomTestWithAfterSolutionAsTestResults", - maxLength: 500, - nullable: true); - - migrationBuilder.AddColumn<int>( - name: "TimeForCompiling", - table: "CustomTestWithAfterSolutionAsTestResults", - nullable: true); - - migrationBuilder.AddColumn<int>( - name: "TimeForUserProgram", - table: "CustomTestWithAfterSolutionAsTestResults", - nullable: true); - - migrationBuilder.AddColumn<string>( - name: "RunnerVersion", - table: "CustomProjectTestWithSolutionAsTestResults", - maxLength: 500, - nullable: true); - - migrationBuilder.AddColumn<string>( - name: "TestServerVersion", - table: "CustomProjectTestWithSolutionAsTestResults", - maxLength: 500, - nullable: true); - - migrationBuilder.AddColumn<int>( - name: "TimeForCompiling", - table: "CustomProjectTestWithSolutionAsTestResults", - nullable: true); - - migrationBuilder.AddColumn<int>( - name: "TimeForUserProgram", - table: "CustomProjectTestWithSolutionAsTestResults", - nullable: true); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "RunnerVersion", - table: "TestWithSingleSolutionAsTestResult"); - - migrationBuilder.DropColumn( - name: "TestServerVersion", - table: "TestWithSingleSolutionAsTestResult"); - - migrationBuilder.DropColumn( - name: "TimeForCompiling", - table: "TestWithSingleSolutionAsTestResult"); - - migrationBuilder.DropColumn( - name: "TimeForUserProgram", - table: "TestWithSingleSolutionAsTestResult"); - - migrationBuilder.DropColumn( - name: "RunnerVersion", - table: "CustomTestWithSingleSolutionAsTestResult"); - - migrationBuilder.DropColumn( - name: "TestServerVersion", - table: "CustomTestWithSingleSolutionAsTestResult"); - - migrationBuilder.DropColumn( - name: "TimeForCompiling", - table: "CustomTestWithSingleSolutionAsTestResult"); - - migrationBuilder.DropColumn( - name: "TimeForUserProgram", - table: "CustomTestWithSingleSolutionAsTestResult"); - - migrationBuilder.DropColumn( - name: "RunnerVersion", - table: "TestWithAfterSolutionAsTestResults"); - - migrationBuilder.DropColumn( - name: "TestServerVersion", - table: "TestWithAfterSolutionAsTestResults"); - - migrationBuilder.DropColumn( - name: "TimeForCompiling", - table: "TestWithAfterSolutionAsTestResults"); - - migrationBuilder.DropColumn( - name: "TimeForUserProgram", - table: "TestWithAfterSolutionAsTestResults"); - - migrationBuilder.DropColumn( - name: "RunnerVersion", - table: "CustomTestWithAfterSolutionAsTestResults"); - - migrationBuilder.DropColumn( - name: "TestServerVersion", - table: "CustomTestWithAfterSolutionAsTestResults"); - - migrationBuilder.DropColumn( - name: "TimeForCompiling", - table: "CustomTestWithAfterSolutionAsTestResults"); - - migrationBuilder.DropColumn( - name: "TimeForUserProgram", - table: "CustomTestWithAfterSolutionAsTestResults"); - - migrationBuilder.DropColumn( - name: "RunnerVersion", - table: "CustomProjectTestWithSolutionAsTestResults"); - - migrationBuilder.DropColumn( - name: "TestServerVersion", - table: "CustomProjectTestWithSolutionAsTestResults"); - - migrationBuilder.DropColumn( - name: "TimeForCompiling", - table: "CustomProjectTestWithSolutionAsTestResults"); - - migrationBuilder.DropColumn( - name: "TimeForUserProgram", - table: "CustomProjectTestWithSolutionAsTestResults"); - } - } -} diff --git a/src/ClientServer/Migrations/20190428191918_MoreTestLimitsAndCompilerTimeout.Designer.cs b/src/ClientServer/Migrations/20190428191918_MoreTestLimitsAndCompilerTimeout.Designer.cs deleted file mode 100755 index a38ef7f93ad59f0c40cc4c9425ee0d850a4766f1..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190428191918_MoreTestLimitsAndCompilerTimeout.Designer.cs +++ /dev/null @@ -1,2016 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20190428191918_MoreTestLimitsAndCompilerTimeout")] - partial class MoreTestLimitsAndCompilerTimeout - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .IsUnique(); - - b.ToTable("AfterSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("AfterSolutionId"); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("AfterSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("CustomTestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("TestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl") - .HasMaxLength(500); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<bool>("IsOnlyVisibleToOwner"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<string>("ShortDescription") - .HasMaxLength(500); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired() - .HasMaxLength(500); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideExerciseLeaveActions"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HidePrintOptions"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.Property<bool>("ShowAdditionalLogButton"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("LockSolutionsFlag"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LastEditingIpAddress") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent") - .HasMaxLength(1000); - - b.Property<string>("LastAssessmentErrorMessage") - .HasMaxLength(5000); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors") - .HasMaxLength(1000); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("TemplateFileId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description") - .HasMaxLength(500); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("HtmlBackgroundColor") - .HasMaxLength(500); - - b.Property<string>("HtmlColor") - .HasMaxLength(500); - - b.Property<string>("HtmlIcon") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CompileTimeoutInMs"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CompileTimeoutInMs"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut") - .HasMaxLength(500); - - b.Property<string>("Language") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("EditorHighlightModeName") - .HasMaxLength(500); - - b.Property<string>("FileExtensionsWithDot") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CsrfToken") - .HasMaxLength(500); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret") - .HasMaxLength(500); - - b.Property<string>("UserAuthToken") - .HasMaxLength(500); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeGroupData"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<bool>("CanSeeOtherMembers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CurrentServerMessage") - .HasMaxLength(1000); - - b.Property<int>("CustomProjectTestCompileTimeoutInMs"); - - b.Property<int>("CustomProjectTestMaxDiskSpaceInKb"); - - b.Property<int>("CustomProjectTestMemoryLimitInKb"); - - b.Property<int>("CustomProjectTestTimeoutInMs"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<int>("JustRunProgramCompileTimeoutInMs"); - - b.Property<int>("JustRunProgramMaxDiskSpaceInKb"); - - b.Property<int>("JustRunProgramMemoryLimitInKb"); - - b.Property<int>("JustRunProgramTimeoutInMs"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxCustomTestsPerParticipation"); - - b.Property<int>("MaxNumberOfTestsWithOneRequest"); - - b.Property<int>("MaxNumberOfTestsWithOneRequestSubmitTestServer"); - - b.Property<int>("SubmitTestServerTimeoutInMs"); - - b.Property<string>("SubmitTestServerUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerConfigUiUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerStatsUrl") - .HasMaxLength(500); - - b.Property<int>("TestServerTimeoutInMs"); - - b.Property<string>("TestServerUrl") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password") - .HasMaxLength(500); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithOne("AfterSolution") - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("SolutionFiles") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany() - .HasForeignKey("TemplateFileId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("CustomTestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("AfterTestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("TestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("AfterTestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId"); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId"); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId"); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId"); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20190430202149_MaxManualPoints.Designer.cs b/src/ClientServer/Migrations/20190430202149_MaxManualPoints.Designer.cs deleted file mode 100755 index d45019e98960e8a7c9136deebe584b5acc0cf25c..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190430202149_MaxManualPoints.Designer.cs +++ /dev/null @@ -1,2018 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20190430202149_MaxManualPoints")] - partial class MaxManualPoints - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .IsUnique(); - - b.ToTable("AfterSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("AfterSolutionId"); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("AfterSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("CustomTestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("TestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl") - .HasMaxLength(500); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<bool>("IsOnlyVisibleToOwner"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<string>("ShortDescription") - .HasMaxLength(500); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired() - .HasMaxLength(500); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideExerciseLeaveActions"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HidePrintOptions"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MaxManualPoint"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.Property<bool>("ShowAdditionalLogButton"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("LockSolutionsFlag"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LastEditingIpAddress") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent") - .HasMaxLength(1000); - - b.Property<string>("LastAssessmentErrorMessage") - .HasMaxLength(5000); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors") - .HasMaxLength(1000); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("TemplateFileId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description") - .HasMaxLength(500); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("HtmlBackgroundColor") - .HasMaxLength(500); - - b.Property<string>("HtmlColor") - .HasMaxLength(500); - - b.Property<string>("HtmlIcon") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CompileTimeoutInMs"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CompileTimeoutInMs"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut") - .HasMaxLength(500); - - b.Property<string>("Language") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("EditorHighlightModeName") - .HasMaxLength(500); - - b.Property<string>("FileExtensionsWithDot") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CsrfToken") - .HasMaxLength(500); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret") - .HasMaxLength(500); - - b.Property<string>("UserAuthToken") - .HasMaxLength(500); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeGroupData"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<bool>("CanSeeOtherMembers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CurrentServerMessage") - .HasMaxLength(1000); - - b.Property<int>("CustomProjectTestCompileTimeoutInMs"); - - b.Property<int>("CustomProjectTestMaxDiskSpaceInKb"); - - b.Property<int>("CustomProjectTestMemoryLimitInKb"); - - b.Property<int>("CustomProjectTestTimeoutInMs"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<int>("JustRunProgramCompileTimeoutInMs"); - - b.Property<int>("JustRunProgramMaxDiskSpaceInKb"); - - b.Property<int>("JustRunProgramMemoryLimitInKb"); - - b.Property<int>("JustRunProgramTimeoutInMs"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxCustomTestsPerParticipation"); - - b.Property<int>("MaxNumberOfTestsWithOneRequest"); - - b.Property<int>("MaxNumberOfTestsWithOneRequestSubmitTestServer"); - - b.Property<int>("SubmitTestServerTimeoutInMs"); - - b.Property<string>("SubmitTestServerUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerConfigUiUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerStatsUrl") - .HasMaxLength(500); - - b.Property<int>("TestServerTimeoutInMs"); - - b.Property<string>("TestServerUrl") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password") - .HasMaxLength(500); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithOne("AfterSolution") - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("SolutionFiles") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany() - .HasForeignKey("TemplateFileId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("CustomTestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("AfterTestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("TestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("AfterTestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId"); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId"); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId"); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId"); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20190430202149_MaxManualPoints.cs b/src/ClientServer/Migrations/20190430202149_MaxManualPoints.cs deleted file mode 100755 index 0af8c2c1e91c9761aba9acde9d6ebf32f8e5f1cc..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190430202149_MaxManualPoints.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class MaxManualPoints : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn<int>( - name: "MaxManualPoint", - table: "ExerciseReleases", - nullable: true); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "MaxManualPoint", - table: "ExerciseReleases"); - } - } -} diff --git a/src/ClientServer/Migrations/20190501142551_HiddenTemplateFiles.Designer.cs b/src/ClientServer/Migrations/20190501142551_HiddenTemplateFiles.Designer.cs deleted file mode 100755 index 71248dee37645e24881d4532c2f5110f163d4e7d..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190501142551_HiddenTemplateFiles.Designer.cs +++ /dev/null @@ -1,2020 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20190501142551_HiddenTemplateFiles")] - partial class HiddenTemplateFiles - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .IsUnique(); - - b.ToTable("AfterSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("AfterSolutionId"); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("AfterSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("CustomTestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("TestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl") - .HasMaxLength(500); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<bool>("IsOnlyVisibleToOwner"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<string>("ShortDescription") - .HasMaxLength(500); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired() - .HasMaxLength(500); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideExerciseLeaveActions"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HidePrintOptions"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MaxManualPoint"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.Property<bool>("ShowAdditionalLogButton"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("LockSolutionsFlag"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LastEditingIpAddress") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent") - .HasMaxLength(1000); - - b.Property<string>("LastAssessmentErrorMessage") - .HasMaxLength(5000); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors") - .HasMaxLength(1000); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("TemplateFileId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description") - .HasMaxLength(500); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("HtmlBackgroundColor") - .HasMaxLength(500); - - b.Property<string>("HtmlColor") - .HasMaxLength(500); - - b.Property<string>("HtmlIcon") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsContentHiddenForUser"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CompileTimeoutInMs"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CompileTimeoutInMs"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut") - .HasMaxLength(500); - - b.Property<string>("Language") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("EditorHighlightModeName") - .HasMaxLength(500); - - b.Property<string>("FileExtensionsWithDot") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CsrfToken") - .HasMaxLength(500); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret") - .HasMaxLength(500); - - b.Property<string>("UserAuthToken") - .HasMaxLength(500); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeGroupData"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<bool>("CanSeeOtherMembers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CurrentServerMessage") - .HasMaxLength(1000); - - b.Property<int>("CustomProjectTestCompileTimeoutInMs"); - - b.Property<int>("CustomProjectTestMaxDiskSpaceInKb"); - - b.Property<int>("CustomProjectTestMemoryLimitInKb"); - - b.Property<int>("CustomProjectTestTimeoutInMs"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<int>("JustRunProgramCompileTimeoutInMs"); - - b.Property<int>("JustRunProgramMaxDiskSpaceInKb"); - - b.Property<int>("JustRunProgramMemoryLimitInKb"); - - b.Property<int>("JustRunProgramTimeoutInMs"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxCustomTestsPerParticipation"); - - b.Property<int>("MaxNumberOfTestsWithOneRequest"); - - b.Property<int>("MaxNumberOfTestsWithOneRequestSubmitTestServer"); - - b.Property<int>("SubmitTestServerTimeoutInMs"); - - b.Property<string>("SubmitTestServerUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerConfigUiUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerStatsUrl") - .HasMaxLength(500); - - b.Property<int>("TestServerTimeoutInMs"); - - b.Property<string>("TestServerUrl") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password") - .HasMaxLength(500); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithOne("AfterSolution") - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("SolutionFiles") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany() - .HasForeignKey("TemplateFileId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("CustomTestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("AfterTestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("TestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("AfterTestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId"); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId"); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId"); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId"); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20190501142551_HiddenTemplateFiles.cs b/src/ClientServer/Migrations/20190501142551_HiddenTemplateFiles.cs deleted file mode 100755 index c61f31056b35aaef973bd234cdc2ce8a5b6f894b..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190501142551_HiddenTemplateFiles.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class HiddenTemplateFiles : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn<bool>( - name: "IsContentHiddenForUser", - table: "TemplateFiles", - nullable: false, - defaultValue: false); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "IsContentHiddenForUser", - table: "TemplateFiles"); - } - } -} diff --git a/src/ClientServer/Migrations/20190501143221_RenameTemplateVisibility.Designer.cs b/src/ClientServer/Migrations/20190501143221_RenameTemplateVisibility.Designer.cs deleted file mode 100755 index 05379f42368bfc859d56c260bdf61ef715e9b9e7..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190501143221_RenameTemplateVisibility.Designer.cs +++ /dev/null @@ -1,2020 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20190501143221_RenameTemplateVisibility")] - partial class RenameTemplateVisibility - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .IsUnique(); - - b.ToTable("AfterSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("AfterSolutionId"); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("AfterSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("CustomTestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("TestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl") - .HasMaxLength(500); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<bool>("IsOnlyVisibleToOwner"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<string>("ShortDescription") - .HasMaxLength(500); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired() - .HasMaxLength(500); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideExerciseLeaveActions"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HidePrintOptions"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MaxManualPoint"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<int?>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.Property<bool>("ShowAdditionalLogButton"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("LockSolutionsFlag"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LastEditingIpAddress") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent") - .HasMaxLength(1000); - - b.Property<string>("LastAssessmentErrorMessage") - .HasMaxLength(5000); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors") - .HasMaxLength(1000); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("TemplateFileId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description") - .HasMaxLength(500); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("HtmlBackgroundColor") - .HasMaxLength(500); - - b.Property<string>("HtmlColor") - .HasMaxLength(500); - - b.Property<string>("HtmlIcon") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsContentVisibleForUser"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CompileTimeoutInMs"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CompileTimeoutInMs"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut") - .HasMaxLength(500); - - b.Property<string>("Language") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("EditorHighlightModeName") - .HasMaxLength(500); - - b.Property<string>("FileExtensionsWithDot") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CsrfToken") - .HasMaxLength(500); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret") - .HasMaxLength(500); - - b.Property<string>("UserAuthToken") - .HasMaxLength(500); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeGroupData"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<bool>("CanSeeOtherMembers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CurrentServerMessage") - .HasMaxLength(1000); - - b.Property<int>("CustomProjectTestCompileTimeoutInMs"); - - b.Property<int>("CustomProjectTestMaxDiskSpaceInKb"); - - b.Property<int>("CustomProjectTestMemoryLimitInKb"); - - b.Property<int>("CustomProjectTestTimeoutInMs"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<int>("JustRunProgramCompileTimeoutInMs"); - - b.Property<int>("JustRunProgramMaxDiskSpaceInKb"); - - b.Property<int>("JustRunProgramMemoryLimitInKb"); - - b.Property<int>("JustRunProgramTimeoutInMs"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxCustomTestsPerParticipation"); - - b.Property<int>("MaxNumberOfTestsWithOneRequest"); - - b.Property<int>("MaxNumberOfTestsWithOneRequestSubmitTestServer"); - - b.Property<int>("SubmitTestServerTimeoutInMs"); - - b.Property<string>("SubmitTestServerUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerConfigUiUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerStatsUrl") - .HasMaxLength(500); - - b.Property<int>("TestServerTimeoutInMs"); - - b.Property<string>("TestServerUrl") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password") - .HasMaxLength(500); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithOne("AfterSolution") - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("SolutionFiles") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany() - .HasForeignKey("TemplateFileId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("CustomTestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("AfterTestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("TestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("AfterTestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId"); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId"); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId"); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId"); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20190501143221_RenameTemplateVisibility.cs b/src/ClientServer/Migrations/20190501143221_RenameTemplateVisibility.cs deleted file mode 100755 index 0209b04475567cf0f9f06a68262749e58da0615f..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190501143221_RenameTemplateVisibility.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class RenameTemplateVisibility : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "IsContentHiddenForUser", - table: "TemplateFiles"); - - migrationBuilder.AddColumn<bool>( - name: "IsContentVisibleForUser", - table: "TemplateFiles", - nullable: false, - defaultValue: true); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "IsContentVisibleForUser", - table: "TemplateFiles"); - - migrationBuilder.AddColumn<bool>( - name: "IsContentHiddenForUser", - table: "TemplateFiles", - nullable: false, - defaultValue: false); - } - } -} diff --git a/src/ClientServer/Migrations/20190503160702_ReleasePLangRequiredNow.Designer.cs b/src/ClientServer/Migrations/20190503160702_ReleasePLangRequiredNow.Designer.cs deleted file mode 100755 index 29933cebec966703863a59957064bcacf92b54ab..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190503160702_ReleasePLangRequiredNow.Designer.cs +++ /dev/null @@ -1,2020 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20190503160702_ReleasePLangRequiredNow")] - partial class ReleasePLangRequiredNow - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .IsUnique(); - - b.ToTable("AfterSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("AfterSolutionId"); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("AfterSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("CustomTestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("TestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl") - .HasMaxLength(500); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<bool>("IsOnlyVisibleToOwner"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<string>("ShortDescription") - .HasMaxLength(500); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired() - .HasMaxLength(500); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideExerciseLeaveActions"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HidePrintOptions"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MaxManualPoint"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<int>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.Property<bool>("ShowAdditionalLogButton"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("LockSolutionsFlag"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LastEditingIpAddress") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent") - .HasMaxLength(1000); - - b.Property<string>("LastAssessmentErrorMessage") - .HasMaxLength(5000); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors") - .HasMaxLength(1000); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("TemplateFileId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description") - .HasMaxLength(500); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("HtmlBackgroundColor") - .HasMaxLength(500); - - b.Property<string>("HtmlColor") - .HasMaxLength(500); - - b.Property<string>("HtmlIcon") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsContentVisibleForUser"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CompileTimeoutInMs"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CompileTimeoutInMs"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut") - .HasMaxLength(500); - - b.Property<string>("Language") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("EditorHighlightModeName") - .HasMaxLength(500); - - b.Property<string>("FileExtensionsWithDot") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CsrfToken") - .HasMaxLength(500); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret") - .HasMaxLength(500); - - b.Property<string>("UserAuthToken") - .HasMaxLength(500); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeGroupData"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<bool>("CanSeeOtherMembers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CurrentServerMessage") - .HasMaxLength(1000); - - b.Property<int>("CustomProjectTestCompileTimeoutInMs"); - - b.Property<int>("CustomProjectTestMaxDiskSpaceInKb"); - - b.Property<int>("CustomProjectTestMemoryLimitInKb"); - - b.Property<int>("CustomProjectTestTimeoutInMs"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<int>("JustRunProgramCompileTimeoutInMs"); - - b.Property<int>("JustRunProgramMaxDiskSpaceInKb"); - - b.Property<int>("JustRunProgramMemoryLimitInKb"); - - b.Property<int>("JustRunProgramTimeoutInMs"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxCustomTestsPerParticipation"); - - b.Property<int>("MaxNumberOfTestsWithOneRequest"); - - b.Property<int>("MaxNumberOfTestsWithOneRequestSubmitTestServer"); - - b.Property<int>("SubmitTestServerTimeoutInMs"); - - b.Property<string>("SubmitTestServerUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerConfigUiUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerStatsUrl") - .HasMaxLength(500); - - b.Property<int>("TestServerTimeoutInMs"); - - b.Property<string>("TestServerUrl") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password") - .HasMaxLength(500); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithOne("AfterSolution") - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("SolutionFiles") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany() - .HasForeignKey("TemplateFileId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("CustomTestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("AfterTestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("TestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("AfterTestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId"); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId"); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId"); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId"); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20190503160702_ReleasePLangRequiredNow.cs b/src/ClientServer/Migrations/20190503160702_ReleasePLangRequiredNow.cs deleted file mode 100755 index f333185f143fb5929860b69968176b83dde38856..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190503160702_ReleasePLangRequiredNow.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class ReleasePLangRequiredNow : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AlterColumn<int>( - name: "PLangId", - table: "ExerciseReleases", - nullable: false); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.AlterColumn<int>( - name: "PLangId", - table: "ExerciseReleases", - nullable: true); - } - } -} diff --git a/src/ClientServer/Migrations/20190505105057_ExerciseExamLock.Designer.cs b/src/ClientServer/Migrations/20190505105057_ExerciseExamLock.Designer.cs deleted file mode 100755 index 934dbc3493b43fcc06f35e6b1ae7e2077e2181f3..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190505105057_ExerciseExamLock.Designer.cs +++ /dev/null @@ -1,2022 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20190505105057_ExerciseExamLock")] - partial class ExerciseExamLock - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .IsUnique(); - - b.ToTable("AfterSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("AfterSolutionId"); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("AfterSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("CustomTestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("TestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl") - .HasMaxLength(500); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<bool>("IsOnlyVisibleToOwner"); - - b.Property<bool>("IsPermanentlyLocked"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<string>("ShortDescription") - .HasMaxLength(500); - - b.Property<bool>("ShouldShowSubmitResult"); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired() - .HasMaxLength(500); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideExerciseLeaveActions"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HidePrintOptions"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MaxManualPoint"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<int>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.Property<bool>("ShowAdditionalLogButton"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("LockSolutionsFlag"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LastEditingIpAddress") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent") - .HasMaxLength(1000); - - b.Property<string>("LastAssessmentErrorMessage") - .HasMaxLength(5000); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors") - .HasMaxLength(1000); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("TemplateFileId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description") - .HasMaxLength(500); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("HtmlBackgroundColor") - .HasMaxLength(500); - - b.Property<string>("HtmlColor") - .HasMaxLength(500); - - b.Property<string>("HtmlIcon") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsContentVisibleForUser"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CompileTimeoutInMs"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CompileTimeoutInMs"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut") - .HasMaxLength(500); - - b.Property<string>("Language") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("EditorHighlightModeName") - .HasMaxLength(500); - - b.Property<string>("FileExtensionsWithDot") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CsrfToken") - .HasMaxLength(500); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret") - .HasMaxLength(500); - - b.Property<string>("UserAuthToken") - .HasMaxLength(500); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeGroupData"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<bool>("CanSeeOtherMembers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CurrentServerMessage") - .HasMaxLength(1000); - - b.Property<int>("CustomProjectTestCompileTimeoutInMs"); - - b.Property<int>("CustomProjectTestMaxDiskSpaceInKb"); - - b.Property<int>("CustomProjectTestMemoryLimitInKb"); - - b.Property<int>("CustomProjectTestTimeoutInMs"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<int>("JustRunProgramCompileTimeoutInMs"); - - b.Property<int>("JustRunProgramMaxDiskSpaceInKb"); - - b.Property<int>("JustRunProgramMemoryLimitInKb"); - - b.Property<int>("JustRunProgramTimeoutInMs"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxCustomTestsPerParticipation"); - - b.Property<int>("MaxNumberOfTestsWithOneRequest"); - - b.Property<int>("MaxNumberOfTestsWithOneRequestSubmitTestServer"); - - b.Property<int>("SubmitTestServerTimeoutInMs"); - - b.Property<string>("SubmitTestServerUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerConfigUiUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerStatsUrl") - .HasMaxLength(500); - - b.Property<int>("TestServerTimeoutInMs"); - - b.Property<string>("TestServerUrl") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password") - .HasMaxLength(500); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithOne("AfterSolution") - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("SolutionFiles") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany() - .HasForeignKey("TemplateFileId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("CustomTestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("AfterTestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("TestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("AfterTestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId"); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId"); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId"); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId"); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20190505105057_ExerciseExamLock.cs b/src/ClientServer/Migrations/20190505105057_ExerciseExamLock.cs deleted file mode 100755 index d39b8eacc6d1d2ead376e08cb37c005aaeb28ec5..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190505105057_ExerciseExamLock.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class ExerciseExamLock : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn<bool>( - name: "IsPermanentlyLocked", - table: "Exercises", - nullable: false, - defaultValue: false); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "IsPermanentlyLocked", - table: "Exercises"); - } - } -} diff --git a/src/ClientServer/Migrations/20190505122337_ExerciseLockedGroupRolePermission.Designer.cs b/src/ClientServer/Migrations/20190505122337_ExerciseLockedGroupRolePermission.Designer.cs deleted file mode 100755 index 33f06c2b8ae9a87b952d372df31092b6053f3ded..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190505122337_ExerciseLockedGroupRolePermission.Designer.cs +++ /dev/null @@ -1,2022 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20190505122337_ExerciseLockedGroupRolePermission")] - partial class ExerciseLockedGroupRolePermission - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .IsUnique(); - - b.ToTable("AfterSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("AfterSolutionId"); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("AfterSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("CustomTestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("TestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl") - .HasMaxLength(500); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<bool>("IsOnlyVisibleToOwner"); - - b.Property<bool>("IsPermanentlyLocked"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<string>("ShortDescription") - .HasMaxLength(500); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired() - .HasMaxLength(500); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideExerciseLeaveActions"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HidePrintOptions"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MaxManualPoint"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<int>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.Property<bool>("ShowAdditionalLogButton"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("LockSolutionsFlag"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LastEditingIpAddress") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent") - .HasMaxLength(1000); - - b.Property<string>("LastAssessmentErrorMessage") - .HasMaxLength(5000); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors") - .HasMaxLength(1000); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("TemplateFileId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description") - .HasMaxLength(500); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("HtmlBackgroundColor") - .HasMaxLength(500); - - b.Property<string>("HtmlColor") - .HasMaxLength(500); - - b.Property<string>("HtmlIcon") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsContentVisibleForUser"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CompileTimeoutInMs"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CompileTimeoutInMs"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut") - .HasMaxLength(500); - - b.Property<string>("Language") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("EditorHighlightModeName") - .HasMaxLength(500); - - b.Property<string>("FileExtensionsWithDot") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CsrfToken") - .HasMaxLength(500); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret") - .HasMaxLength(500); - - b.Property<string>("UserAuthToken") - .HasMaxLength(500); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeGroupData"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCopyExercises"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanLockExercisesPermanently"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<bool>("CanSeeOtherMembers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CurrentServerMessage") - .HasMaxLength(1000); - - b.Property<int>("CustomProjectTestCompileTimeoutInMs"); - - b.Property<int>("CustomProjectTestMaxDiskSpaceInKb"); - - b.Property<int>("CustomProjectTestMemoryLimitInKb"); - - b.Property<int>("CustomProjectTestTimeoutInMs"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<int>("JustRunProgramCompileTimeoutInMs"); - - b.Property<int>("JustRunProgramMaxDiskSpaceInKb"); - - b.Property<int>("JustRunProgramMemoryLimitInKb"); - - b.Property<int>("JustRunProgramTimeoutInMs"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxCustomTestsPerParticipation"); - - b.Property<int>("MaxNumberOfTestsWithOneRequest"); - - b.Property<int>("MaxNumberOfTestsWithOneRequestSubmitTestServer"); - - b.Property<int>("SubmitTestServerTimeoutInMs"); - - b.Property<string>("SubmitTestServerUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerConfigUiUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerStatsUrl") - .HasMaxLength(500); - - b.Property<int>("TestServerTimeoutInMs"); - - b.Property<string>("TestServerUrl") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password") - .HasMaxLength(500); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithOne("AfterSolution") - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("SolutionFiles") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany() - .HasForeignKey("TemplateFileId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("CustomTestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("AfterTestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("TestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("AfterTestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId"); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId"); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId"); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId"); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20190505122337_ExerciseLockedGroupRolePermission.cs b/src/ClientServer/Migrations/20190505122337_ExerciseLockedGroupRolePermission.cs deleted file mode 100755 index f9f06abb3b2a8878593439c94dbb81dcd0598cd8..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190505122337_ExerciseLockedGroupRolePermission.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class ExerciseLockedGroupRolePermission : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "ShouldShowSubmitResult", - table: "Exercises"); - - migrationBuilder.AddColumn<bool>( - name: "CanLockExercisesPermanently", - table: "GroupRolePermissions", - nullable: false, - defaultValue: false); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "CanLockExercisesPermanently", - table: "GroupRolePermissions"); - - migrationBuilder.AddColumn<bool>( - name: "ShouldShowSubmitResult", - table: "Exercises", - nullable: false, - defaultValue: false); - } - } -} diff --git a/src/ClientServer/Migrations/20190508134143_RemoveCopyPermission.Designer.cs b/src/ClientServer/Migrations/20190508134143_RemoveCopyPermission.Designer.cs deleted file mode 100755 index 84e51de5ba2af722bec5f248ddf44b6eefe44a6b..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190508134143_RemoveCopyPermission.Designer.cs +++ /dev/null @@ -1,2020 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20190508134143_RemoveCopyPermission")] - partial class RemoveCopyPermission - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .IsUnique(); - - b.ToTable("AfterSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("AfterSolutionId"); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("AfterSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("CustomTestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("TestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl") - .HasMaxLength(500); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<bool>("IsOnlyVisibleToOwner"); - - b.Property<bool>("IsPermanentlyLocked"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<string>("ShortDescription") - .HasMaxLength(500); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired() - .HasMaxLength(500); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideExerciseLeaveActions"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HidePrintOptions"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MaxManualPoint"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<int>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.Property<bool>("ShowAdditionalLogButton"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("LockSolutionsFlag"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LastEditingIpAddress") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent") - .HasMaxLength(1000); - - b.Property<string>("LastAssessmentErrorMessage") - .HasMaxLength(5000); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors") - .HasMaxLength(1000); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("TemplateFileId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description") - .HasMaxLength(500); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("HtmlBackgroundColor") - .HasMaxLength(500); - - b.Property<string>("HtmlColor") - .HasMaxLength(500); - - b.Property<string>("HtmlIcon") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsContentVisibleForUser"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CompileTimeoutInMs"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CompileTimeoutInMs"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut") - .HasMaxLength(500); - - b.Property<string>("Language") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("EditorHighlightModeName") - .HasMaxLength(500); - - b.Property<string>("FileExtensionsWithDot") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CsrfToken") - .HasMaxLength(500); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret") - .HasMaxLength(500); - - b.Property<string>("UserAuthToken") - .HasMaxLength(500); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeGroupData"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanLockExercisesPermanently"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<bool>("CanSeeOtherMembers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CurrentServerMessage") - .HasMaxLength(1000); - - b.Property<int>("CustomProjectTestCompileTimeoutInMs"); - - b.Property<int>("CustomProjectTestMaxDiskSpaceInKb"); - - b.Property<int>("CustomProjectTestMemoryLimitInKb"); - - b.Property<int>("CustomProjectTestTimeoutInMs"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<int>("JustRunProgramCompileTimeoutInMs"); - - b.Property<int>("JustRunProgramMaxDiskSpaceInKb"); - - b.Property<int>("JustRunProgramMemoryLimitInKb"); - - b.Property<int>("JustRunProgramTimeoutInMs"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxCustomTestsPerParticipation"); - - b.Property<int>("MaxNumberOfTestsWithOneRequest"); - - b.Property<int>("MaxNumberOfTestsWithOneRequestSubmitTestServer"); - - b.Property<int>("SubmitTestServerTimeoutInMs"); - - b.Property<string>("SubmitTestServerUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerConfigUiUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerStatsUrl") - .HasMaxLength(500); - - b.Property<int>("TestServerTimeoutInMs"); - - b.Property<string>("TestServerUrl") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password") - .HasMaxLength(500); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithOne("AfterSolution") - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("SolutionFiles") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany() - .HasForeignKey("TemplateFileId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("CustomTestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("AfterTestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("TestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("AfterTestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId"); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId"); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId"); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId"); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20190508134143_RemoveCopyPermission.cs b/src/ClientServer/Migrations/20190508134143_RemoveCopyPermission.cs deleted file mode 100755 index fa30e62d3e7703060a20fb688452b3d56bf98af9..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190508134143_RemoveCopyPermission.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class RemoveCopyPermission : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "CanCopyExercises", - table: "GroupRolePermissions"); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn<bool>( - name: "CanCopyExercises", - table: "GroupRolePermissions", - nullable: false, - defaultValue: false); - } - } -} diff --git a/src/ClientServer/Migrations/20190530135332_ExerciseMarkdownFiles.Designer.cs b/src/ClientServer/Migrations/20190530135332_ExerciseMarkdownFiles.Designer.cs deleted file mode 100755 index 44228ed66d2387eba000f08c673b95b9e1c9469a..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190530135332_ExerciseMarkdownFiles.Designer.cs +++ /dev/null @@ -1,2076 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20190530135332_ExerciseMarkdownFiles")] - partial class ExerciseMarkdownFiles - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .IsUnique(); - - b.ToTable("AfterSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("AfterSolutionId"); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("AfterSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("CustomTestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("TestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl") - .HasMaxLength(500); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<bool>("IsOnlyVisibleToOwner"); - - b.Property<bool>("IsPermanentlyLocked"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<string>("ShortDescription") - .HasMaxLength(500); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescriptionWithFileAsAssetReference", b => - { - b.Property<int>("ExerciseDescriptionId"); - - b.Property<int>("FileReferenceMarkdownAssetId"); - - b.HasKey("ExerciseDescriptionId", "FileReferenceMarkdownAssetId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.HasIndex("FileReferenceMarkdownAssetId"); - - b.ToTable("ExerciseDescriptionWithFileAsAssetReferences"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired() - .HasMaxLength(500); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideExerciseLeaveActions"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HidePrintOptions"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MaxManualPoint"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<int>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.Property<bool>("ShowAdditionalLogButton"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("LockSolutionsFlag"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LastEditingIpAddress") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent") - .HasMaxLength(1000); - - b.Property<string>("LastAssessmentErrorMessage") - .HasMaxLength(5000); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors") - .HasMaxLength(1000); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("TemplateFileId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description") - .HasMaxLength(500); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("HtmlBackgroundColor") - .HasMaxLength(500); - - b.Property<string>("HtmlColor") - .HasMaxLength(500); - - b.Property<string>("HtmlIcon") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsContentVisibleForUser"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CompileTimeoutInMs"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CompileTimeoutInMs"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Files.FileReferenceMarkdownAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<string>("OriginalName") - .HasMaxLength(500); - - b.Property<string>("RelativePath") - .HasMaxLength(5000); - - b.Property<long>("SizeInBytes"); - - b.HasKey("Id"); - - b.ToTable("FileReferenceMarkdownAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut") - .HasMaxLength(500); - - b.Property<string>("Language") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("EditorHighlightModeName") - .HasMaxLength(500); - - b.Property<string>("FileExtensionsWithDot") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CsrfToken") - .HasMaxLength(500); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret") - .HasMaxLength(500); - - b.Property<string>("UserAuthToken") - .HasMaxLength(500); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeGroupData"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanLockExercisesPermanently"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<bool>("CanSeeOtherMembers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CurrentServerMessage") - .HasMaxLength(1000); - - b.Property<int>("CustomProjectTestCompileTimeoutInMs"); - - b.Property<int>("CustomProjectTestMaxDiskSpaceInKb"); - - b.Property<int>("CustomProjectTestMemoryLimitInKb"); - - b.Property<int>("CustomProjectTestTimeoutInMs"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<int>("JustRunProgramCompileTimeoutInMs"); - - b.Property<int>("JustRunProgramMaxDiskSpaceInKb"); - - b.Property<int>("JustRunProgramMemoryLimitInKb"); - - b.Property<int>("JustRunProgramTimeoutInMs"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxCustomTestsPerParticipation"); - - b.Property<int>("MaxNumberOfTestsWithOneRequest"); - - b.Property<int>("MaxNumberOfTestsWithOneRequestSubmitTestServer"); - - b.Property<int>("SubmitTestServerTimeoutInMs"); - - b.Property<string>("SubmitTestServerUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerConfigUiUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerStatsUrl") - .HasMaxLength(500); - - b.Property<int>("TestServerTimeoutInMs"); - - b.Property<string>("TestServerUrl") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password") - .HasMaxLength(500); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithOne("AfterSolution") - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("SolutionFiles") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany() - .HasForeignKey("TemplateFileId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("CustomTestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("AfterTestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("TestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("AfterTestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescriptionWithFileAsAssetReference", b => - { - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseDescription") - .WithMany("AssetReferences") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Files.FileReferenceMarkdownAsset", "FileReferenceMarkdownAsset") - .WithMany("AssetReferences") - .HasForeignKey("FileReferenceMarkdownAssetId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId"); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId"); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId"); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId"); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20190530135332_ExerciseMarkdownFiles.cs b/src/ClientServer/Migrations/20190530135332_ExerciseMarkdownFiles.cs deleted file mode 100755 index 18bd238d8c1784b37cca0ed0c109f648012e6618..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190530135332_ExerciseMarkdownFiles.cs +++ /dev/null @@ -1,74 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class ExerciseMarkdownFiles : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "FileReferenceMarkdownAssets", - columns: table => new - { - Id = table.Column<int>(nullable: false) - .Annotation("Npgsql:ValueGeneratedOnAdd", true), - CreatedAt = table.Column<DateTime>(nullable: false), - Hash = table.Column<string>(maxLength: 500, nullable: true), - LastUpdatedAt = table.Column<DateTime>(nullable: false), - MimeType = table.Column<string>(maxLength: 500, nullable: true), - OriginalName = table.Column<string>(maxLength: 500, nullable: true), - RelativePath = table.Column<string>(maxLength: 5000, nullable: true), - SizeInBytes = table.Column<long>(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_FileReferenceMarkdownAssets", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "ExerciseDescriptionWithFileAsAssetReferences", - columns: table => new - { - ExerciseDescriptionId = table.Column<int>(nullable: false), - FileReferenceMarkdownAssetId = table.Column<int>(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_ExerciseDescriptionWithFileAsAssetReferences", x => new { x.ExerciseDescriptionId, x.FileReferenceMarkdownAssetId }); - table.ForeignKey( - name: "FK_ExerciseDescriptionWithFileAsAssetReferences_ExerciseDescriptions_ExerciseDescriptionId", - column: x => x.ExerciseDescriptionId, - principalTable: "ExerciseDescriptions", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_ExerciseDescriptionWithFileAsAssetReferences_FileReferenceMarkdownAssets_FileReferenceMarkdownAssetId", - column: x => x.FileReferenceMarkdownAssetId, - principalTable: "FileReferenceMarkdownAssets", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateIndex( - name: "IX_ExerciseDescriptionWithFileAsAssetReferences_ExerciseDescriptionId", - table: "ExerciseDescriptionWithFileAsAssetReferences", - column: "ExerciseDescriptionId"); - - migrationBuilder.CreateIndex( - name: "IX_ExerciseDescriptionWithFileAsAssetReferences_FileReferenceMarkdownAssetId", - table: "ExerciseDescriptionWithFileAsAssetReferences", - column: "FileReferenceMarkdownAssetId"); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "ExerciseDescriptionWithFileAsAssetReferences"); - - migrationBuilder.DropTable( - name: "FileReferenceMarkdownAssets"); - } - } -} diff --git a/src/ClientServer/Migrations/20190601145551_ExerciseTestAssetFiles.cs b/src/ClientServer/Migrations/20190601145551_ExerciseTestAssetFiles.cs deleted file mode 100755 index c5786ca22b39447c77de8d43bea1e7e7b86abb41..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190601145551_ExerciseTestAssetFiles.cs +++ /dev/null @@ -1,74 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class ExerciseTestAssetFiles : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "FileReferenceTestAssets", - columns: table => new - { - Id = table.Column<int>(nullable: false) - .Annotation("Npgsql:ValueGeneratedOnAdd", true), - CreatedAt = table.Column<DateTime>(nullable: false), - Hash = table.Column<string>(maxLength: 500, nullable: true), - LastUpdatedAt = table.Column<DateTime>(nullable: false), - MimeType = table.Column<string>(maxLength: 500, nullable: true), - OriginalName = table.Column<string>(maxLength: 500, nullable: true), - RelativePath = table.Column<string>(maxLength: 5000, nullable: true), - SizeInBytes = table.Column<long>(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_FileReferenceTestAssets", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "TestWithFileAsAssetReferences", - columns: table => new - { - TestId = table.Column<int>(nullable: false), - FileReferenceTestAssetId = table.Column<int>(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_TestWithFileAsAssetReferences", x => new { x.TestId, x.FileReferenceTestAssetId }); - table.ForeignKey( - name: "FK_TestWithFileAsAssetReferences_FileReferenceTestAssets_FileReferenceTestAssetId", - column: x => x.FileReferenceTestAssetId, - principalTable: "FileReferenceTestAssets", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_TestWithFileAsAssetReferences_Tests_TestId", - column: x => x.TestId, - principalTable: "Tests", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateIndex( - name: "IX_TestWithFileAsAssetReferences_FileReferenceTestAssetId", - table: "TestWithFileAsAssetReferences", - column: "FileReferenceTestAssetId"); - - migrationBuilder.CreateIndex( - name: "IX_TestWithFileAsAssetReferences_TestId", - table: "TestWithFileAsAssetReferences", - column: "TestId"); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "TestWithFileAsAssetReferences"); - - migrationBuilder.DropTable( - name: "FileReferenceTestAssets"); - } - } -} diff --git a/src/ClientServer/Migrations/20190602180648_CustomUserFiles.Designer.cs b/src/ClientServer/Migrations/20190602180648_CustomUserFiles.Designer.cs deleted file mode 100755 index 33ce473ac9330e6bd279c19d5704f01711850a08..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190602180648_CustomUserFiles.Designer.cs +++ /dev/null @@ -1,2244 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20190602180648_CustomUserFiles")] - partial class CustomUserFiles - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescriptionWithFileAsAssetReference", b => - { - b.Property<int>("CustomProjectDescriptionId"); - - b.Property<int>("FileReferenceUserFileAssetId"); - - b.HasKey("CustomProjectDescriptionId", "FileReferenceUserFileAssetId"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("FileReferenceUserFileAssetId"); - - b.ToTable("CustomProjectDescriptionWithFileAsAssetReferences"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithFileAsAssetReference", b => - { - b.Property<int>("CustomProjectTestId"); - - b.Property<int>("FileReferenceUserFileAssetId"); - - b.HasKey("CustomProjectTestId", "FileReferenceUserFileAssetId"); - - b.HasIndex("CustomProjectTestId"); - - b.HasIndex("FileReferenceUserFileAssetId"); - - b.ToTable("CustomProjectTestWithFileAsAssetReferences"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .IsUnique(); - - b.ToTable("AfterSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("AfterSolutionId"); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("AfterSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("CustomTestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("TestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl") - .HasMaxLength(500); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CustomTestWithFileAsAssetReference", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("FileReferenceUserFileAssetId"); - - b.HasKey("CustomTestId", "FileReferenceUserFileAssetId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("FileReferenceUserFileAssetId"); - - b.ToTable("CustomTestWithFileAsAssetReferences"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<bool>("IsOnlyVisibleToOwner"); - - b.Property<bool>("IsPermanentlyLocked"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<string>("ShortDescription") - .HasMaxLength(500); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescriptionWithFileAsAssetReference", b => - { - b.Property<int>("ExerciseDescriptionId"); - - b.Property<int>("FileReferenceMarkdownAssetId"); - - b.HasKey("ExerciseDescriptionId", "FileReferenceMarkdownAssetId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.HasIndex("FileReferenceMarkdownAssetId"); - - b.ToTable("ExerciseDescriptionWithFileAsAssetReferences"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired() - .HasMaxLength(500); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideExerciseLeaveActions"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HidePrintOptions"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MaxManualPoint"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<int>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.Property<bool>("ShowAdditionalLogButton"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("LockSolutionsFlag"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LastEditingIpAddress") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent") - .HasMaxLength(1000); - - b.Property<string>("LastAssessmentErrorMessage") - .HasMaxLength(5000); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors") - .HasMaxLength(1000); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("TemplateFileId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description") - .HasMaxLength(500); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("HtmlBackgroundColor") - .HasMaxLength(500); - - b.Property<string>("HtmlColor") - .HasMaxLength(500); - - b.Property<string>("HtmlIcon") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsContentVisibleForUser"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CompileTimeoutInMs"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CompileTimeoutInMs"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TestWithFileAsAssetReference", b => - { - b.Property<int>("TestId"); - - b.Property<int>("FileReferenceTestAssetId"); - - b.HasKey("TestId", "FileReferenceTestAssetId"); - - b.HasIndex("FileReferenceTestAssetId"); - - b.HasIndex("TestId"); - - b.ToTable("TestWithFileAsAssetReferences"); - }); - - modelBuilder.Entity("ClientServer.Models.Files.FileReferenceMarkdownAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<string>("OriginalName") - .HasMaxLength(500); - - b.Property<string>("RelativePath") - .HasMaxLength(5000); - - b.Property<long>("SizeInBytes"); - - b.HasKey("Id"); - - b.ToTable("FileReferenceMarkdownAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Files.FileReferenceTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<string>("OriginalName") - .HasMaxLength(500); - - b.Property<string>("RelativePath") - .HasMaxLength(5000); - - b.Property<long>("SizeInBytes"); - - b.HasKey("Id"); - - b.ToTable("FileReferenceTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Files.FileReferenceUserFileAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<string>("OriginalName") - .HasMaxLength(500); - - b.Property<string>("RelativePath") - .HasMaxLength(5000); - - b.Property<long>("SizeInBytes"); - - b.HasKey("Id"); - - b.ToTable("FileReferenceUserFileAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut") - .HasMaxLength(500); - - b.Property<string>("Language") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("EditorHighlightModeName") - .HasMaxLength(500); - - b.Property<string>("FileExtensionsWithDot") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CsrfToken") - .HasMaxLength(500); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret") - .HasMaxLength(500); - - b.Property<string>("UserAuthToken") - .HasMaxLength(500); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeGroupData"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanLockExercisesPermanently"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<bool>("CanSeeOtherMembers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CurrentServerMessage") - .HasMaxLength(1000); - - b.Property<int>("CustomProjectTestCompileTimeoutInMs"); - - b.Property<int>("CustomProjectTestMaxDiskSpaceInKb"); - - b.Property<int>("CustomProjectTestMemoryLimitInKb"); - - b.Property<int>("CustomProjectTestTimeoutInMs"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<int>("JustRunProgramCompileTimeoutInMs"); - - b.Property<int>("JustRunProgramMaxDiskSpaceInKb"); - - b.Property<int>("JustRunProgramMemoryLimitInKb"); - - b.Property<int>("JustRunProgramTimeoutInMs"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxCustomTestsPerParticipation"); - - b.Property<int>("MaxNumberOfTestsWithOneRequest"); - - b.Property<int>("MaxNumberOfTestsWithOneRequestSubmitTestServer"); - - b.Property<int>("SubmitTestServerTimeoutInMs"); - - b.Property<string>("SubmitTestServerUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerConfigUiUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerStatsUrl") - .HasMaxLength(500); - - b.Property<int>("TestServerTimeoutInMs"); - - b.Property<string>("TestServerUrl") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password") - .HasMaxLength(500); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescriptionWithFileAsAssetReference", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectDescription") - .WithMany("AssetReferences") - .HasForeignKey("CustomProjectDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Files.FileReferenceUserFileAsset", "FileReferenceUserFileAsset") - .WithMany("CustomProjectDescriptionWithFileAsAssetReferences") - .HasForeignKey("FileReferenceUserFileAssetId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithFileAsAssetReference", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("AssetReferences") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Files.FileReferenceUserFileAsset", "FileReferenceUserFileAsset") - .WithMany("CustomProjectTestWithFileAsAssetReferences") - .HasForeignKey("FileReferenceUserFileAssetId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithOne("AfterSolution") - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("SolutionFiles") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany() - .HasForeignKey("TemplateFileId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("CustomTestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("AfterTestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("TestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("AfterTestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CustomTestWithFileAsAssetReference", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("AssetReferences") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Files.FileReferenceUserFileAsset", "FileReferenceUserFileAsset") - .WithMany("CustomTestWithFileAsAssetReferences") - .HasForeignKey("FileReferenceUserFileAssetId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescriptionWithFileAsAssetReference", b => - { - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseDescription") - .WithMany("AssetReferences") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Files.FileReferenceMarkdownAsset", "FileReferenceMarkdownAsset") - .WithMany("AssetReferences") - .HasForeignKey("FileReferenceMarkdownAssetId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId"); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TestWithFileAsAssetReference", b => - { - b.HasOne("ClientServer.Models.Files.FileReferenceTestAsset", "FileReferenceTestAsset") - .WithMany("AssetReferences") - .HasForeignKey("FileReferenceTestAssetId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("AssetReferences") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId"); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId"); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId"); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20190602180648_CustomUserFiles.cs b/src/ClientServer/Migrations/20190602180648_CustomUserFiles.cs deleted file mode 100755 index 18199da1087c35d0fa32e583119fe53d1e4498bc..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190602180648_CustomUserFiles.cs +++ /dev/null @@ -1,148 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class CustomUserFiles : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "FileReferenceUserFileAssets", - columns: table => new - { - Id = table.Column<int>(nullable: false) - .Annotation("Npgsql:ValueGeneratedOnAdd", true), - CreatedAt = table.Column<DateTime>(nullable: false), - Hash = table.Column<string>(maxLength: 500, nullable: true), - LastUpdatedAt = table.Column<DateTime>(nullable: false), - MimeType = table.Column<string>(maxLength: 500, nullable: true), - OriginalName = table.Column<string>(maxLength: 500, nullable: true), - RelativePath = table.Column<string>(maxLength: 5000, nullable: true), - SizeInBytes = table.Column<long>(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_FileReferenceUserFileAssets", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "CustomProjectDescriptionWithFileAsAssetReferences", - columns: table => new - { - CustomProjectDescriptionId = table.Column<int>(nullable: false), - FileReferenceUserFileAssetId = table.Column<int>(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_CustomProjectDescriptionWithFileAsAssetReferences", x => new { x.CustomProjectDescriptionId, x.FileReferenceUserFileAssetId }); - table.ForeignKey( - name: "FK_CustomProjectDescriptionWithFileAsAssetReferences_CustomProjectDescriptions_CustomProjectDescriptionId", - column: x => x.CustomProjectDescriptionId, - principalTable: "CustomProjectDescriptions", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_CustomProjectDescriptionWithFileAsAssetReferences_FileReferenceUserFileAssets_FileReferenceUserFileAssetId", - column: x => x.FileReferenceUserFileAssetId, - principalTable: "FileReferenceUserFileAssets", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "CustomProjectTestWithFileAsAssetReferences", - columns: table => new - { - CustomProjectTestId = table.Column<int>(nullable: false), - FileReferenceUserFileAssetId = table.Column<int>(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_CustomProjectTestWithFileAsAssetReferences", x => new { x.CustomProjectTestId, x.FileReferenceUserFileAssetId }); - table.ForeignKey( - name: "FK_CustomProjectTestWithFileAsAssetReferences_CustomProjectTests_CustomProjectTestId", - column: x => x.CustomProjectTestId, - principalTable: "CustomProjectTests", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_CustomProjectTestWithFileAsAssetReferences_FileReferenceUserFileAssets_FileReferenceUserFileAssetId", - column: x => x.FileReferenceUserFileAssetId, - principalTable: "FileReferenceUserFileAssets", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "CustomTestWithFileAsAssetReferences", - columns: table => new - { - CustomTestId = table.Column<int>(nullable: false), - FileReferenceUserFileAssetId = table.Column<int>(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_CustomTestWithFileAsAssetReferences", x => new { x.CustomTestId, x.FileReferenceUserFileAssetId }); - table.ForeignKey( - name: "FK_CustomTestWithFileAsAssetReferences_CustomTest_CustomTestId", - column: x => x.CustomTestId, - principalTable: "CustomTest", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_CustomTestWithFileAsAssetReferences_FileReferenceUserFileAssets_FileReferenceUserFileAssetId", - column: x => x.FileReferenceUserFileAssetId, - principalTable: "FileReferenceUserFileAssets", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateIndex( - name: "IX_CustomProjectDescriptionWithFileAsAssetReferences_CustomProjectDescriptionId", - table: "CustomProjectDescriptionWithFileAsAssetReferences", - column: "CustomProjectDescriptionId"); - - migrationBuilder.CreateIndex( - name: "IX_CustomProjectDescriptionWithFileAsAssetReferences_FileReferenceUserFileAssetId", - table: "CustomProjectDescriptionWithFileAsAssetReferences", - column: "FileReferenceUserFileAssetId"); - - migrationBuilder.CreateIndex( - name: "IX_CustomProjectTestWithFileAsAssetReferences_CustomProjectTestId", - table: "CustomProjectTestWithFileAsAssetReferences", - column: "CustomProjectTestId"); - - migrationBuilder.CreateIndex( - name: "IX_CustomProjectTestWithFileAsAssetReferences_FileReferenceUserFileAssetId", - table: "CustomProjectTestWithFileAsAssetReferences", - column: "FileReferenceUserFileAssetId"); - - migrationBuilder.CreateIndex( - name: "IX_CustomTestWithFileAsAssetReferences_CustomTestId", - table: "CustomTestWithFileAsAssetReferences", - column: "CustomTestId"); - - migrationBuilder.CreateIndex( - name: "IX_CustomTestWithFileAsAssetReferences_FileReferenceUserFileAssetId", - table: "CustomTestWithFileAsAssetReferences", - column: "FileReferenceUserFileAssetId"); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "CustomProjectDescriptionWithFileAsAssetReferences"); - - migrationBuilder.DropTable( - name: "CustomProjectTestWithFileAsAssetReferences"); - - migrationBuilder.DropTable( - name: "CustomTestWithFileAsAssetReferences"); - - migrationBuilder.DropTable( - name: "FileReferenceUserFileAssets"); - } - } -} diff --git a/src/ClientServer/Migrations/20190606164356_RemoveAssetPathsAddedCompilerOptions.Designer.cs b/src/ClientServer/Migrations/20190606164356_RemoveAssetPathsAddedCompilerOptions.Designer.cs deleted file mode 100755 index 61149c8c6c97e8474c3cb42b46cf39d29b77ebca..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190606164356_RemoveAssetPathsAddedCompilerOptions.Designer.cs +++ /dev/null @@ -1,2241 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20190606164356_RemoveAssetPathsAddedCompilerOptions")] - partial class RemoveAssetPathsAddedCompilerOptions - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescriptionWithFileAsAssetReference", b => - { - b.Property<int>("CustomProjectDescriptionId"); - - b.Property<int>("FileReferenceUserFileAssetId"); - - b.HasKey("CustomProjectDescriptionId", "FileReferenceUserFileAssetId"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("FileReferenceUserFileAssetId"); - - b.ToTable("CustomProjectDescriptionWithFileAsAssetReferences"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithFileAsAssetReference", b => - { - b.Property<int>("CustomProjectTestId"); - - b.Property<int>("FileReferenceUserFileAssetId"); - - b.HasKey("CustomProjectTestId", "FileReferenceUserFileAssetId"); - - b.HasIndex("CustomProjectTestId"); - - b.HasIndex("FileReferenceUserFileAssetId"); - - b.ToTable("CustomProjectTestWithFileAsAssetReferences"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .IsUnique(); - - b.ToTable("AfterSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("AfterSolutionId"); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("AfterSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("CustomTestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("TestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl") - .HasMaxLength(500); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CustomTestWithFileAsAssetReference", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("FileReferenceUserFileAssetId"); - - b.HasKey("CustomTestId", "FileReferenceUserFileAssetId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("FileReferenceUserFileAssetId"); - - b.ToTable("CustomTestWithFileAsAssetReferences"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<bool>("IsOnlyVisibleToOwner"); - - b.Property<bool>("IsPermanentlyLocked"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<string>("ShortDescription") - .HasMaxLength(500); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescriptionWithFileAsAssetReference", b => - { - b.Property<int>("ExerciseDescriptionId"); - - b.Property<int>("FileReferenceMarkdownAssetId"); - - b.HasKey("ExerciseDescriptionId", "FileReferenceMarkdownAssetId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.HasIndex("FileReferenceMarkdownAssetId"); - - b.ToTable("ExerciseDescriptionWithFileAsAssetReferences"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired() - .HasMaxLength(500); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideExerciseLeaveActions"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HidePrintOptions"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MaxManualPoint"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<int>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.Property<bool>("ShowAdditionalLogButton"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("LockSolutionsFlag"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LastEditingIpAddress") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent") - .HasMaxLength(1000); - - b.Property<string>("LastAssessmentErrorMessage") - .HasMaxLength(5000); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors") - .HasMaxLength(1000); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("TemplateFileId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description") - .HasMaxLength(500); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("HtmlBackgroundColor") - .HasMaxLength(500); - - b.Property<string>("HtmlColor") - .HasMaxLength(500); - - b.Property<string>("HtmlIcon") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsContentVisibleForUser"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CompileTimeoutInMs"); - - b.Property<string>("CompilerOptions") - .HasMaxLength(500); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CompileTimeoutInMs"); - - b.Property<string>("CompilerOptions") - .HasMaxLength(500); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TestWithFileAsAssetReference", b => - { - b.Property<int>("TestId"); - - b.Property<int>("FileReferenceTestAssetId"); - - b.HasKey("TestId", "FileReferenceTestAssetId"); - - b.HasIndex("FileReferenceTestAssetId"); - - b.HasIndex("TestId"); - - b.ToTable("TestWithFileAsAssetReferences"); - }); - - modelBuilder.Entity("ClientServer.Models.Files.FileReferenceMarkdownAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<string>("OriginalName") - .HasMaxLength(500); - - b.Property<long>("SizeInBytes"); - - b.HasKey("Id"); - - b.ToTable("FileReferenceMarkdownAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Files.FileReferenceTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<string>("OriginalName") - .HasMaxLength(500); - - b.Property<long>("SizeInBytes"); - - b.HasKey("Id"); - - b.ToTable("FileReferenceTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Files.FileReferenceUserFileAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<string>("OriginalName") - .HasMaxLength(500); - - b.Property<long>("SizeInBytes"); - - b.HasKey("Id"); - - b.ToTable("FileReferenceUserFileAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut") - .HasMaxLength(500); - - b.Property<string>("Language") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("EditorHighlightModeName") - .HasMaxLength(500); - - b.Property<string>("FileExtensionsWithDot") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CsrfToken") - .HasMaxLength(500); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret") - .HasMaxLength(500); - - b.Property<string>("UserAuthToken") - .HasMaxLength(500); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeGroupData"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanLockExercisesPermanently"); - - b.Property<bool>("CanReleaseExercises"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<bool>("CanSeeOtherMembers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CurrentServerMessage") - .HasMaxLength(1000); - - b.Property<int>("CustomProjectTestCompileTimeoutInMs"); - - b.Property<int>("CustomProjectTestMaxDiskSpaceInKb"); - - b.Property<int>("CustomProjectTestMemoryLimitInKb"); - - b.Property<int>("CustomProjectTestTimeoutInMs"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<int>("JustRunProgramCompileTimeoutInMs"); - - b.Property<int>("JustRunProgramMaxDiskSpaceInKb"); - - b.Property<int>("JustRunProgramMemoryLimitInKb"); - - b.Property<int>("JustRunProgramTimeoutInMs"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxCustomTestsPerParticipation"); - - b.Property<int>("MaxNumberOfTestsWithOneRequest"); - - b.Property<int>("MaxNumberOfTestsWithOneRequestSubmitTestServer"); - - b.Property<int>("SubmitTestServerTimeoutInMs"); - - b.Property<string>("SubmitTestServerUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerConfigUiUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerStatsUrl") - .HasMaxLength(500); - - b.Property<int>("TestServerTimeoutInMs"); - - b.Property<string>("TestServerUrl") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password") - .HasMaxLength(500); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescriptionWithFileAsAssetReference", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectDescription") - .WithMany("AssetReferences") - .HasForeignKey("CustomProjectDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Files.FileReferenceUserFileAsset", "FileReferenceUserFileAsset") - .WithMany("CustomProjectDescriptionWithFileAsAssetReferences") - .HasForeignKey("FileReferenceUserFileAssetId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithFileAsAssetReference", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("AssetReferences") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Files.FileReferenceUserFileAsset", "FileReferenceUserFileAsset") - .WithMany("CustomProjectTestWithFileAsAssetReferences") - .HasForeignKey("FileReferenceUserFileAssetId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithOne("AfterSolution") - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("SolutionFiles") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany() - .HasForeignKey("TemplateFileId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("CustomTestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("AfterTestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("TestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("AfterTestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CustomTestWithFileAsAssetReference", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("AssetReferences") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Files.FileReferenceUserFileAsset", "FileReferenceUserFileAsset") - .WithMany("CustomTestWithFileAsAssetReferences") - .HasForeignKey("FileReferenceUserFileAssetId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescriptionWithFileAsAssetReference", b => - { - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseDescription") - .WithMany("AssetReferences") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Files.FileReferenceMarkdownAsset", "FileReferenceMarkdownAsset") - .WithMany("AssetReferences") - .HasForeignKey("FileReferenceMarkdownAssetId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId"); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TestWithFileAsAssetReference", b => - { - b.HasOne("ClientServer.Models.Files.FileReferenceTestAsset", "FileReferenceTestAsset") - .WithMany("AssetReferences") - .HasForeignKey("FileReferenceTestAssetId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("AssetReferences") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId"); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId"); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId"); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20190606164356_RemoveAssetPathsAddedCompilerOptions.cs b/src/ClientServer/Migrations/20190606164356_RemoveAssetPathsAddedCompilerOptions.cs deleted file mode 100755 index 27c7a57b56916fe0126a4afa3e95d8336151be65..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190606164356_RemoveAssetPathsAddedCompilerOptions.cs +++ /dev/null @@ -1,65 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class RemoveAssetPathsAddedCompilerOptions : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "RelativePath", - table: "FileReferenceUserFileAssets"); - - migrationBuilder.DropColumn( - name: "RelativePath", - table: "FileReferenceTestAssets"); - - migrationBuilder.DropColumn( - name: "RelativePath", - table: "FileReferenceMarkdownAssets"); - - migrationBuilder.AddColumn<string>( - name: "CompilerOptions", - table: "TestCaseSettingses", - maxLength: 500, - nullable: true); - - migrationBuilder.AddColumn<string>( - name: "CompilerOptions", - table: "DefaultCustomTestSettings", - maxLength: 500, - nullable: true); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "CompilerOptions", - table: "TestCaseSettingses"); - - migrationBuilder.DropColumn( - name: "CompilerOptions", - table: "DefaultCustomTestSettings"); - - migrationBuilder.AddColumn<string>( - name: "RelativePath", - table: "FileReferenceUserFileAssets", - maxLength: 5000, - nullable: true); - - migrationBuilder.AddColumn<string>( - name: "RelativePath", - table: "FileReferenceTestAssets", - maxLength: 5000, - nullable: true); - - migrationBuilder.AddColumn<string>( - name: "RelativePath", - table: "FileReferenceMarkdownAssets", - maxLength: 5000, - nullable: true); - } - } -} diff --git a/src/ClientServer/Migrations/20190612151016_Renames.Designer.cs b/src/ClientServer/Migrations/20190612151016_Renames.Designer.cs deleted file mode 100755 index 999b424b9ece9e9f84eed09d7cced6a48d98a80c..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190612151016_Renames.Designer.cs +++ /dev/null @@ -1,2241 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using ClientServer.Db; -using ClientServer.Models.Exercises.Release; - -namespace ClientServer.Migrations -{ - [DbContext(typeof(YapexDbContext))] - [Migration("20190612151016_Renames")] - partial class Renames - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.3"); - - modelBuilder.Entity("ClientServer.Models.AwaitDummy", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.HasKey("Id"); - - b.ToTable("AwaitDummies"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("LastEditorPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("CustomProjects"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId") - .IsUnique(); - - b.ToTable("CustomProjectDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescriptionWithFileAsAssetReference", b => - { - b.Property<int>("CustomProjectDescriptionId"); - - b.Property<int>("FileReferenceUserFileAssetId"); - - b.HasKey("CustomProjectDescriptionId", "FileReferenceUserFileAssetId"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("FileReferenceUserFileAssetId"); - - b.ToTable("CustomProjectDescriptionWithFileAsAssetReferences"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("CustomProjectSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectSolutionId") - .IsRequired(); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectSolutionId"); - - b.ToTable("CustomProjectSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("CustomProjectId"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("CustomProjectTests"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithFileAsAssetReference", b => - { - b.Property<int>("CustomProjectTestId"); - - b.Property<int>("FileReferenceUserFileAssetId"); - - b.HasKey("CustomProjectTestId", "FileReferenceUserFileAssetId"); - - b.HasIndex("CustomProjectTestId"); - - b.HasIndex("FileReferenceUserFileAssetId"); - - b.ToTable("CustomProjectTestWithFileAsAssetReferences"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.Property<int>("CustomProjectSolutionId"); - - b.Property<int>("CustomProjectTestId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("CustomProjectSolutionId", "CustomProjectTestId"); - - b.HasIndex("CustomProjectSolutionId"); - - b.HasIndex("CustomProjectTestId"); - - b.ToTable("CustomProjectTestWithSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.HasKey("Id"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .IsUnique(); - - b.ToTable("AfterSolutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("AfterSolutionId"); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TemplateFileId"); - - b.ToTable("AfterSolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("CustomTestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("AfterSolutionId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("TestId", "AfterSolutionId"); - - b.HasIndex("AfterSolutionId"); - - b.HasIndex("TestId"); - - b.ToTable("TestWithAfterSolutionAsTestResults"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl") - .HasMaxLength(500); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<int>("PLangId"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.ToTable("Templates"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CustomTestWithFileAsAssetReference", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("FileReferenceUserFileAssetId"); - - b.HasKey("CustomTestId", "FileReferenceUserFileAssetId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("FileReferenceUserFileAssetId"); - - b.ToTable("CustomTestWithFileAsAssetReferences"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanUserCreateCustomTests"); - - b.Property<bool>("CanUserCreateFiles"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<bool>("IsOnlyVisibleToOwner"); - - b.Property<bool>("IsPermanentlyLocked"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<string>("ShortDescription") - .HasMaxLength(500); - - b.Property<int>("UserGroupId"); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("Exercises"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("ExerciseDescriptions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescriptionWithFileAsAssetReference", b => - { - b.Property<int>("ExerciseDescriptionId"); - - b.Property<int>("FileReferenceMarkdownAssetId"); - - b.HasKey("ExerciseDescriptionId", "FileReferenceMarkdownAssetId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.HasIndex("FileReferenceMarkdownAssetId"); - - b.ToTable("ExerciseDescriptionWithFileAsAssetReferences"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<int?>("ExerciseId1"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.HasIndex("ExerciseId1"); - - b.ToTable("MetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime?>("AutomaticEndAt"); - - b.Property<DateTime?>("AutomaticStartAt"); - - b.Property<int>("AvailableWorkingTimeInMinutes"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<string>("GeneratedCode") - .IsRequired() - .HasMaxLength(500); - - b.Property<bool>("HadAutomaticAssessmentErrors"); - - b.Property<bool>("HasAutomaticAssessmentFinished"); - - b.Property<bool>("HasAutomaticAssessmentStarted"); - - b.Property<bool>("HasLimitedWorkingTime"); - - b.Property<bool>("HideExerciseLeaveActions"); - - b.Property<bool>("HideInOverviews"); - - b.Property<bool>("HidePrintOptions"); - - b.Property<bool>("HideSiteHeaderBar"); - - b.Property<bool>("IsReleased"); - - b.Property<bool>("IsVisibleToAllAfterRelease"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MaxManualPoint"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.Property<int>("PLangId"); - - b.Property<int>("ReleaseDurationType"); - - b.Property<int>("ReleaseStartType"); - - b.Property<DateTime?>("ReleasedAt"); - - b.Property<bool>("RunAlsoNormalTests"); - - b.Property<bool>("ShouldAutomaticAssessSubmissions"); - - b.Property<bool>("ShouldClearClipboard"); - - b.Property<bool>("ShowAdditionalLogButton"); - - b.HasKey("Id"); - - b.HasAlternateKey("GeneratedCode") - .HasName("Unique_GeneratedCode"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("PLangId"); - - b.ToTable("ExerciseReleases"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("CustomTestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("CustomTestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("CustomTestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("CustomTestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("LastEditedPLangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("LockSolutionsFlag"); - - b.Property<bool>("ShouldNotCount"); - - b.HasKey("UserId", "ExerciseReleaseId"); - - b.HasIndex("ExerciseReleaseId"); - - b.HasIndex("LastEditedPLangId"); - - b.HasIndex("UserId"); - - b.ToTable("ExerciseReleaseWithUserAsParticipations"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.Property<int>("UserId"); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<int>("PLangId"); - - b.Property<int?>("AssessmentId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LastEditingIpAddress") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int?>("MainFileId"); - - b.Property<string>("Note") - .HasMaxLength(1000); - - b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); - - b.HasIndex("AssessmentId") - .IsUnique(); - - b.HasIndex("MainFileId") - .IsUnique(); - - b.HasIndex("PLangId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("Solutions"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionAssessment", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("FeedbackForStudent") - .HasMaxLength(1000); - - b.Property<string>("LastAssessmentErrorMessage") - .HasMaxLength(5000); - - b.Property<int?>("ManualPoints"); - - b.Property<int>("MaxNormalTestPoints"); - - b.Property<int>("MaxSubmitTestPoints"); - - b.Property<int?>("NormalTestPoints"); - - b.Property<string>("NoteForOtherTutors") - .HasMaxLength(1000); - - b.Property<int?>("SubmitTestPoints"); - - b.HasKey("Id"); - - b.ToTable("SolutionAssessment"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsDisplayed"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int?>("TemplateFileId"); - - b.HasKey("Id"); - - b.HasIndex("TemplateFileId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("SolutionFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.Property<int>("TestId"); - - b.Property<int>("SolutionUserId"); - - b.Property<int>("SolutionExerciseReleaseId"); - - b.Property<int>("SolutionPLangId"); - - b.Property<int?>("CompileTimeoutInMsUsed"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<bool?>("HasCompiled"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool?>("Passed"); - - b.Property<int?>("ProgramExitCode"); - - b.Property<string>("Protocol") - .HasMaxLength(10000); - - b.Property<string>("RunnerVersion") - .HasMaxLength(500); - - b.Property<int?>("TestResultCode"); - - b.Property<string>("TestServerVersion") - .HasMaxLength(500); - - b.Property<int?>("TimeForCompiling"); - - b.Property<int?>("TimeForUserProgram"); - - b.Property<int?>("TimeoutInMsUsed"); - - b.HasKey("TestId", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.HasIndex("TestId"); - - b.HasIndex("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId"); - - b.ToTable("TestWithSingleSolutionAsTestResult"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tag", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Description") - .HasMaxLength(500); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("HtmlBackgroundColor") - .HasMaxLength(500); - - b.Property<string>("HtmlColor") - .HasMaxLength(500); - - b.Property<string>("HtmlIcon") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("DisplayName") - .HasName("Unique_Tag"); - - b.ToTable("Tags"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.Property<int>("TagId"); - - b.Property<int>("MetaDataId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("TagId", "MetaDataId"); - - b.HasIndex("MetaDataId"); - - b.HasIndex("TagId"); - - b.ToTable("TagWithMetaDatas"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int?>("CodeTemplateId") - .IsRequired(); - - b.Property<string>("Content") - .HasMaxLength(10000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); - - b.Property<bool>("IsContentVisibleForUser"); - - b.Property<bool>("IsEditableByUser"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("CodeTemplateId"); - - b.ToTable("TemplateFiles"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseReleaseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("TestTypeId"); - - b.HasIndex("UserId", "ExerciseReleaseId"); - - b.ToTable("CustomTest"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CompileTimeoutInMs"); - - b.Property<string>("CompilerOptions") - .HasMaxLength(500); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("ExerciseId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId") - .IsUnique(); - - b.ToTable("DefaultCustomTestSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("Content") - .HasMaxLength(5000); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("DisplayIndex"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("ExerciseId"); - - b.Property<bool>("IsSubmitTest"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("TestSettingsId"); - - b.Property<int>("TestTypeId"); - - b.Property<int>("Weight"); - - b.HasKey("Id"); - - b.HasIndex("ExerciseId"); - - b.HasIndex("TestSettingsId") - .IsUnique(); - - b.HasIndex("TestTypeId"); - - b.ToTable("Tests"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CompileTimeoutInMs"); - - b.Property<string>("CompilerOptions") - .HasMaxLength(500); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxDiskSpaceInKb"); - - b.Property<int>("MemoryLimitInKb"); - - b.Property<int>("TimeoutInMs"); - - b.HasKey("Id"); - - b.ToTable("TestCaseSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestType", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("TestTypes"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TestWithFileAsAssetReference", b => - { - b.Property<int>("TestId"); - - b.Property<int>("FileReferenceTestAssetId"); - - b.HasKey("TestId", "FileReferenceTestAssetId"); - - b.HasIndex("FileReferenceTestAssetId"); - - b.HasIndex("TestId"); - - b.ToTable("TestWithFileAsAssetReferences"); - }); - - modelBuilder.Entity("ClientServer.Models.Files.FileReferenceMarkdownAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<string>("OriginalName") - .HasMaxLength(500); - - b.Property<long>("SizeInBytes"); - - b.HasKey("Id"); - - b.ToTable("FileReferenceMarkdownAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Files.FileReferenceTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<string>("OriginalName") - .HasMaxLength(500); - - b.Property<long>("SizeInBytes"); - - b.HasKey("Id"); - - b.ToTable("FileReferenceTestAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Files.FileReferenceUserFileAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<string>("OriginalName") - .HasMaxLength(500); - - b.Property<long>("SizeInBytes"); - - b.HasKey("Id"); - - b.ToTable("FileReferenceUserFileAssets"); - }); - - modelBuilder.Entity("ClientServer.Models.Lang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("LangShortcut") - .HasMaxLength(500); - - b.Property<string>("Language") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("Langs"); - }); - - modelBuilder.Entity("ClientServer.Models.PLang", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("EditorHighlightModeName") - .HasMaxLength(500); - - b.Property<string>("FileExtensionsWithDot") - .HasMaxLength(500); - - b.Property<string>("InternalName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("PLangs"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.Property<int>("UserId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CsrfToken") - .HasMaxLength(500); - - b.Property<DateTime>("ExpirationDateTime"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("RandomSecret") - .HasMaxLength(500); - - b.Property<string>("UserAuthToken") - .HasMaxLength(500); - - b.HasKey("UserId"); - - b.HasIndex("UserAuthToken") - .IsUnique(); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("AuthTokens"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.Property<int>("ExternalId") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("NeedToRefreshData"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.Property<int>("UserId"); - - b.HasKey("ExternalId"); - - b.HasAlternateKey("Token") - .HasName("Unique_ExternalToken"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("ExternalUsers"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int>("GroupRolePermissionId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.HasIndex("GroupRolePermissionId") - .IsUnique(); - - b.ToTable("GroupRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanAddUserToGroup"); - - b.Property<bool>("CanAssessExercises"); - - b.Property<bool>("CanChangeExercises"); - - b.Property<bool>("CanChangeGroupData"); - - b.Property<bool>("CanChangeOtherMembersRole"); - - b.Property<bool>("CanCreateExercises"); - - b.Property<bool>("CanDeleteExercises"); - - b.Property<bool>("CanLockExercisesPermanently"); - - b.Property<bool>("CanManageExerciseReleases"); - - b.Property<bool>("CanRemoveMemberFromGroup"); - - b.Property<bool>("CanSeeExercisesFromOthersInGroup"); - - b.Property<bool>("CanSeeOtherMembers"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("GroupRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.CodeEditorSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("FontSize"); - - b.Property<bool>("HighlightCurrentLine"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<bool>("ShowInvisibles"); - - b.Property<bool>("ShowLineIndentions"); - - b.Property<bool>("ShowLineNumbers"); - - b.Property<int>("TabSize"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<bool>("UseWrapping"); - - b.HasKey("Id"); - - b.ToTable("CodeEditorSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<int>("CodeEditorSettingsId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("LangId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Theme") - .HasMaxLength(500); - - b.Property<int?>("UserId"); - - b.HasKey("Id"); - - b.HasIndex("CodeEditorSettingsId") - .IsUnique(); - - b.HasIndex("LangId"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("UserSettingses"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("SystemRolePermissionId"); - - b.HasKey("Id"); - - b.HasIndex("SystemRolePermissionId") - .IsUnique(); - - b.ToTable("SystemRoles"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRolePermission", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<bool>("CanChangeOtherUsersSystemRole"); - - b.Property<bool>("CanChangeRoles"); - - b.Property<bool>("CanChangeSystemSettings"); - - b.Property<bool>("CanChangeUserData"); - - b.Property<bool>("CanCreateGroups"); - - b.Property<bool>("CanCreateRoles"); - - b.Property<bool>("CanDeleteActivatedUsers"); - - b.Property<bool>("CanDeleteGroups"); - - b.Property<bool>("CanDeleteRoles"); - - b.Property<bool>("CanManageNewUsers"); - - b.Property<bool>("CanManageTags"); - - b.Property<bool>("CanViewDashboard"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("SystemRolePermissions"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("CurrentServerMessage") - .HasMaxLength(1000); - - b.Property<int>("CustomProjectTestCompileTimeoutInMs"); - - b.Property<int>("CustomProjectTestMaxDiskSpaceInKb"); - - b.Property<int>("CustomProjectTestMemoryLimitInKb"); - - b.Property<int>("CustomProjectTestTimeoutInMs"); - - b.Property<int>("DefaultGroupCreatorGroupRoleId"); - - b.Property<int>("DefaultGroupRoleId"); - - b.Property<int>("DefaultUserGroupId"); - - b.Property<int>("JustRunProgramCompileTimeoutInMs"); - - b.Property<int>("JustRunProgramMaxDiskSpaceInKb"); - - b.Property<int>("JustRunProgramMemoryLimitInKb"); - - b.Property<int>("JustRunProgramTimeoutInMs"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<int>("MaxCustomProjectsPerUser"); - - b.Property<int>("MaxCustomTestsPerParticipation"); - - b.Property<int>("MaxNumberOfTestsWithOneRequest"); - - b.Property<int>("MaxNumberOfTestsWithOneRequestSubmitTestServer"); - - b.Property<int>("SubmitTestServerTimeoutInMs"); - - b.Property<string>("SubmitTestServerUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerConfigUiUrl") - .HasMaxLength(500); - - b.Property<string>("TestServerStatsUrl") - .HasMaxLength(500); - - b.Property<int>("TestServerTimeoutInMs"); - - b.Property<string>("TestServerUrl") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("DefaultGroupCreatorGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultGroupRoleId") - .IsUnique(); - - b.HasIndex("DefaultUserGroupId") - .IsUnique(); - - b.ToTable("SystemSettings"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<string>("FirstName") - .HasMaxLength(500); - - b.Property<bool>("IsActivated"); - - b.Property<DateTime>("LastLoginAt"); - - b.Property<string>("LastName") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("Password") - .HasMaxLength(500); - - b.Property<int?>("SystemRoleId"); - - b.Property<string>("Token") - .IsRequired() - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasAlternateKey("Token") - .HasName("Unique_Token"); - - b.HasIndex("SystemRoleId"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserGroup", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Email") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("Id"); - - b.ToTable("UserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.Property<int>("UserId"); - - b.Property<int>("UserGroupId"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int>("GroupRoleId"); - - b.Property<DateTime>("LastUpdatedAt"); - - b.HasKey("UserId", "UserGroupId"); - - b.HasIndex("GroupRoleId"); - - b.HasIndex("UserGroupId"); - - b.HasIndex("UserId"); - - b.ToTable("UserWithUserGroups"); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProject", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("CustomProjects") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescription", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescriptionWithFileAsAssetReference", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectDescription") - .WithMany("AssetReferences") - .HasForeignKey("CustomProjectDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Files.FileReferenceUserFileAsset", "FileReferenceUserFileAsset") - .WithMany("CustomProjectDescriptionWithFileAsAssetReferences") - .HasForeignKey("FileReferenceUserFileAssetId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Solutions") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolutionFile", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution") - .WithMany("SolutionFiles") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTest", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") - .WithMany("Tests") - .HasForeignKey("CustomProjectId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.CustomProjects.CustomProjectTest", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithFileAsAssetReference", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("AssetReferences") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Files.FileReferenceUserFileAsset", "FileReferenceUserFileAsset") - .WithMany("CustomProjectTestWithFileAsAssetReferences") - .HasForeignKey("FileReferenceUserFileAssetId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectSolution", "CustomProjectSolution") - .WithMany("TestResults") - .HasForeignKey("CustomProjectSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") - .WithMany("TestResults") - .HasForeignKey("CustomProjectTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithOne("AfterSolution") - .HasForeignKey("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.AfterSolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("SolutionFiles") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany() - .HasForeignKey("TemplateFileId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.CustomTestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("CustomTestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("AfterTestResults") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.AfterSolutions.TestWithAfterSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.AfterSolutions.AfterSolution", "AfterSolution") - .WithMany("TestResults") - .HasForeignKey("AfterSolutionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("AfterTestResults") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("CodeTemplates") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.CodeTemplate", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.CustomTestWithFileAsAssetReference", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("AssetReferences") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Files.FileReferenceUserFileAsset", "FileReferenceUserFileAsset") - .WithMany("CustomTestWithFileAsAssetReferences") - .HasForeignKey("FileReferenceUserFileAssetId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => - { - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("Exercises") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("Exercises") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescription", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("Description") - .HasForeignKey("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.ExerciseDescriptionWithFileAsAssetReference", b => - { - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription", "ExerciseDescription") - .WithMany("AssetReferences") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Files.FileReferenceMarkdownAsset", "FileReferenceMarkdownAsset") - .WithMany("AssetReferences") - .HasForeignKey("FileReferenceMarkdownAssetId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise") - .WithOne("MetaData") - .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Releases") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.CustomTestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") - .WithMany("TestResultsNew") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("CustomTestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", b => - { - b.HasOne("ClientServer.Models.Exercises.Release.ExerciseRelease", "ExerciseRelease") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.PLang", "LastEditedPLang") - .WithMany() - .HasForeignKey("LastEditedPLangId"); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("ExerciseReleaseWithUserAsParticipations") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.Solution", b => - { - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionAssessment", "Assessment") - .WithOne("Solution") - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "AssessmentId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.SolutionFile", "MainFile") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Solution.Solution", "MainFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.PLang", "PLang") - .WithMany() - .HasForeignKey("PLangId"); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation", "ExerciseReleaseWithUserAsParticipation") - .WithMany("Solutions") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.SolutionFile", b => - { - b.HasOne("ClientServer.Models.Exercises.TemplateFile", "TemplateFile") - .WithMany("SolutionParts") - .HasForeignKey("TemplateFileId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("SolutionFiles") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Solution.TestWithSingleSolutionAsTestResult", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("TestResultsNew") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.Solution", "Solution") - .WithMany("TestResults") - .HasForeignKey("SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TagWithMetaData", b => - { - b.HasOne("ClientServer.Models.Exercises.MetaData", "MetaData") - .WithMany("TagWithMetaDatas") - .HasForeignKey("MetaDataId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tag", "Tag") - .WithMany() - .HasForeignKey("TagId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TemplateFile", b => - { - b.HasOne("ClientServer.Models.Exercises.CodeTemplate") - .WithMany("TemplateFiles") - .HasForeignKey("CodeTemplateId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTest", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Solution.ExerciseReleaseWithUserAsParticipation") - .WithMany("CustomTests") - .HasForeignKey("UserId", "ExerciseReleaseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithOne("DefaultCustomTestSettings") - .HasForeignKey("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", "ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.Test", b => - { - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany("Tests") - .HasForeignKey("ExerciseId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestSettings", "TestSettings") - .WithOne() - .HasForeignKey("ClientServer.Models.Exercises.Tests.Test", "TestSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.TestType", "TestType") - .WithMany() - .HasForeignKey("TestTypeId"); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Exercises.TestWithFileAsAssetReference", b => - { - b.HasOne("ClientServer.Models.Files.FileReferenceTestAsset", "FileReferenceTestAsset") - .WithMany("AssetReferences") - .HasForeignKey("FileReferenceTestAssetId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Tests.Test", "Test") - .WithMany("AssetReferences") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.AuthToken", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.AuthToken", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.ExternalUser", b => - { - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("ExternalUser") - .HasForeignKey("ClientServer.Models.Users.ExternalUser", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.GroupRole", b => - { - b.HasOne("ClientServer.Models.Users.GroupRolePermission", "GroupRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.GroupRole", "GroupRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.Settings.UserSetting", b => - { - b.HasOne("ClientServer.Models.Users.Settings.CodeEditorSetting", "CodeEditorSetting") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "CodeEditorSettingsId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Lang", "Lang") - .WithMany() - .HasForeignKey("LangId") - .OnDelete(DeleteBehavior.SetNull); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithOne("UserSettings") - .HasForeignKey("ClientServer.Models.Users.Settings.UserSetting", "UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemRole", b => - { - b.HasOne("ClientServer.Models.Users.SystemRolePermission", "SystemRolePermission") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemRole", "SystemRolePermissionId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("ClientServer.Models.Users.SystemSetting", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupCreatorGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupCreatorGroupRoleId"); - - b.HasOne("ClientServer.Models.Users.GroupRole", "DefaultGroupRole") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultGroupRoleId"); - - b.HasOne("ClientServer.Models.Users.UserGroup", "DefaultUserGroup") - .WithOne() - .HasForeignKey("ClientServer.Models.Users.SystemSetting", "DefaultUserGroupId"); - }); - - modelBuilder.Entity("ClientServer.Models.Users.User", b => - { - b.HasOne("ClientServer.Models.Users.SystemRole", "SystemRole") - .WithMany() - .HasForeignKey("SystemRoleId") - .OnDelete(DeleteBehavior.SetNull); - }); - - modelBuilder.Entity("ClientServer.Models.Users.UserWithUserGroup", b => - { - b.HasOne("ClientServer.Models.Users.GroupRole", "GroupRole") - .WithMany("UserUserGroups") - .HasForeignKey("GroupRoleId"); - - b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserGroupId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Users.User", "User") - .WithMany("UserWithUserGroups") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - } - } -} diff --git a/src/ClientServer/Migrations/20190612151016_Renames.cs b/src/ClientServer/Migrations/20190612151016_Renames.cs deleted file mode 100755 index 670255e4fb7942b07cef8f3deade82603a3d58f2..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190612151016_Renames.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class Renames : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.RenameColumn( - name: "CanReleaseExercises", - table: "GroupRolePermissions", - newName: "CanManageExerciseReleases" - ); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.RenameColumn( - name: "CanManageExerciseReleases", - table: "GroupRolePermissions", - newName: "CanReleaseExercises" - ); - } - } -} diff --git a/src/ClientServer/Migrations/20190728133647_RemoveOldDbAssets.cs b/src/ClientServer/Migrations/20190728133647_RemoveOldDbAssets.cs deleted file mode 100755 index 81942cd3d339c237333727fddcc15e9e36ad1bda..0000000000000000000000000000000000000000 --- a/src/ClientServer/Migrations/20190728133647_RemoveOldDbAssets.cs +++ /dev/null @@ -1,157 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace ClientServer.Migrations -{ - public partial class RemoveOldDbAssets : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "FK_CustomProjectTestAssets_CustomProjectTests_CustomProjectTestId", - table: "CustomProjectTestAssets"); - - migrationBuilder.DropIndex( - name: "IX_CustomProjectTestAssets_CustomProjectTestId", - table: "CustomProjectTestAssets"); - - migrationBuilder.DropColumn( - name: "CustomProjectTestId", - table: "CustomProjectTestAssets"); - - migrationBuilder.DropTable( - name: "Assets"); - - migrationBuilder.DropTable( - name: "CustomTestAssets"); - - migrationBuilder.DropTable( - name: "TestAssets"); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "Assets", - columns: table => new - { - Id = table.Column<int>(nullable: false) - .Annotation("Npgsql:ValueGeneratedOnAdd", true), - AssetUrl = table.Column<string>(maxLength: 500, nullable: true), - Content = table.Column<byte[]>(nullable: true), - CreatedAt = table.Column<DateTime>(nullable: false), - CustomProjectDescriptionId = table.Column<int>(nullable: true), - DisplayName = table.Column<string>(maxLength: 500, nullable: true), - ExerciseDescriptionId = table.Column<int>(nullable: false), - LastUpdatedAt = table.Column<DateTime>(nullable: false), - MimeType = table.Column<string>(maxLength: 500, nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_Assets", x => x.Id); - table.ForeignKey( - name: "FK_Assets_CustomProjectDescriptions_CustomProjectDescriptionId", - column: x => x.CustomProjectDescriptionId, - principalTable: "CustomProjectDescriptions", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - table.ForeignKey( - name: "FK_Assets_ExerciseDescriptions_ExerciseDescriptionId", - column: x => x.ExerciseDescriptionId, - principalTable: "ExerciseDescriptions", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "CustomTestAssets", - columns: table => new - { - Id = table.Column<int>(nullable: false) - .Annotation("Npgsql:ValueGeneratedOnAdd", true), - Content = table.Column<byte[]>(nullable: true), - CreatedAt = table.Column<DateTime>(nullable: false), - CustomTestId = table.Column<int>(nullable: false), - DisplayName = table.Column<string>(maxLength: 500, nullable: true), - Hash = table.Column<string>(maxLength: 500, nullable: true), - LastUpdatedAt = table.Column<DateTime>(nullable: false), - MimeType = table.Column<string>(maxLength: 500, nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_CustomTestAssets", x => x.Id); - table.ForeignKey( - name: "FK_CustomTestAssets_CustomTest_CustomTestId", - column: x => x.CustomTestId, - principalTable: "CustomTest", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "TestAssets", - columns: table => new - { - Id = table.Column<int>(nullable: false) - .Annotation("Npgsql:ValueGeneratedOnAdd", true), - Content = table.Column<byte[]>(nullable: true), - CreatedAt = table.Column<DateTime>(nullable: false), - DisplayName = table.Column<string>(maxLength: 500, nullable: true), - Hash = table.Column<string>(maxLength: 500, nullable: true), - LastUpdatedAt = table.Column<DateTime>(nullable: false), - MimeType = table.Column<string>(maxLength: 500, nullable: true), - TestId = table.Column<int>(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_TestAssets", x => x.Id); - table.ForeignKey( - name: "FK_TestAssets_Tests_TestId", - column: x => x.TestId, - principalTable: "Tests", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.AddColumn<int>( - name: "CustomProjectTestId", - table: "CustomProjectTestAssets", - nullable: false, - defaultValue: 0); - - migrationBuilder.CreateIndex( - name: "IX_CustomProjectTestAssets_CustomProjectTestId", - table: "CustomProjectTestAssets", - column: "CustomProjectTestId"); - - migrationBuilder.CreateIndex( - name: "IX_Assets_CustomProjectDescriptionId", - table: "Assets", - column: "CustomProjectDescriptionId"); - - migrationBuilder.CreateIndex( - name: "IX_Assets_ExerciseDescriptionId", - table: "Assets", - column: "ExerciseDescriptionId"); - - migrationBuilder.CreateIndex( - name: "IX_CustomTestAssets_CustomTestId", - table: "CustomTestAssets", - column: "CustomTestId"); - - migrationBuilder.CreateIndex( - name: "IX_TestAssets_TestId", - table: "TestAssets", - column: "TestId"); - - migrationBuilder.AddForeignKey( - name: "FK_CustomProjectTestAssets_CustomProjectTests_CustomProjectTestId", - table: "CustomProjectTestAssets", - column: "CustomProjectTestId", - principalTable: "CustomProjectTests", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - } - } -} diff --git a/src/ClientServer/Migrations/20190728133647_RemoveOldDbAssets.Designer.cs b/src/ClientServer/Migrations/20190729124536_init.Designer.cs similarity index 94% rename from src/ClientServer/Migrations/20190728133647_RemoveOldDbAssets.Designer.cs rename to src/ClientServer/Migrations/20190729124536_init.Designer.cs index 0da3864f4aea3ab7986eecf60dd48aa1262b246c..c6c64f5e229b2a029d19d3081a7aa30cc33e0805 100755 --- a/src/ClientServer/Migrations/20190728133647_RemoveOldDbAssets.Designer.cs +++ b/src/ClientServer/Migrations/20190729124536_init.Designer.cs @@ -9,8 +9,8 @@ using ClientServer.Models.Exercises.Release; namespace ClientServer.Migrations { [DbContext(typeof(YapexDbContext))] - [Migration("20190728133647_RemoveOldDbAssets")] - partial class RemoveOldDbAssets + [Migration("20190729124536_init")] + partial class init { protected override void BuildTargetModel(ModelBuilder modelBuilder) { @@ -35,7 +35,7 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("DisplayName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int>("LastEditorPLangId"); @@ -56,7 +56,7 @@ namespace ClientServer.Migrations .ValueGeneratedOnAdd(); b.Property<string>("Content") - .HasMaxLength(10000); + .HasMaxLength(50000); b.Property<DateTime>("CreatedAt"); @@ -120,7 +120,7 @@ namespace ClientServer.Migrations .ValueGeneratedOnAdd(); b.Property<string>("Content") - .HasMaxLength(10000); + .HasMaxLength(70000); b.Property<DateTime>("CreatedAt"); @@ -130,7 +130,7 @@ namespace ClientServer.Migrations b.Property<int>("DisplayIndex"); b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<bool>("IsDisplayed"); @@ -149,7 +149,7 @@ namespace ClientServer.Migrations .ValueGeneratedOnAdd(); b.Property<string>("Content") - .HasMaxLength(5000); + .HasMaxLength(80000); b.Property<DateTime>("CreatedAt"); @@ -158,7 +158,7 @@ namespace ClientServer.Migrations b.Property<int>("DisplayIndex"); b.Property<string>("DisplayName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); @@ -190,15 +190,15 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("DisplayName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("Hash") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); b.Property<string>("MimeType") - .HasMaxLength(500); + .HasMaxLength(2000); b.HasKey("Id"); @@ -239,15 +239,15 @@ namespace ClientServer.Migrations b.Property<int?>("ProgramExitCode"); b.Property<string>("Protocol") - .HasMaxLength(10000); + .HasMaxLength(160100); b.Property<string>("RunnerVersion") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int?>("TestResultCode"); b.Property<string>("TestServerVersion") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int?>("TimeForCompiling"); @@ -300,14 +300,14 @@ namespace ClientServer.Migrations b.Property<int>("AfterSolutionId"); b.Property<string>("Content") - .HasMaxLength(10000); + .HasMaxLength(70000); b.Property<DateTime>("CreatedAt"); b.Property<int>("DisplayIndex"); b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<bool>("IsDisplayed"); @@ -343,15 +343,15 @@ namespace ClientServer.Migrations b.Property<int?>("ProgramExitCode"); b.Property<string>("Protocol") - .HasMaxLength(10000); + .HasMaxLength(160100); b.Property<string>("RunnerVersion") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int?>("TestResultCode"); b.Property<string>("TestServerVersion") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int?>("TimeForCompiling"); @@ -387,15 +387,15 @@ namespace ClientServer.Migrations b.Property<int?>("ProgramExitCode"); b.Property<string>("Protocol") - .HasMaxLength(10000); + .HasMaxLength(160100); b.Property<string>("RunnerVersion") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int?>("TestResultCode"); b.Property<string>("TestServerVersion") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int?>("TimeForCompiling"); @@ -466,7 +466,7 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("DisplayName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<bool>("IsOnlyVisibleToOwner"); @@ -475,10 +475,10 @@ namespace ClientServer.Migrations b.Property<DateTime>("LastUpdatedAt"); b.Property<string>("Note") - .HasMaxLength(1000); + .HasMaxLength(10000); b.Property<string>("ShortDescription") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int>("UserGroupId"); @@ -499,7 +499,7 @@ namespace ClientServer.Migrations .ValueGeneratedOnAdd(); b.Property<string>("Content") - .HasMaxLength(10000); + .HasMaxLength(50000); b.Property<DateTime>("CreatedAt"); @@ -570,7 +570,7 @@ namespace ClientServer.Migrations b.Property<string>("GeneratedCode") .IsRequired() - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<bool>("HadAutomaticAssessmentErrors"); @@ -597,7 +597,7 @@ namespace ClientServer.Migrations b.Property<int?>("MaxManualPoint"); b.Property<string>("Note") - .HasMaxLength(1000); + .HasMaxLength(10000); b.Property<int>("PLangId"); @@ -650,15 +650,15 @@ namespace ClientServer.Migrations b.Property<int?>("ProgramExitCode"); b.Property<string>("Protocol") - .HasMaxLength(10000); + .HasMaxLength(160100); b.Property<string>("RunnerVersion") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int?>("TestResultCode"); b.Property<string>("TestServerVersion") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int?>("TimeForCompiling"); @@ -715,14 +715,14 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("LastEditingIpAddress") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); b.Property<int?>("MainFileId"); b.Property<string>("Note") - .HasMaxLength(1000); + .HasMaxLength(10000); b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); @@ -745,10 +745,10 @@ namespace ClientServer.Migrations .ValueGeneratedOnAdd(); b.Property<string>("FeedbackForStudent") - .HasMaxLength(1000); + .HasMaxLength(10000); b.Property<string>("LastAssessmentErrorMessage") - .HasMaxLength(5000); + .HasMaxLength(80000); b.Property<int?>("ManualPoints"); @@ -759,7 +759,7 @@ namespace ClientServer.Migrations b.Property<int?>("NormalTestPoints"); b.Property<string>("NoteForOtherTutors") - .HasMaxLength(1000); + .HasMaxLength(10000); b.Property<int?>("SubmitTestPoints"); @@ -774,14 +774,14 @@ namespace ClientServer.Migrations .ValueGeneratedOnAdd(); b.Property<string>("Content") - .HasMaxLength(10000); + .HasMaxLength(70000); b.Property<DateTime>("CreatedAt"); b.Property<int>("DisplayIndex"); b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<bool>("IsDisplayed"); @@ -827,15 +827,15 @@ namespace ClientServer.Migrations b.Property<int?>("ProgramExitCode"); b.Property<string>("Protocol") - .HasMaxLength(10000); + .HasMaxLength(160100); b.Property<string>("RunnerVersion") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int?>("TestResultCode"); b.Property<string>("TestServerVersion") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int?>("TimeForCompiling"); @@ -860,19 +860,19 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("Description") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("DisplayName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("HtmlBackgroundColor") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("HtmlColor") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("HtmlIcon") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); @@ -912,14 +912,14 @@ namespace ClientServer.Migrations .IsRequired(); b.Property<string>("Content") - .HasMaxLength(10000); + .HasMaxLength(70000); b.Property<DateTime>("CreatedAt"); b.Property<int>("DisplayIndex"); b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<bool>("IsContentVisibleForUser"); @@ -940,14 +940,14 @@ namespace ClientServer.Migrations .ValueGeneratedOnAdd(); b.Property<string>("Content") - .HasMaxLength(5000); + .HasMaxLength(80000); b.Property<DateTime>("CreatedAt"); b.Property<int>("DisplayIndex"); b.Property<string>("DisplayName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int>("ExerciseReleaseId"); @@ -974,7 +974,7 @@ namespace ClientServer.Migrations b.Property<int>("CompileTimeoutInMs"); b.Property<string>("CompilerOptions") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("CreatedAt"); @@ -1002,14 +1002,14 @@ namespace ClientServer.Migrations .ValueGeneratedOnAdd(); b.Property<string>("Content") - .HasMaxLength(5000); + .HasMaxLength(80000); b.Property<DateTime>("CreatedAt"); b.Property<int>("DisplayIndex"); b.Property<string>("DisplayName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int>("ExerciseId"); @@ -1043,7 +1043,7 @@ namespace ClientServer.Migrations b.Property<int>("CompileTimeoutInMs"); b.Property<string>("CompilerOptions") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("CreatedAt"); @@ -1068,10 +1068,10 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("DisplayName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("InternalName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); @@ -1103,15 +1103,15 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("Hash") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); b.Property<string>("MimeType") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("OriginalName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<long>("SizeInBytes"); @@ -1128,15 +1128,15 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("Hash") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); b.Property<string>("MimeType") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("OriginalName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<long>("SizeInBytes"); @@ -1153,15 +1153,15 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("Hash") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); b.Property<string>("MimeType") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("OriginalName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<long>("SizeInBytes"); @@ -1178,10 +1178,10 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("LangShortcut") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("Language") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); @@ -1198,16 +1198,16 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("DisplayName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("EditorHighlightModeName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("FileExtensionsWithDot") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("InternalName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); @@ -1223,17 +1223,17 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("CsrfToken") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("ExpirationDateTime"); b.Property<DateTime>("LastUpdatedAt"); b.Property<string>("RandomSecret") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("UserAuthToken") - .HasMaxLength(500); + .HasMaxLength(2000); b.HasKey("UserId"); @@ -1254,13 +1254,13 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("Email") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("FirstName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("LastName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); @@ -1268,7 +1268,7 @@ namespace ClientServer.Migrations b.Property<string>("Token") .IsRequired() - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int>("UserId"); @@ -1291,7 +1291,7 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("DisplayName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int>("GroupRolePermissionId"); @@ -1365,7 +1365,7 @@ namespace ClientServer.Migrations b.Property<int>("TabSize"); b.Property<string>("Theme") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<bool>("UseWrapping"); @@ -1388,7 +1388,7 @@ namespace ClientServer.Migrations b.Property<DateTime>("LastUpdatedAt"); b.Property<string>("Theme") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int?>("UserId"); @@ -1413,10 +1413,10 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("DisplayName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("Email") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); @@ -1476,7 +1476,7 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("CurrentServerMessage") - .HasMaxLength(1000); + .HasMaxLength(10000); b.Property<int>("CustomProjectTestCompileTimeoutInMs"); @@ -1513,18 +1513,18 @@ namespace ClientServer.Migrations b.Property<int>("SubmitTestServerTimeoutInMs"); b.Property<string>("SubmitTestServerUrl") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("TestServerConfigUiUrl") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("TestServerStatsUrl") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int>("TestServerTimeoutInMs"); b.Property<string>("TestServerUrl") - .HasMaxLength(500); + .HasMaxLength(2000); b.HasKey("Id"); @@ -1548,28 +1548,28 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("Email") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("FirstName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<bool>("IsActivated"); b.Property<DateTime>("LastLoginAt"); b.Property<string>("LastName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); b.Property<string>("Password") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int?>("SystemRoleId"); b.Property<string>("Token") .IsRequired() - .HasMaxLength(500); + .HasMaxLength(2000); b.HasKey("Id"); @@ -1589,10 +1589,10 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("DisplayName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("Email") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); diff --git a/src/ClientServer/Migrations/20160824181544_init.cs b/src/ClientServer/Migrations/20190729124536_init.cs old mode 100644 new mode 100755 similarity index 53% rename from src/ClientServer/Migrations/20160824181544_init.cs rename to src/ClientServer/Migrations/20190729124536_init.cs index bb8b12074e67279e2a48485c8d5066f7c0725d06..45411889a8260ec61b9ad4bf8b1f84ac82a4c396 --- a/src/ClientServer/Migrations/20160824181544_init.cs +++ b/src/ClientServer/Migrations/20190729124536_init.cs @@ -21,18 +21,41 @@ namespace ClientServer.Migrations }); migrationBuilder.CreateTable( - name: "ContentTypes", + name: "CustomProjectTestAssets", columns: table => new { Id = table.Column<int>(nullable: false) .Annotation("Npgsql:ValueGeneratedOnAdd", true), + Content = table.Column<byte[]>(nullable: true), CreatedAt = table.Column<DateTime>(nullable: false), + DisplayName = table.Column<string>(maxLength: 2000, nullable: true), + Hash = table.Column<string>(maxLength: 2000, nullable: true), LastUpdatedAt = table.Column<DateTime>(nullable: false), - Type = table.Column<string>(nullable: true) + MimeType = table.Column<string>(maxLength: 2000, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_CustomProjectTestAssets", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "SolutionAssessment", + columns: table => new + { + Id = table.Column<int>(nullable: false) + .Annotation("Npgsql:ValueGeneratedOnAdd", true), + FeedbackForStudent = table.Column<string>(maxLength: 10000, nullable: true), + LastAssessmentErrorMessage = table.Column<string>(maxLength: 80000, nullable: true), + ManualPoints = table.Column<int>(nullable: true), + MaxNormalTestPoints = table.Column<int>(nullable: false), + MaxSubmitTestPoints = table.Column<int>(nullable: false), + NormalTestPoints = table.Column<int>(nullable: true), + NoteForOtherTutors = table.Column<string>(maxLength: 10000, nullable: true), + SubmitTestPoints = table.Column<int>(nullable: true) }, constraints: table => { - table.PrimaryKey("PK_ContentTypes", x => x.Id); + table.PrimaryKey("PK_SolutionAssessment", x => x.Id); }); migrationBuilder.CreateTable( @@ -42,7 +65,11 @@ namespace ClientServer.Migrations Id = table.Column<int>(nullable: false) .Annotation("Npgsql:ValueGeneratedOnAdd", true), CreatedAt = table.Column<DateTime>(nullable: false), - DisplayName = table.Column<string>(nullable: true), + Description = table.Column<string>(maxLength: 2000, nullable: true), + DisplayName = table.Column<string>(maxLength: 2000, nullable: true), + HtmlBackgroundColor = table.Column<string>(maxLength: 2000, nullable: true), + HtmlColor = table.Column<string>(maxLength: 2000, nullable: true), + HtmlIcon = table.Column<string>(maxLength: 2000, nullable: true), LastUpdatedAt = table.Column<DateTime>(nullable: false) }, constraints: table => @@ -56,6 +83,8 @@ namespace ClientServer.Migrations { Id = table.Column<int>(nullable: false) .Annotation("Npgsql:ValueGeneratedOnAdd", true), + CompileTimeoutInMs = table.Column<int>(nullable: false), + CompilerOptions = table.Column<string>(maxLength: 2000, nullable: true), CreatedAt = table.Column<DateTime>(nullable: false), LastUpdatedAt = table.Column<DateTime>(nullable: false), MaxDiskSpaceInKb = table.Column<int>(nullable: false), @@ -74,8 +103,8 @@ namespace ClientServer.Migrations Id = table.Column<int>(nullable: false) .Annotation("Npgsql:ValueGeneratedOnAdd", true), CreatedAt = table.Column<DateTime>(nullable: false), - DisplayName = table.Column<string>(nullable: true), - InternalName = table.Column<string>(nullable: true), + DisplayName = table.Column<string>(maxLength: 2000, nullable: true), + InternalName = table.Column<string>(maxLength: 2000, nullable: true), LastUpdatedAt = table.Column<DateTime>(nullable: false) }, constraints: table => @@ -83,6 +112,60 @@ namespace ClientServer.Migrations table.PrimaryKey("PK_TestTypes", x => x.Id); }); + migrationBuilder.CreateTable( + name: "FileReferenceMarkdownAssets", + columns: table => new + { + Id = table.Column<int>(nullable: false) + .Annotation("Npgsql:ValueGeneratedOnAdd", true), + CreatedAt = table.Column<DateTime>(nullable: false), + Hash = table.Column<string>(maxLength: 2000, nullable: true), + LastUpdatedAt = table.Column<DateTime>(nullable: false), + MimeType = table.Column<string>(maxLength: 2000, nullable: true), + OriginalName = table.Column<string>(maxLength: 2000, nullable: true), + SizeInBytes = table.Column<long>(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_FileReferenceMarkdownAssets", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "FileReferenceTestAssets", + columns: table => new + { + Id = table.Column<int>(nullable: false) + .Annotation("Npgsql:ValueGeneratedOnAdd", true), + CreatedAt = table.Column<DateTime>(nullable: false), + Hash = table.Column<string>(maxLength: 2000, nullable: true), + LastUpdatedAt = table.Column<DateTime>(nullable: false), + MimeType = table.Column<string>(maxLength: 2000, nullable: true), + OriginalName = table.Column<string>(maxLength: 2000, nullable: true), + SizeInBytes = table.Column<long>(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_FileReferenceTestAssets", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "FileReferenceUserFileAssets", + columns: table => new + { + Id = table.Column<int>(nullable: false) + .Annotation("Npgsql:ValueGeneratedOnAdd", true), + CreatedAt = table.Column<DateTime>(nullable: false), + Hash = table.Column<string>(maxLength: 2000, nullable: true), + LastUpdatedAt = table.Column<DateTime>(nullable: false), + MimeType = table.Column<string>(maxLength: 2000, nullable: true), + OriginalName = table.Column<string>(maxLength: 2000, nullable: true), + SizeInBytes = table.Column<long>(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_FileReferenceUserFileAssets", x => x.Id); + }); + migrationBuilder.CreateTable( name: "Langs", columns: table => new @@ -90,7 +173,8 @@ namespace ClientServer.Migrations Id = table.Column<int>(nullable: false) .Annotation("Npgsql:ValueGeneratedOnAdd", true), CreatedAt = table.Column<DateTime>(nullable: false), - Language = table.Column<string>(nullable: true), + LangShortcut = table.Column<string>(maxLength: 2000, nullable: true), + Language = table.Column<string>(maxLength: 2000, nullable: true), LastUpdatedAt = table.Column<DateTime>(nullable: false) }, constraints: table => @@ -105,8 +189,10 @@ namespace ClientServer.Migrations Id = table.Column<int>(nullable: false) .Annotation("Npgsql:ValueGeneratedOnAdd", true), CreatedAt = table.Column<DateTime>(nullable: false), - DisplayName = table.Column<string>(nullable: true), - InternalName = table.Column<string>(nullable: true), + DisplayName = table.Column<string>(maxLength: 2000, nullable: true), + EditorHighlightModeName = table.Column<string>(maxLength: 2000, nullable: true), + FileExtensionsWithDot = table.Column<string>(maxLength: 2000, nullable: true), + InternalName = table.Column<string>(maxLength: 2000, nullable: true), LastUpdatedAt = table.Column<DateTime>(nullable: false) }, constraints: table => @@ -123,14 +209,15 @@ namespace ClientServer.Migrations CanAddUserToGroup = table.Column<bool>(nullable: false), CanAssessExercises = table.Column<bool>(nullable: false), CanChangeExercises = table.Column<bool>(nullable: false), + CanChangeGroupData = table.Column<bool>(nullable: false), CanChangeOtherMembersRole = table.Column<bool>(nullable: false), - CanCopyExercises = table.Column<bool>(nullable: false), CanCreateExercises = table.Column<bool>(nullable: false), CanDeleteExercises = table.Column<bool>(nullable: false), - CanExportExerciseResults = table.Column<bool>(nullable: false), - CanReleaseExercises = table.Column<bool>(nullable: false), + CanLockExercisesPermanently = table.Column<bool>(nullable: false), + CanManageExerciseReleases = table.Column<bool>(nullable: false), CanRemoveMemberFromGroup = table.Column<bool>(nullable: false), CanSeeExercisesFromOthersInGroup = table.Column<bool>(nullable: false), + CanSeeOtherMembers = table.Column<bool>(nullable: false), CreatedAt = table.Column<DateTime>(nullable: false), LastUpdatedAt = table.Column<DateTime>(nullable: false) }, @@ -139,20 +226,6 @@ namespace ClientServer.Migrations table.PrimaryKey("PK_GroupRolePermissions", x => x.Id); }); - migrationBuilder.CreateTable( - name: "LdapUsers", - columns: table => new - { - Id = table.Column<int>(nullable: false) - .Annotation("Npgsql:ValueGeneratedOnAdd", true), - CreatedAt = table.Column<DateTime>(nullable: false), - LastUpdatedAt = table.Column<DateTime>(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_LdapUsers", x => x.Id); - }); - migrationBuilder.CreateTable( name: "CodeEditorSettings", columns: table => new @@ -167,7 +240,8 @@ namespace ClientServer.Migrations ShowLineIndentions = table.Column<bool>(nullable: false), ShowLineNumbers = table.Column<bool>(nullable: false), TabSize = table.Column<int>(nullable: false), - Theme = table.Column<string>(nullable: true) + Theme = table.Column<string>(maxLength: 2000, nullable: true), + UseWrapping = table.Column<bool>(nullable: false) }, constraints: table => { @@ -180,16 +254,18 @@ namespace ClientServer.Migrations { Id = table.Column<int>(nullable: false) .Annotation("Npgsql:ValueGeneratedOnAdd", true), - CanChangeGroups = table.Column<bool>(nullable: false), CanChangeOtherUsersSystemRole = table.Column<bool>(nullable: false), CanChangeRoles = table.Column<bool>(nullable: false), CanChangeSystemSettings = table.Column<bool>(nullable: false), + CanChangeUserData = table.Column<bool>(nullable: false), CanCreateGroups = table.Column<bool>(nullable: false), CanCreateRoles = table.Column<bool>(nullable: false), CanDeleteActivatedUsers = table.Column<bool>(nullable: false), CanDeleteGroups = table.Column<bool>(nullable: false), CanDeleteRoles = table.Column<bool>(nullable: false), CanManageNewUsers = table.Column<bool>(nullable: false), + CanManageTags = table.Column<bool>(nullable: false), + CanViewDashboard = table.Column<bool>(nullable: false), CreatedAt = table.Column<DateTime>(nullable: false), LastUpdatedAt = table.Column<DateTime>(nullable: false) }, @@ -205,8 +281,8 @@ namespace ClientServer.Migrations Id = table.Column<int>(nullable: false) .Annotation("Npgsql:ValueGeneratedOnAdd", true), CreatedAt = table.Column<DateTime>(nullable: false), - DisplayName = table.Column<string>(nullable: true), - Email = table.Column<string>(nullable: true), + DisplayName = table.Column<string>(maxLength: 2000, nullable: true), + Email = table.Column<string>(maxLength: 2000, nullable: true), LastUpdatedAt = table.Column<DateTime>(nullable: false) }, constraints: table => @@ -221,7 +297,7 @@ namespace ClientServer.Migrations Id = table.Column<int>(nullable: false) .Annotation("Npgsql:ValueGeneratedOnAdd", true), CreatedAt = table.Column<DateTime>(nullable: false), - DisplayName = table.Column<string>(nullable: true), + DisplayName = table.Column<string>(maxLength: 2000, nullable: true), GroupRolePermissionId = table.Column<int>(nullable: false), LastUpdatedAt = table.Column<DateTime>(nullable: false) }, @@ -243,8 +319,8 @@ namespace ClientServer.Migrations Id = table.Column<int>(nullable: false) .Annotation("Npgsql:ValueGeneratedOnAdd", true), CreatedAt = table.Column<DateTime>(nullable: false), - DisplayName = table.Column<string>(nullable: true), - Email = table.Column<string>(nullable: true), + DisplayName = table.Column<string>(maxLength: 2000, nullable: true), + Email = table.Column<string>(maxLength: 2000, nullable: true), LastUpdatedAt = table.Column<DateTime>(nullable: false), SystemRolePermissionId = table.Column<int>(nullable: false) }, @@ -266,11 +342,29 @@ namespace ClientServer.Migrations Id = table.Column<int>(nullable: false) .Annotation("Npgsql:ValueGeneratedOnAdd", true), CreatedAt = table.Column<DateTime>(nullable: false), + CurrentServerMessage = table.Column<string>(maxLength: 10000, nullable: true), + CustomProjectTestCompileTimeoutInMs = table.Column<int>(nullable: false), + CustomProjectTestMaxDiskSpaceInKb = table.Column<int>(nullable: false), + CustomProjectTestMemoryLimitInKb = table.Column<int>(nullable: false), + CustomProjectTestTimeoutInMs = table.Column<int>(nullable: false), DefaultGroupCreatorGroupRoleId = table.Column<int>(nullable: false), DefaultGroupRoleId = table.Column<int>(nullable: false), DefaultUserGroupId = table.Column<int>(nullable: false), + JustRunProgramCompileTimeoutInMs = table.Column<int>(nullable: false), + JustRunProgramMaxDiskSpaceInKb = table.Column<int>(nullable: false), + JustRunProgramMemoryLimitInKb = table.Column<int>(nullable: false), + JustRunProgramTimeoutInMs = table.Column<int>(nullable: false), LastUpdatedAt = table.Column<DateTime>(nullable: false), - MaxSolutionVersionsPerUser = table.Column<int>(nullable: false, defaultValue: 10) + MaxCustomProjectsPerUser = table.Column<int>(nullable: false), + MaxCustomTestsPerParticipation = table.Column<int>(nullable: false), + MaxNumberOfTestsWithOneRequest = table.Column<int>(nullable: false), + MaxNumberOfTestsWithOneRequestSubmitTestServer = table.Column<int>(nullable: false), + SubmitTestServerTimeoutInMs = table.Column<int>(nullable: false), + SubmitTestServerUrl = table.Column<string>(maxLength: 2000, nullable: true), + TestServerConfigUiUrl = table.Column<string>(maxLength: 2000, nullable: true), + TestServerStatsUrl = table.Column<string>(maxLength: 2000, nullable: true), + TestServerTimeoutInMs = table.Column<int>(nullable: false), + TestServerUrl = table.Column<string>(maxLength: 2000, nullable: true) }, constraints: table => { @@ -280,19 +374,19 @@ namespace ClientServer.Migrations column: x => x.DefaultGroupCreatorGroupRoleId, principalTable: "GroupRoles", principalColumn: "Id", - onDelete: ReferentialAction.SetNull); + onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_SystemSettings_GroupRoles_DefaultGroupRoleId", column: x => x.DefaultGroupRoleId, principalTable: "GroupRoles", principalColumn: "Id", - onDelete: ReferentialAction.SetNull); + onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_SystemSettings_UserGroups_DefaultUserGroupId", column: x => x.DefaultUserGroupId, principalTable: "UserGroups", principalColumn: "Id", - onDelete: ReferentialAction.SetNull); + onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( @@ -302,28 +396,20 @@ namespace ClientServer.Migrations Id = table.Column<int>(nullable: false) .Annotation("Npgsql:ValueGeneratedOnAdd", true), CreatedAt = table.Column<DateTime>(nullable: false), - Email = table.Column<string>(nullable: true), - FirstName = table.Column<string>(nullable: true), + Email = table.Column<string>(maxLength: 2000, nullable: true), + FirstName = table.Column<string>(maxLength: 2000, nullable: true), IsActivated = table.Column<bool>(nullable: false), LastLoginAt = table.Column<DateTime>(nullable: false), - LastName = table.Column<string>(nullable: true), + LastName = table.Column<string>(maxLength: 2000, nullable: true), LastUpdatedAt = table.Column<DateTime>(nullable: false), - LdapUserId = table.Column<int>(nullable: true), - Password = table.Column<string>(nullable: true), - StudentNumber = table.Column<string>(nullable: true), + Password = table.Column<string>(maxLength: 2000, nullable: true), SystemRoleId = table.Column<int>(nullable: true), - Token = table.Column<string>(nullable: false) + Token = table.Column<string>(maxLength: 2000, nullable: false) }, constraints: table => { table.PrimaryKey("PK_Users", x => x.Id); table.UniqueConstraint("Unique_Token", x => x.Token); - table.ForeignKey( - name: "FK_Users_LdapUsers_LdapUserId", - column: x => x.LdapUserId, - principalTable: "LdapUsers", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_Users_SystemRoles_SystemRoleId", column: x => x.SystemRoleId, @@ -332,6 +418,29 @@ namespace ClientServer.Migrations onDelete: ReferentialAction.SetNull); }); + migrationBuilder.CreateTable( + name: "CustomProjects", + columns: table => new + { + Id = table.Column<int>(nullable: false) + .Annotation("Npgsql:ValueGeneratedOnAdd", true), + CreatedAt = table.Column<DateTime>(nullable: false), + DisplayName = table.Column<string>(maxLength: 2000, nullable: true), + LastEditorPLangId = table.Column<int>(nullable: false), + LastUpdatedAt = table.Column<DateTime>(nullable: false), + UserId = table.Column<int>(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_CustomProjects", x => x.Id); + table.ForeignKey( + name: "FK_CustomProjects_Users_UserId", + column: x => x.UserId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + migrationBuilder.CreateTable( name: "Exercises", columns: table => new @@ -341,11 +450,12 @@ namespace ClientServer.Migrations CanUserCreateCustomTests = table.Column<bool>(nullable: false), CanUserCreateFiles = table.Column<bool>(nullable: false), CreatedAt = table.Column<DateTime>(nullable: false), - DisplayName = table.Column<string>(nullable: true), - IsOnlyVisibleToMe = table.Column<bool>(nullable: false), + DisplayName = table.Column<string>(maxLength: 2000, nullable: true), + IsOnlyVisibleToOwner = table.Column<bool>(nullable: false), + IsPermanentlyLocked = table.Column<bool>(nullable: false), LastUpdatedAt = table.Column<DateTime>(nullable: false), - ShortDescription = table.Column<string>(nullable: true), - ShouldShowSubmitResult = table.Column<bool>(nullable: false), + Note = table.Column<string>(maxLength: 10000, nullable: true), + ShortDescription = table.Column<string>(maxLength: 2000, nullable: true), UserGroupId = table.Column<int>(nullable: false), UserId = table.Column<int>(nullable: true) }, @@ -366,6 +476,56 @@ namespace ClientServer.Migrations onDelete: ReferentialAction.SetNull); }); + migrationBuilder.CreateTable( + name: "AuthTokens", + columns: table => new + { + UserId = table.Column<int>(nullable: false), + CreatedAt = table.Column<DateTime>(nullable: false), + CsrfToken = table.Column<string>(maxLength: 2000, nullable: true), + ExpirationDateTime = table.Column<DateTime>(nullable: false), + LastUpdatedAt = table.Column<DateTime>(nullable: false), + RandomSecret = table.Column<string>(maxLength: 2000, nullable: true), + UserAuthToken = table.Column<string>(maxLength: 2000, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AuthTokens", x => x.UserId); + table.ForeignKey( + name: "FK_AuthTokens_Users_UserId", + column: x => x.UserId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "ExternalUsers", + columns: table => new + { + ExternalId = table.Column<int>(nullable: false) + .Annotation("Npgsql:ValueGeneratedOnAdd", true), + CreatedAt = table.Column<DateTime>(nullable: false), + Email = table.Column<string>(maxLength: 2000, nullable: true), + FirstName = table.Column<string>(maxLength: 2000, nullable: true), + LastName = table.Column<string>(maxLength: 2000, nullable: true), + LastUpdatedAt = table.Column<DateTime>(nullable: false), + NeedToRefreshData = table.Column<bool>(nullable: false), + Token = table.Column<string>(maxLength: 2000, nullable: false), + UserId = table.Column<int>(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ExternalUsers", x => x.ExternalId); + table.UniqueConstraint("Unique_ExternalToken", x => x.Token); + table.ForeignKey( + name: "FK_ExternalUsers_Users_UserId", + column: x => x.UserId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + migrationBuilder.CreateTable( name: "UserSettingses", columns: table => new @@ -374,8 +534,9 @@ namespace ClientServer.Migrations .Annotation("Npgsql:ValueGeneratedOnAdd", true), CodeEditorSettingsId = table.Column<int>(nullable: false), CreatedAt = table.Column<DateTime>(nullable: false), - LangId = table.Column<int>(nullable: false), + LangId = table.Column<int>(nullable: true), LastUpdatedAt = table.Column<DateTime>(nullable: false), + Theme = table.Column<string>(maxLength: 2000, nullable: true), UserId = table.Column<int>(nullable: true) }, constraints: table => @@ -419,7 +580,7 @@ namespace ClientServer.Migrations column: x => x.GroupRoleId, principalTable: "GroupRoles", principalColumn: "Id", - onDelete: ReferentialAction.Cascade); + onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_UserWithUserGroups_UserGroups_UserGroupId", column: x => x.UserGroupId, @@ -434,13 +595,74 @@ namespace ClientServer.Migrations onDelete: ReferentialAction.Cascade); }); + migrationBuilder.CreateTable( + name: "CustomProjectDescriptions", + columns: table => new + { + Id = table.Column<int>(nullable: false) + .Annotation("Npgsql:ValueGeneratedOnAdd", true), + Content = table.Column<string>(maxLength: 50000, nullable: true), + CreatedAt = table.Column<DateTime>(nullable: false), + CustomProjectId = table.Column<int>(nullable: false), + LastUpdatedAt = table.Column<DateTime>(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_CustomProjectDescriptions", x => x.Id); + table.ForeignKey( + name: "FK_CustomProjectDescriptions_CustomProjects_CustomProjectId", + column: x => x.CustomProjectId, + principalTable: "CustomProjects", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "CustomProjectTests", + columns: table => new + { + Id = table.Column<int>(nullable: false) + .Annotation("Npgsql:ValueGeneratedOnAdd", true), + Content = table.Column<string>(maxLength: 80000, nullable: true), + CreatedAt = table.Column<DateTime>(nullable: false), + CustomProjectId = table.Column<int>(nullable: false), + DisplayIndex = table.Column<int>(nullable: false), + DisplayName = table.Column<string>(maxLength: 2000, nullable: true), + LastUpdatedAt = table.Column<DateTime>(nullable: false), + TestSettingsId = table.Column<int>(nullable: false), + TestTypeId = table.Column<int>(nullable: false), + Weight = table.Column<int>(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_CustomProjectTests", x => x.Id); + table.ForeignKey( + name: "FK_CustomProjectTests_CustomProjects_CustomProjectId", + column: x => x.CustomProjectId, + principalTable: "CustomProjects", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_CustomProjectTests_TestCaseSettingses_TestSettingsId", + column: x => x.TestSettingsId, + principalTable: "TestCaseSettingses", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_CustomProjectTests_TestTypes_TestTypeId", + column: x => x.TestTypeId, + principalTable: "TestTypes", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + migrationBuilder.CreateTable( name: "ExerciseDescriptions", columns: table => new { Id = table.Column<int>(nullable: false) .Annotation("Npgsql:ValueGeneratedOnAdd", true), - Content = table.Column<string>(nullable: true), + Content = table.Column<string>(maxLength: 50000, nullable: true), CreatedAt = table.Column<DateTime>(nullable: false), ExerciseId = table.Column<int>(nullable: false), LastUpdatedAt = table.Column<DateTime>(nullable: false) @@ -495,16 +717,28 @@ namespace ClientServer.Migrations AvailableWorkingTimeInMinutes = table.Column<int>(nullable: false), CreatedAt = table.Column<DateTime>(nullable: false), ExerciseId = table.Column<int>(nullable: false), - GeneratedCode = table.Column<string>(nullable: false), + GeneratedCode = table.Column<string>(maxLength: 2000, nullable: false), + HadAutomaticAssessmentErrors = table.Column<bool>(nullable: false), + HasAutomaticAssessmentFinished = table.Column<bool>(nullable: false), + HasAutomaticAssessmentStarted = table.Column<bool>(nullable: false), HasLimitedWorkingTime = table.Column<bool>(nullable: false), + HideExerciseLeaveActions = table.Column<bool>(nullable: false), + HideInOverviews = table.Column<bool>(nullable: false), + HidePrintOptions = table.Column<bool>(nullable: false), + HideSiteHeaderBar = table.Column<bool>(nullable: false), IsReleased = table.Column<bool>(nullable: false), IsVisibleToAllAfterRelease = table.Column<bool>(nullable: false), LastUpdatedAt = table.Column<DateTime>(nullable: false), - Note = table.Column<string>(nullable: true), - PLangId = table.Column<int>(nullable: true), + MaxManualPoint = table.Column<int>(nullable: true), + Note = table.Column<string>(maxLength: 10000, nullable: true), + PLangId = table.Column<int>(nullable: false), ReleaseDurationType = table.Column<int>(nullable: false), ReleaseStartType = table.Column<int>(nullable: false), - ReleasedAt = table.Column<DateTime>(nullable: true) + ReleasedAt = table.Column<DateTime>(nullable: true), + RunAlsoNormalTests = table.Column<bool>(nullable: false), + ShouldAutomaticAssessSubmissions = table.Column<bool>(nullable: false), + ShouldClearClipboard = table.Column<bool>(nullable: false), + ShowAdditionalLogButton = table.Column<bool>(nullable: false) }, constraints: table => { @@ -521,7 +755,7 @@ namespace ClientServer.Migrations column: x => x.PLangId, principalTable: "PLangs", principalColumn: "Id", - onDelete: ReferentialAction.SetNull); + onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( @@ -530,6 +764,8 @@ namespace ClientServer.Migrations { Id = table.Column<int>(nullable: false) .Annotation("Npgsql:ValueGeneratedOnAdd", true), + CompileTimeoutInMs = table.Column<int>(nullable: false), + CompilerOptions = table.Column<string>(maxLength: 2000, nullable: true), CreatedAt = table.Column<DateTime>(nullable: false), ExerciseId = table.Column<int>(nullable: false), LastUpdatedAt = table.Column<DateTime>(nullable: false), @@ -554,10 +790,10 @@ namespace ClientServer.Migrations { Id = table.Column<int>(nullable: false) .Annotation("Npgsql:ValueGeneratedOnAdd", true), - Content = table.Column<string>(nullable: true), + Content = table.Column<string>(maxLength: 80000, nullable: true), CreatedAt = table.Column<DateTime>(nullable: false), DisplayIndex = table.Column<int>(nullable: false), - DisplayName = table.Column<string>(nullable: true), + DisplayName = table.Column<string>(maxLength: 2000, nullable: true), ExerciseId = table.Column<int>(nullable: false), IsSubmitTest = table.Column<bool>(nullable: false), LastUpdatedAt = table.Column<DateTime>(nullable: false), @@ -589,28 +825,75 @@ namespace ClientServer.Migrations }); migrationBuilder.CreateTable( - name: "Assets", + name: "CustomProjectDescriptionWithFileAsAssetReferences", + columns: table => new + { + CustomProjectDescriptionId = table.Column<int>(nullable: false), + FileReferenceUserFileAssetId = table.Column<int>(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_CustomProjectDescriptionWithFileAsAssetReferences", x => new { x.CustomProjectDescriptionId, x.FileReferenceUserFileAssetId }); + table.ForeignKey( + name: "FK_CustomProjectDescriptionWithFileAsAssetReferences_CustomProjectDescriptions_CustomProjectDescriptionId", + column: x => x.CustomProjectDescriptionId, + principalTable: "CustomProjectDescriptions", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_CustomProjectDescriptionWithFileAsAssetReferences_FileReferenceUserFileAssets_FileReferenceUserFileAssetId", + column: x => x.FileReferenceUserFileAssetId, + principalTable: "FileReferenceUserFileAssets", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "CustomProjectTestWithFileAsAssetReferences", + columns: table => new + { + CustomProjectTestId = table.Column<int>(nullable: false), + FileReferenceUserFileAssetId = table.Column<int>(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_CustomProjectTestWithFileAsAssetReferences", x => new { x.CustomProjectTestId, x.FileReferenceUserFileAssetId }); + table.ForeignKey( + name: "FK_CustomProjectTestWithFileAsAssetReferences_CustomProjectTests_CustomProjectTestId", + column: x => x.CustomProjectTestId, + principalTable: "CustomProjectTests", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_CustomProjectTestWithFileAsAssetReferences_FileReferenceUserFileAssets_FileReferenceUserFileAssetId", + column: x => x.FileReferenceUserFileAssetId, + principalTable: "FileReferenceUserFileAssets", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "ExerciseDescriptionWithFileAsAssetReferences", columns: table => new { - Id = table.Column<int>(nullable: false) - .Annotation("Npgsql:ValueGeneratedOnAdd", true), - AssetUrl = table.Column<string>(nullable: true), - Content = table.Column<byte[]>(nullable: true), - CreatedAt = table.Column<DateTime>(nullable: false), - DisplayName = table.Column<string>(nullable: true), ExerciseDescriptionId = table.Column<int>(nullable: false), - LastUpdatedAt = table.Column<DateTime>(nullable: false), - MimeType = table.Column<string>(nullable: true) + FileReferenceMarkdownAssetId = table.Column<int>(nullable: false) }, constraints: table => { - table.PrimaryKey("PK_Assets", x => x.Id); + table.PrimaryKey("PK_ExerciseDescriptionWithFileAsAssetReferences", x => new { x.ExerciseDescriptionId, x.FileReferenceMarkdownAssetId }); table.ForeignKey( - name: "FK_Assets_ExerciseDescriptions_ExerciseDescriptionId", + name: "FK_ExerciseDescriptionWithFileAsAssetReferences_ExerciseDescriptions_ExerciseDescriptionId", column: x => x.ExerciseDescriptionId, principalTable: "ExerciseDescriptions", principalColumn: "Id", onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_ExerciseDescriptionWithFileAsAssetReferences_FileReferenceMarkdownAssets_FileReferenceMarkdownAssetId", + column: x => x.FileReferenceMarkdownAssetId, + principalTable: "FileReferenceMarkdownAssets", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateTable( @@ -636,7 +919,7 @@ namespace ClientServer.Migrations column: x => x.TagId, principalTable: "Tags", principalColumn: "Id", - onDelete: ReferentialAction.Restrict); + onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateTable( @@ -647,7 +930,9 @@ namespace ClientServer.Migrations ExerciseReleaseId = table.Column<int>(nullable: false), CreatedAt = table.Column<DateTime>(nullable: false), LastEditedPLangId = table.Column<int>(nullable: false), - LastUpdatedAt = table.Column<DateTime>(nullable: false) + LastUpdatedAt = table.Column<DateTime>(nullable: false), + LockSolutionsFlag = table.Column<bool>(nullable: false), + ShouldNotCount = table.Column<bool>(nullable: false) }, constraints: table => { @@ -663,7 +948,7 @@ namespace ClientServer.Migrations column: x => x.LastEditedPLangId, principalTable: "PLangs", principalColumn: "Id", - onDelete: ReferentialAction.SetNull); + onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_ExerciseReleaseWithUserAsParticipations_Users_UserId", column: x => x.UserId, @@ -673,23 +958,23 @@ namespace ClientServer.Migrations }); migrationBuilder.CreateTable( - name: "TestAssets", + name: "TestWithFileAsAssetReferences", columns: table => new { - Id = table.Column<int>(nullable: false) - .Annotation("Npgsql:ValueGeneratedOnAdd", true), - Content = table.Column<byte[]>(nullable: true), - CreatedAt = table.Column<DateTime>(nullable: false), - DisplayName = table.Column<string>(nullable: true), - LastUpdatedAt = table.Column<DateTime>(nullable: false), - MimeType = table.Column<string>(nullable: true), - TestId = table.Column<int>(nullable: false) + TestId = table.Column<int>(nullable: false), + FileReferenceTestAssetId = table.Column<int>(nullable: false) }, constraints: table => { - table.PrimaryKey("PK_TestAssets", x => x.Id); + table.PrimaryKey("PK_TestWithFileAsAssetReferences", x => new { x.TestId, x.FileReferenceTestAssetId }); + table.ForeignKey( + name: "FK_TestWithFileAsAssetReferences_FileReferenceTestAssets_FileReferenceTestAssetId", + column: x => x.FileReferenceTestAssetId, + principalTable: "FileReferenceTestAssets", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); table.ForeignKey( - name: "FK_TestAssets_Tests_TestId", + name: "FK_TestWithFileAsAssetReferences_Tests_TestId", column: x => x.TestId, principalTable: "Tests", principalColumn: "Id", @@ -702,10 +987,10 @@ namespace ClientServer.Migrations { Id = table.Column<int>(nullable: false) .Annotation("Npgsql:ValueGeneratedOnAdd", true), - Content = table.Column<string>(nullable: true), + Content = table.Column<string>(maxLength: 80000, nullable: true), CreatedAt = table.Column<DateTime>(nullable: false), DisplayIndex = table.Column<int>(nullable: false), - DisplayName = table.Column<string>(nullable: true), + DisplayName = table.Column<string>(maxLength: 2000, nullable: true), ExerciseReleaseId = table.Column<int>(nullable: false), LastUpdatedAt = table.Column<DateTime>(nullable: false), TestTypeId = table.Column<int>(nullable: false), @@ -729,61 +1014,259 @@ namespace ClientServer.Migrations }); migrationBuilder.CreateTable( - name: "CustomTestAssets", + name: "CustomTestWithFileAsAssetReferences", columns: table => new { - Id = table.Column<int>(nullable: false) - .Annotation("Npgsql:ValueGeneratedOnAdd", true), - Content = table.Column<byte[]>(nullable: true), - CreatedAt = table.Column<DateTime>(nullable: false), CustomTestId = table.Column<int>(nullable: false), - DisplayName = table.Column<string>(nullable: true), - LastUpdatedAt = table.Column<DateTime>(nullable: false), - MimeType = table.Column<string>(nullable: true) + FileReferenceUserFileAssetId = table.Column<int>(nullable: false) }, constraints: table => { - table.PrimaryKey("PK_CustomTestAssets", x => x.Id); + table.PrimaryKey("PK_CustomTestWithFileAsAssetReferences", x => new { x.CustomTestId, x.FileReferenceUserFileAssetId }); table.ForeignKey( - name: "FK_CustomTestAssets_CustomTest_CustomTestId", + name: "FK_CustomTestWithFileAsAssetReferences_CustomTest_CustomTestId", column: x => x.CustomTestId, principalTable: "CustomTest", principalColumn: "Id", onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_CustomTestWithFileAsAssetReferences_FileReferenceUserFileAssets_FileReferenceUserFileAssetId", + column: x => x.FileReferenceUserFileAssetId, + principalTable: "FileReferenceUserFileAssets", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateTable( - name: "TemplateFiles", + name: "CustomProjectSolutions", columns: table => new { Id = table.Column<int>(nullable: false) .Annotation("Npgsql:ValueGeneratedOnAdd", true), - CodeTemplateId = table.Column<int>(nullable: false), - Content = table.Column<string>(nullable: true), CreatedAt = table.Column<DateTime>(nullable: false), - DisplayIndex = table.Column<int>(nullable: false), - FileNameWithExtension = table.Column<string>(nullable: true), - IsEditableByUser = table.Column<bool>(nullable: false), - LastUpdatedAt = table.Column<DateTime>(nullable: false) + CustomProjectId = table.Column<int>(nullable: false), + LastUpdatedAt = table.Column<DateTime>(nullable: false), + MainFileId = table.Column<int>(nullable: true), + PLangId = table.Column<int>(nullable: false) }, constraints: table => { - table.PrimaryKey("PK_TemplateFiles", x => x.Id); + table.PrimaryKey("PK_CustomProjectSolutions", x => x.Id); + table.ForeignKey( + name: "FK_CustomProjectSolutions_CustomProjects_CustomProjectId", + column: x => x.CustomProjectId, + principalTable: "CustomProjects", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_CustomProjectSolutions_PLangs_PLangId", + column: x => x.PLangId, + principalTable: "PLangs", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateTable( - name: "Templates", + name: "CustomProjectSolutionFiles", columns: table => new { Id = table.Column<int>(nullable: false) .Annotation("Npgsql:ValueGeneratedOnAdd", true), + Content = table.Column<string>(maxLength: 70000, nullable: true), CreatedAt = table.Column<DateTime>(nullable: false), - ExerciseId = table.Column<int>(nullable: false), - LastUpdatedAt = table.Column<DateTime>(nullable: false), - MainFileId = table.Column<int>(nullable: true), - PLangId = table.Column<int>(nullable: false) - }, - constraints: table => + CustomProjectSolutionId = table.Column<int>(nullable: false), + DisplayIndex = table.Column<int>(nullable: false), + FileNameWithExtension = table.Column<string>(maxLength: 2000, nullable: true), + IsDisplayed = table.Column<bool>(nullable: false), + LastUpdatedAt = table.Column<DateTime>(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_CustomProjectSolutionFiles", x => x.Id); + table.ForeignKey( + name: "FK_CustomProjectSolutionFiles_CustomProjectSolutions_CustomProjectSolutionId", + column: x => x.CustomProjectSolutionId, + principalTable: "CustomProjectSolutions", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "CustomProjectTestWithSolutionAsTestResults", + columns: table => new + { + CustomProjectSolutionId = table.Column<int>(nullable: false), + CustomProjectTestId = table.Column<int>(nullable: false), + CompileTimeoutInMsUsed = table.Column<int>(nullable: true), + CreatedAt = table.Column<DateTime>(nullable: false), + HasCompiled = table.Column<bool>(nullable: true), + LastUpdatedAt = table.Column<DateTime>(nullable: false), + Passed = table.Column<bool>(nullable: true), + ProgramExitCode = table.Column<int>(nullable: true), + Protocol = table.Column<string>(maxLength: 160100, nullable: true), + RunnerVersion = table.Column<string>(maxLength: 2000, nullable: true), + TestResultCode = table.Column<int>(nullable: true), + TestServerVersion = table.Column<string>(maxLength: 2000, nullable: true), + TimeForCompiling = table.Column<int>(nullable: true), + TimeForUserProgram = table.Column<int>(nullable: true), + TimeoutInMsUsed = table.Column<int>(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_CustomProjectTestWithSolutionAsTestResults", x => new { x.CustomProjectSolutionId, x.CustomProjectTestId }); + table.ForeignKey( + name: "FK_CustomProjectTestWithSolutionAsTestResults_CustomProjectSolutions_CustomProjectSolutionId", + column: x => x.CustomProjectSolutionId, + principalTable: "CustomProjectSolutions", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_CustomProjectTestWithSolutionAsTestResults_CustomProjectTests_CustomProjectTestId", + column: x => x.CustomProjectTestId, + principalTable: "CustomProjectTests", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AfterSolutionFiles", + columns: table => new + { + Id = table.Column<int>(nullable: false) + .Annotation("Npgsql:ValueGeneratedOnAdd", true), + AfterSolutionId = table.Column<int>(nullable: false), + Content = table.Column<string>(maxLength: 70000, nullable: true), + CreatedAt = table.Column<DateTime>(nullable: false), + DisplayIndex = table.Column<int>(nullable: false), + FileNameWithExtension = table.Column<string>(maxLength: 2000, nullable: true), + IsDisplayed = table.Column<bool>(nullable: false), + LastUpdatedAt = table.Column<DateTime>(nullable: false), + TemplateFileId = table.Column<int>(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AfterSolutionFiles", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "CustomTestWithAfterSolutionAsTestResults", + columns: table => new + { + CustomTestId = table.Column<int>(nullable: false), + AfterSolutionId = table.Column<int>(nullable: false), + CompileTimeoutInMsUsed = table.Column<int>(nullable: true), + CreatedAt = table.Column<DateTime>(nullable: false), + HasCompiled = table.Column<bool>(nullable: true), + LastUpdatedAt = table.Column<DateTime>(nullable: false), + Passed = table.Column<bool>(nullable: true), + ProgramExitCode = table.Column<int>(nullable: true), + Protocol = table.Column<string>(maxLength: 160100, nullable: true), + RunnerVersion = table.Column<string>(maxLength: 2000, nullable: true), + TestResultCode = table.Column<int>(nullable: true), + TestServerVersion = table.Column<string>(maxLength: 2000, nullable: true), + TimeForCompiling = table.Column<int>(nullable: true), + TimeForUserProgram = table.Column<int>(nullable: true), + TimeoutInMsUsed = table.Column<int>(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_CustomTestWithAfterSolutionAsTestResults", x => new { x.CustomTestId, x.AfterSolutionId }); + table.ForeignKey( + name: "FK_CustomTestWithAfterSolutionAsTestResults_CustomTest_CustomTestId", + column: x => x.CustomTestId, + principalTable: "CustomTest", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "TestWithAfterSolutionAsTestResults", + columns: table => new + { + TestId = table.Column<int>(nullable: false), + AfterSolutionId = table.Column<int>(nullable: false), + CompileTimeoutInMsUsed = table.Column<int>(nullable: true), + CreatedAt = table.Column<DateTime>(nullable: false), + HasCompiled = table.Column<bool>(nullable: true), + LastUpdatedAt = table.Column<DateTime>(nullable: false), + Passed = table.Column<bool>(nullable: true), + ProgramExitCode = table.Column<int>(nullable: true), + Protocol = table.Column<string>(maxLength: 160100, nullable: true), + RunnerVersion = table.Column<string>(maxLength: 2000, nullable: true), + TestResultCode = table.Column<int>(nullable: true), + TestServerVersion = table.Column<string>(maxLength: 2000, nullable: true), + TimeForCompiling = table.Column<int>(nullable: true), + TimeForUserProgram = table.Column<int>(nullable: true), + TimeoutInMsUsed = table.Column<int>(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_TestWithAfterSolutionAsTestResults", x => new { x.TestId, x.AfterSolutionId }); + table.ForeignKey( + name: "FK_TestWithAfterSolutionAsTestResults_Tests_TestId", + column: x => x.TestId, + principalTable: "Tests", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AfterSolutions", + columns: table => new + { + Id = table.Column<int>(nullable: false) + .Annotation("Npgsql:ValueGeneratedOnAdd", true), + CreatedAt = table.Column<DateTime>(nullable: false), + LastUpdatedAt = table.Column<DateTime>(nullable: false), + MainFileId = table.Column<int>(nullable: true), + SolutionExerciseReleaseId = table.Column<int>(nullable: false), + SolutionPLangId = table.Column<int>(nullable: false), + SolutionUserId = table.Column<int>(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AfterSolutions", x => x.Id); + table.ForeignKey( + name: "FK_AfterSolutions_AfterSolutionFiles_MainFileId", + column: x => x.MainFileId, + principalTable: "AfterSolutionFiles", + principalColumn: "Id", + onDelete: ReferentialAction.SetNull); + }); + + migrationBuilder.CreateTable( + name: "TemplateFiles", + columns: table => new + { + Id = table.Column<int>(nullable: false) + .Annotation("Npgsql:ValueGeneratedOnAdd", true), + CodeTemplateId = table.Column<int>(nullable: false), + Content = table.Column<string>(maxLength: 70000, nullable: true), + CreatedAt = table.Column<DateTime>(nullable: false), + DisplayIndex = table.Column<int>(nullable: false), + FileNameWithExtension = table.Column<string>(maxLength: 2000, nullable: true), + IsContentVisibleForUser = table.Column<bool>(nullable: false), + IsEditableByUser = table.Column<bool>(nullable: false), + LastUpdatedAt = table.Column<DateTime>(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_TemplateFiles", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Templates", + columns: table => new + { + Id = table.Column<int>(nullable: false) + .Annotation("Npgsql:ValueGeneratedOnAdd", true), + CreatedAt = table.Column<DateTime>(nullable: false), + ExerciseId = table.Column<int>(nullable: false), + LastUpdatedAt = table.Column<DateTime>(nullable: false), + MainFileId = table.Column<int>(nullable: true), + PLangId = table.Column<int>(nullable: false) + }, + constraints: table => { table.PrimaryKey("PK_Templates", x => x.Id); table.ForeignKey( @@ -803,7 +1286,7 @@ namespace ClientServer.Migrations column: x => x.PLangId, principalTable: "PLangs", principalColumn: "Id", - onDelete: ReferentialAction.SetNull); + onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( @@ -815,18 +1298,26 @@ namespace ClientServer.Migrations PLangId = table.Column<int>(nullable: false), AssessmentId = table.Column<int>(nullable: true), CreatedAt = table.Column<DateTime>(nullable: false), + LastEditingIpAddress = table.Column<string>(maxLength: 2000, nullable: true), LastUpdatedAt = table.Column<DateTime>(nullable: false), - MainSolutionVersionid = table.Column<int>(nullable: false) + MainFileId = table.Column<int>(nullable: true), + Note = table.Column<string>(maxLength: 10000, nullable: true) }, constraints: table => { table.PrimaryKey("PK_Solutions", x => new { x.UserId, x.ExerciseReleaseId, x.PLangId }); + table.ForeignKey( + name: "FK_Solutions_SolutionAssessment_AssessmentId", + column: x => x.AssessmentId, + principalTable: "SolutionAssessment", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_Solutions_PLangs_PLangId", column: x => x.PLangId, principalTable: "PLangs", principalColumn: "Id", - onDelete: ReferentialAction.SetNull); + onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_Solutions_ExerciseReleaseWithUserAsParticipations_UserId_ExerciseReleaseId", columns: x => new { x.UserId, x.ExerciseReleaseId }, @@ -836,83 +1327,41 @@ namespace ClientServer.Migrations }); migrationBuilder.CreateTable( - name: "SolutionVersions", + name: "CustomTestWithSingleSolutionAsTestResult", columns: table => new { - Id = table.Column<int>(nullable: false) - .Annotation("Npgsql:ValueGeneratedOnAdd", true), - CreatedAt = table.Column<DateTime>(nullable: false), - LastUpdatedAt = table.Column<DateTime>(nullable: false), - MainFileId = table.Column<int>(nullable: true), - Note = table.Column<string>(nullable: true), + CustomTestId = table.Column<int>(nullable: false), + SolutionUserId = table.Column<int>(nullable: false), SolutionExerciseReleaseId = table.Column<int>(nullable: false), SolutionPLangId = table.Column<int>(nullable: false), - SolutionUserId = table.Column<int>(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_SolutionVersions", x => x.Id); - table.ForeignKey( - name: "FK_SolutionVersions_Solutions_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId", - columns: x => new { x.SolutionUserId, x.SolutionExerciseReleaseId, x.SolutionPLangId }, - principalTable: "Solutions", - principalColumns: new[] { "UserId", "ExerciseReleaseId", "PLangId" }, - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "CustomTestWithSolutionAsTestResults", - columns: table => new - { - CustomTestId = table.Column<int>(nullable: false), - SolutionVersionId = table.Column<int>(nullable: false), + CompileTimeoutInMsUsed = table.Column<int>(nullable: true), CreatedAt = table.Column<DateTime>(nullable: false), HasCompiled = table.Column<bool>(nullable: true), LastUpdatedAt = table.Column<DateTime>(nullable: false), Passed = table.Column<bool>(nullable: true), ProgramExitCode = table.Column<int>(nullable: true), - Protocol = table.Column<string>(nullable: true), - TestResultCode = table.Column<int>(nullable: true) + Protocol = table.Column<string>(maxLength: 160100, nullable: true), + RunnerVersion = table.Column<string>(maxLength: 2000, nullable: true), + TestResultCode = table.Column<int>(nullable: true), + TestServerVersion = table.Column<string>(maxLength: 2000, nullable: true), + TimeForCompiling = table.Column<int>(nullable: true), + TimeForUserProgram = table.Column<int>(nullable: true), + TimeoutInMsUsed = table.Column<int>(nullable: true) }, constraints: table => { - table.PrimaryKey("PK_CustomTestWithSolutionAsTestResults", x => new { x.CustomTestId, x.SolutionVersionId }); + table.PrimaryKey("PK_CustomTestWithSingleSolutionAsTestResult", x => new { x.CustomTestId, x.SolutionUserId, x.SolutionExerciseReleaseId, x.SolutionPLangId }); table.ForeignKey( - name: "FK_CustomTestWithSolutionAsTestResults_CustomTest_CustomTestId", + name: "FK_CustomTestWithSingleSolutionAsTestResult_CustomTest_CustomTestId", column: x => x.CustomTestId, principalTable: "CustomTest", principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( - name: "FK_CustomTestWithSolutionAsTestResults_SolutionVersions_SolutionVersionId", - column: x => x.SolutionVersionId, - principalTable: "SolutionVersions", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "SolutionAssessment", - columns: table => new - { - Id = table.Column<int>(nullable: false) - .Annotation("Npgsql:ValueGeneratedOnAdd", true), - ManualPoints = table.Column<int>(nullable: true), - MaxNormalTestPoints = table.Column<int>(nullable: false), - MaxSubmitTestPoints = table.Column<int>(nullable: false), - NormalTestPoints = table.Column<int>(nullable: false), - Note = table.Column<string>(nullable: true), - SolutionVersionId = table.Column<int>(nullable: false), - SubmitTestPoints = table.Column<int>(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_SolutionAssessment", x => x.Id); - table.ForeignKey( - name: "FK_SolutionAssessment_SolutionVersions_SolutionVersionId", - column: x => x.SolutionVersionId, - principalTable: "SolutionVersions", - principalColumn: "Id", + name: "FK_CustomTestWithSingleSolutionAsTestResult_Solutions_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId", + columns: x => new { x.SolutionUserId, x.SolutionExerciseReleaseId, x.SolutionPLangId }, + principalTable: "Solutions", + principalColumns: new[] { "UserId", "ExerciseReleaseId", "PLangId" }, onDelete: ReferentialAction.Cascade); }); @@ -922,67 +1371,192 @@ namespace ClientServer.Migrations { Id = table.Column<int>(nullable: false) .Annotation("Npgsql:ValueGeneratedOnAdd", true), - Content = table.Column<string>(nullable: true), + Content = table.Column<string>(maxLength: 70000, nullable: true), CreatedAt = table.Column<DateTime>(nullable: false), DisplayIndex = table.Column<int>(nullable: false), - FileNameWithExtension = table.Column<string>(nullable: true), + FileNameWithExtension = table.Column<string>(maxLength: 2000, nullable: true), IsDisplayed = table.Column<bool>(nullable: false), LastUpdatedAt = table.Column<DateTime>(nullable: false), - SolutionVersionId = table.Column<int>(nullable: false), + SolutionExerciseReleaseId = table.Column<int>(nullable: false), + SolutionPLangId = table.Column<int>(nullable: false), + SolutionUserId = table.Column<int>(nullable: false), TemplateFileId = table.Column<int>(nullable: true) }, constraints: table => { table.PrimaryKey("PK_SolutionFiles", x => x.Id); - table.ForeignKey( - name: "FK_SolutionFiles_SolutionVersions_SolutionVersionId", - column: x => x.SolutionVersionId, - principalTable: "SolutionVersions", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_SolutionFiles_TemplateFiles_TemplateFileId", column: x => x.TemplateFileId, principalTable: "TemplateFiles", principalColumn: "Id", onDelete: ReferentialAction.SetNull); + table.ForeignKey( + name: "FK_SolutionFiles_Solutions_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId", + columns: x => new { x.SolutionUserId, x.SolutionExerciseReleaseId, x.SolutionPLangId }, + principalTable: "Solutions", + principalColumns: new[] { "UserId", "ExerciseReleaseId", "PLangId" }, + onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateTable( - name: "TestResults", + name: "TestWithSingleSolutionAsTestResult", columns: table => new { TestId = table.Column<int>(nullable: false), - SolutionVersionId = table.Column<int>(nullable: false), + SolutionUserId = table.Column<int>(nullable: false), + SolutionExerciseReleaseId = table.Column<int>(nullable: false), + SolutionPLangId = table.Column<int>(nullable: false), + CompileTimeoutInMsUsed = table.Column<int>(nullable: true), CreatedAt = table.Column<DateTime>(nullable: false), HasCompiled = table.Column<bool>(nullable: true), LastUpdatedAt = table.Column<DateTime>(nullable: false), Passed = table.Column<bool>(nullable: true), ProgramExitCode = table.Column<int>(nullable: true), - Protocol = table.Column<string>(nullable: true), - TestResultCode = table.Column<int>(nullable: true) + Protocol = table.Column<string>(maxLength: 160100, nullable: true), + RunnerVersion = table.Column<string>(maxLength: 2000, nullable: true), + TestResultCode = table.Column<int>(nullable: true), + TestServerVersion = table.Column<string>(maxLength: 2000, nullable: true), + TimeForCompiling = table.Column<int>(nullable: true), + TimeForUserProgram = table.Column<int>(nullable: true), + TimeoutInMsUsed = table.Column<int>(nullable: true) }, constraints: table => { - table.PrimaryKey("PK_TestResults", x => new { x.TestId, x.SolutionVersionId }); - table.ForeignKey( - name: "FK_TestResults_SolutionVersions_SolutionVersionId", - column: x => x.SolutionVersionId, - principalTable: "SolutionVersions", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); + table.PrimaryKey("PK_TestWithSingleSolutionAsTestResult", x => new { x.TestId, x.SolutionUserId, x.SolutionExerciseReleaseId, x.SolutionPLangId }); table.ForeignKey( - name: "FK_TestResults_Tests_TestId", + name: "FK_TestWithSingleSolutionAsTestResult_Tests_TestId", column: x => x.TestId, principalTable: "Tests", principalColumn: "Id", onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_TestWithSingleSolutionAsTestResult_Solutions_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId", + columns: x => new { x.SolutionUserId, x.SolutionExerciseReleaseId, x.SolutionPLangId }, + principalTable: "Solutions", + principalColumns: new[] { "UserId", "ExerciseReleaseId", "PLangId" }, + onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateIndex( - name: "IX_Assets_ExerciseDescriptionId", - table: "Assets", - column: "ExerciseDescriptionId"); + name: "IX_CustomProjects_UserId", + table: "CustomProjects", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_CustomProjectDescriptions_CustomProjectId", + table: "CustomProjectDescriptions", + column: "CustomProjectId", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_CustomProjectDescriptionWithFileAsAssetReferences_CustomProjectDescriptionId", + table: "CustomProjectDescriptionWithFileAsAssetReferences", + column: "CustomProjectDescriptionId"); + + migrationBuilder.CreateIndex( + name: "IX_CustomProjectDescriptionWithFileAsAssetReferences_FileReferenceUserFileAssetId", + table: "CustomProjectDescriptionWithFileAsAssetReferences", + column: "FileReferenceUserFileAssetId"); + + migrationBuilder.CreateIndex( + name: "IX_CustomProjectSolutions_CustomProjectId", + table: "CustomProjectSolutions", + column: "CustomProjectId"); + + migrationBuilder.CreateIndex( + name: "IX_CustomProjectSolutions_MainFileId", + table: "CustomProjectSolutions", + column: "MainFileId", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_CustomProjectSolutions_PLangId", + table: "CustomProjectSolutions", + column: "PLangId"); + + migrationBuilder.CreateIndex( + name: "IX_CustomProjectSolutionFiles_CustomProjectSolutionId", + table: "CustomProjectSolutionFiles", + column: "CustomProjectSolutionId"); + + migrationBuilder.CreateIndex( + name: "IX_CustomProjectTests_CustomProjectId", + table: "CustomProjectTests", + column: "CustomProjectId"); + + migrationBuilder.CreateIndex( + name: "IX_CustomProjectTests_TestSettingsId", + table: "CustomProjectTests", + column: "TestSettingsId", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_CustomProjectTests_TestTypeId", + table: "CustomProjectTests", + column: "TestTypeId"); + + migrationBuilder.CreateIndex( + name: "IX_CustomProjectTestWithFileAsAssetReferences_CustomProjectTestId", + table: "CustomProjectTestWithFileAsAssetReferences", + column: "CustomProjectTestId"); + + migrationBuilder.CreateIndex( + name: "IX_CustomProjectTestWithFileAsAssetReferences_FileReferenceUserFileAssetId", + table: "CustomProjectTestWithFileAsAssetReferences", + column: "FileReferenceUserFileAssetId"); + + migrationBuilder.CreateIndex( + name: "IX_CustomProjectTestWithSolutionAsTestResults_CustomProjectSolutionId", + table: "CustomProjectTestWithSolutionAsTestResults", + column: "CustomProjectSolutionId"); + + migrationBuilder.CreateIndex( + name: "IX_CustomProjectTestWithSolutionAsTestResults_CustomProjectTestId", + table: "CustomProjectTestWithSolutionAsTestResults", + column: "CustomProjectTestId"); + + migrationBuilder.CreateIndex( + name: "IX_AfterSolutions_MainFileId", + table: "AfterSolutions", + column: "MainFileId", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_AfterSolutions_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId", + table: "AfterSolutions", + columns: new[] { "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId" }, + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_AfterSolutionFiles_AfterSolutionId", + table: "AfterSolutionFiles", + column: "AfterSolutionId"); + + migrationBuilder.CreateIndex( + name: "IX_AfterSolutionFiles_TemplateFileId", + table: "AfterSolutionFiles", + column: "TemplateFileId"); + + migrationBuilder.CreateIndex( + name: "IX_CustomTestWithAfterSolutionAsTestResults_AfterSolutionId", + table: "CustomTestWithAfterSolutionAsTestResults", + column: "AfterSolutionId"); + + migrationBuilder.CreateIndex( + name: "IX_CustomTestWithAfterSolutionAsTestResults_CustomTestId", + table: "CustomTestWithAfterSolutionAsTestResults", + column: "CustomTestId"); + + migrationBuilder.CreateIndex( + name: "IX_TestWithAfterSolutionAsTestResults_AfterSolutionId", + table: "TestWithAfterSolutionAsTestResults", + column: "AfterSolutionId"); + + migrationBuilder.CreateIndex( + name: "IX_TestWithAfterSolutionAsTestResults_TestId", + table: "TestWithAfterSolutionAsTestResults", + column: "TestId"); migrationBuilder.CreateIndex( name: "IX_Templates_ExerciseId", @@ -1000,6 +1574,16 @@ namespace ClientServer.Migrations table: "Templates", column: "PLangId"); + migrationBuilder.CreateIndex( + name: "IX_CustomTestWithFileAsAssetReferences_CustomTestId", + table: "CustomTestWithFileAsAssetReferences", + column: "CustomTestId"); + + migrationBuilder.CreateIndex( + name: "IX_CustomTestWithFileAsAssetReferences_FileReferenceUserFileAssetId", + table: "CustomTestWithFileAsAssetReferences", + column: "FileReferenceUserFileAssetId"); + migrationBuilder.CreateIndex( name: "IX_Exercises_UserGroupId", table: "Exercises", @@ -1016,6 +1600,16 @@ namespace ClientServer.Migrations column: "ExerciseId", unique: true); + migrationBuilder.CreateIndex( + name: "IX_ExerciseDescriptionWithFileAsAssetReferences_ExerciseDescriptionId", + table: "ExerciseDescriptionWithFileAsAssetReferences", + column: "ExerciseDescriptionId"); + + migrationBuilder.CreateIndex( + name: "IX_ExerciseDescriptionWithFileAsAssetReferences_FileReferenceMarkdownAssetId", + table: "ExerciseDescriptionWithFileAsAssetReferences", + column: "FileReferenceMarkdownAssetId"); + migrationBuilder.CreateIndex( name: "IX_MetaDatas_ExerciseId", table: "MetaDatas", @@ -1038,14 +1632,14 @@ namespace ClientServer.Migrations column: "PLangId"); migrationBuilder.CreateIndex( - name: "IX_CustomTestWithSolutionAsTestResults_CustomTestId", - table: "CustomTestWithSolutionAsTestResults", + name: "IX_CustomTestWithSingleSolutionAsTestResult_CustomTestId", + table: "CustomTestWithSingleSolutionAsTestResult", column: "CustomTestId"); migrationBuilder.CreateIndex( - name: "IX_CustomTestWithSolutionAsTestResults_SolutionVersionId", - table: "CustomTestWithSolutionAsTestResults", - column: "SolutionVersionId"); + name: "IX_CustomTestWithSingleSolutionAsTestResult_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId", + table: "CustomTestWithSingleSolutionAsTestResult", + columns: new[] { "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId" }); migrationBuilder.CreateIndex( name: "IX_ExerciseReleaseWithUserAsParticipations_ExerciseReleaseId", @@ -1068,6 +1662,12 @@ namespace ClientServer.Migrations column: "AssessmentId", unique: true); + migrationBuilder.CreateIndex( + name: "IX_Solutions_MainFileId", + table: "Solutions", + column: "MainFileId", + unique: true); + migrationBuilder.CreateIndex( name: "IX_Solutions_PLangId", table: "Solutions", @@ -1078,41 +1678,30 @@ namespace ClientServer.Migrations table: "Solutions", columns: new[] { "UserId", "ExerciseReleaseId" }); - migrationBuilder.CreateIndex( - name: "IX_SolutionAssessment_SolutionVersionId", - table: "SolutionAssessment", - column: "SolutionVersionId"); - - migrationBuilder.CreateIndex( - name: "IX_SolutionFiles_SolutionVersionId", - table: "SolutionFiles", - column: "SolutionVersionId"); - migrationBuilder.CreateIndex( name: "IX_SolutionFiles_TemplateFileId", table: "SolutionFiles", column: "TemplateFileId"); migrationBuilder.CreateIndex( - name: "IX_SolutionVersions_MainFileId", - table: "SolutionVersions", - column: "MainFileId", - unique: true); + name: "IX_SolutionFiles_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId", + table: "SolutionFiles", + columns: new[] { "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId" }); migrationBuilder.CreateIndex( - name: "IX_SolutionVersions_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId", - table: "SolutionVersions", - columns: new[] { "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId" }); + name: "IX_TestWithSingleSolutionAsTestResult_TestId", + table: "TestWithSingleSolutionAsTestResult", + column: "TestId"); migrationBuilder.CreateIndex( - name: "IX_TestResults_SolutionVersionId", - table: "TestResults", - column: "SolutionVersionId"); + name: "IX_TestWithSingleSolutionAsTestResult_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId", + table: "TestWithSingleSolutionAsTestResult", + columns: new[] { "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId" }); migrationBuilder.CreateIndex( - name: "IX_TestResults_TestId", - table: "TestResults", - column: "TestId"); + name: "Unique_Tag", + table: "Tags", + column: "DisplayName"); migrationBuilder.CreateIndex( name: "IX_TagWithMetaDatas_MetaDataId", @@ -1139,11 +1728,6 @@ namespace ClientServer.Migrations table: "CustomTest", columns: new[] { "UserId", "ExerciseReleaseId" }); - migrationBuilder.CreateIndex( - name: "IX_CustomTestAssets_CustomTestId", - table: "CustomTestAssets", - column: "CustomTestId"); - migrationBuilder.CreateIndex( name: "IX_DefaultCustomTestSettings_ExerciseId", table: "DefaultCustomTestSettings", @@ -1167,10 +1751,33 @@ namespace ClientServer.Migrations column: "TestTypeId"); migrationBuilder.CreateIndex( - name: "IX_TestAssets_TestId", - table: "TestAssets", + name: "IX_TestWithFileAsAssetReferences_FileReferenceTestAssetId", + table: "TestWithFileAsAssetReferences", + column: "FileReferenceTestAssetId"); + + migrationBuilder.CreateIndex( + name: "IX_TestWithFileAsAssetReferences_TestId", + table: "TestWithFileAsAssetReferences", column: "TestId"); + migrationBuilder.CreateIndex( + name: "IX_AuthTokens_UserAuthToken", + table: "AuthTokens", + column: "UserAuthToken", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_AuthTokens_UserId", + table: "AuthTokens", + column: "UserId", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_ExternalUsers_UserId", + table: "ExternalUsers", + column: "UserId", + unique: true); + migrationBuilder.CreateIndex( name: "IX_GroupRoles_GroupRolePermissionId", table: "GroupRoles", @@ -1218,12 +1825,6 @@ namespace ClientServer.Migrations column: "DefaultUserGroupId", unique: true); - migrationBuilder.CreateIndex( - name: "IX_Users_LdapUserId", - table: "Users", - column: "LdapUserId", - unique: true); - migrationBuilder.CreateIndex( name: "IX_Users_SystemRoleId", table: "Users", @@ -1244,6 +1845,54 @@ namespace ClientServer.Migrations table: "UserWithUserGroups", column: "UserId"); + migrationBuilder.AddForeignKey( + name: "FK_CustomProjectSolutions_CustomProjectSolutionFiles_MainFileId", + table: "CustomProjectSolutions", + column: "MainFileId", + principalTable: "CustomProjectSolutionFiles", + principalColumn: "Id", + onDelete: ReferentialAction.SetNull); + + migrationBuilder.AddForeignKey( + name: "FK_AfterSolutionFiles_AfterSolutions_AfterSolutionId", + table: "AfterSolutionFiles", + column: "AfterSolutionId", + principalTable: "AfterSolutions", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_AfterSolutionFiles_TemplateFiles_TemplateFileId", + table: "AfterSolutionFiles", + column: "TemplateFileId", + principalTable: "TemplateFiles", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + + migrationBuilder.AddForeignKey( + name: "FK_CustomTestWithAfterSolutionAsTestResults_AfterSolutions_AfterSolutionId", + table: "CustomTestWithAfterSolutionAsTestResults", + column: "AfterSolutionId", + principalTable: "AfterSolutions", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_TestWithAfterSolutionAsTestResults_AfterSolutions_AfterSolutionId", + table: "TestWithAfterSolutionAsTestResults", + column: "AfterSolutionId", + principalTable: "AfterSolutions", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_AfterSolutions_Solutions_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId", + table: "AfterSolutions", + columns: new[] { "SolutionUserId", "SolutionExerciseReleaseId", "SolutionPLangId" }, + principalTable: "Solutions", + principalColumns: new[] { "UserId", "ExerciseReleaseId", "PLangId" }, + onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( name: "FK_TemplateFiles_Templates_CodeTemplateId", table: "TemplateFiles", @@ -1253,16 +1902,8 @@ namespace ClientServer.Migrations onDelete: ReferentialAction.Cascade); migrationBuilder.AddForeignKey( - name: "FK_Solutions_SolutionAssessment_AssessmentId", + name: "FK_Solutions_SolutionFiles_MainFileId", table: "Solutions", - column: "AssessmentId", - principalTable: "SolutionAssessment", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - - migrationBuilder.AddForeignKey( - name: "FK_SolutionVersions_SolutionFiles_MainFileId", - table: "SolutionVersions", column: "MainFileId", principalTable: "SolutionFiles", principalColumn: "Id", @@ -1272,20 +1913,28 @@ namespace ClientServer.Migrations protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropForeignKey( - name: "FK_Templates_Exercises_ExerciseId", - table: "Templates"); + name: "FK_CustomProjects_Users_UserId", + table: "CustomProjects"); migrationBuilder.DropForeignKey( - name: "FK_ExerciseReleases_Exercises_ExerciseId", - table: "ExerciseReleases"); + name: "FK_Exercises_Users_UserId", + table: "Exercises"); migrationBuilder.DropForeignKey( - name: "FK_Templates_TemplateFiles_MainFileId", - table: "Templates"); + name: "FK_ExerciseReleaseWithUserAsParticipations_Users_UserId", + table: "ExerciseReleaseWithUserAsParticipations"); migrationBuilder.DropForeignKey( - name: "FK_SolutionFiles_TemplateFiles_TemplateFileId", - table: "SolutionFiles"); + name: "FK_CustomProjectSolutions_CustomProjects_CustomProjectId", + table: "CustomProjectSolutions"); + + migrationBuilder.DropForeignKey( + name: "FK_CustomProjectSolutions_CustomProjectSolutionFiles_MainFileId", + table: "CustomProjectSolutions"); + + migrationBuilder.DropForeignKey( + name: "FK_Templates_PLangs_PLangId", + table: "Templates"); migrationBuilder.DropForeignKey( name: "FK_ExerciseReleases_PLangs_PLangId", @@ -1300,43 +1949,64 @@ namespace ClientServer.Migrations table: "Solutions"); migrationBuilder.DropForeignKey( - name: "FK_ExerciseReleaseWithUserAsParticipations_Users_UserId", - table: "ExerciseReleaseWithUserAsParticipations"); + name: "FK_AfterSolutions_AfterSolutionFiles_MainFileId", + table: "AfterSolutions"); migrationBuilder.DropForeignKey( - name: "FK_SolutionAssessment_SolutionVersions_SolutionVersionId", - table: "SolutionAssessment"); + name: "FK_SolutionFiles_Solutions_SolutionUserId_SolutionExerciseReleaseId_SolutionPLangId", + table: "SolutionFiles"); migrationBuilder.DropForeignKey( - name: "FK_SolutionFiles_SolutionVersions_SolutionVersionId", - table: "SolutionFiles"); + name: "FK_Templates_TemplateFiles_MainFileId", + table: "Templates"); migrationBuilder.DropTable( name: "AwaitDummies"); migrationBuilder.DropTable( - name: "ContentTypes"); + name: "CustomProjectDescriptionWithFileAsAssetReferences"); migrationBuilder.DropTable( - name: "Assets"); + name: "CustomProjectTestAssets"); migrationBuilder.DropTable( - name: "CustomTestWithSolutionAsTestResults"); + name: "CustomProjectTestWithFileAsAssetReferences"); migrationBuilder.DropTable( - name: "TestResults"); + name: "CustomProjectTestWithSolutionAsTestResults"); migrationBuilder.DropTable( - name: "TagWithMetaDatas"); + name: "CustomTestWithAfterSolutionAsTestResults"); + + migrationBuilder.DropTable( + name: "TestWithAfterSolutionAsTestResults"); + + migrationBuilder.DropTable( + name: "CustomTestWithFileAsAssetReferences"); + + migrationBuilder.DropTable( + name: "ExerciseDescriptionWithFileAsAssetReferences"); + + migrationBuilder.DropTable( + name: "CustomTestWithSingleSolutionAsTestResult"); migrationBuilder.DropTable( - name: "CustomTestAssets"); + name: "TestWithSingleSolutionAsTestResult"); + + migrationBuilder.DropTable( + name: "TagWithMetaDatas"); migrationBuilder.DropTable( name: "DefaultCustomTestSettings"); migrationBuilder.DropTable( - name: "TestAssets"); + name: "TestWithFileAsAssetReferences"); + + migrationBuilder.DropTable( + name: "AuthTokens"); + + migrationBuilder.DropTable( + name: "ExternalUsers"); migrationBuilder.DropTable( name: "UserSettingses"); @@ -1347,9 +2017,24 @@ namespace ClientServer.Migrations migrationBuilder.DropTable( name: "UserWithUserGroups"); + migrationBuilder.DropTable( + name: "CustomProjectDescriptions"); + + migrationBuilder.DropTable( + name: "CustomProjectTests"); + + migrationBuilder.DropTable( + name: "FileReferenceUserFileAssets"); + migrationBuilder.DropTable( name: "ExerciseDescriptions"); + migrationBuilder.DropTable( + name: "FileReferenceMarkdownAssets"); + + migrationBuilder.DropTable( + name: "CustomTest"); + migrationBuilder.DropTable( name: "MetaDatas"); @@ -1357,7 +2042,7 @@ namespace ClientServer.Migrations name: "Tags"); migrationBuilder.DropTable( - name: "CustomTest"); + name: "FileReferenceTestAssets"); migrationBuilder.DropTable( name: "Tests"); @@ -1381,49 +2066,58 @@ namespace ClientServer.Migrations name: "GroupRolePermissions"); migrationBuilder.DropTable( - name: "Exercises"); + name: "Users"); migrationBuilder.DropTable( - name: "UserGroups"); + name: "SystemRoles"); migrationBuilder.DropTable( - name: "TemplateFiles"); + name: "SystemRolePermissions"); migrationBuilder.DropTable( - name: "Templates"); + name: "CustomProjects"); migrationBuilder.DropTable( - name: "PLangs"); + name: "CustomProjectSolutionFiles"); migrationBuilder.DropTable( - name: "Users"); + name: "CustomProjectSolutions"); migrationBuilder.DropTable( - name: "LdapUsers"); + name: "PLangs"); migrationBuilder.DropTable( - name: "SystemRoles"); + name: "AfterSolutionFiles"); migrationBuilder.DropTable( - name: "SystemRolePermissions"); + name: "AfterSolutions"); + + migrationBuilder.DropTable( + name: "Solutions"); migrationBuilder.DropTable( - name: "SolutionVersions"); + name: "SolutionAssessment"); migrationBuilder.DropTable( name: "SolutionFiles"); migrationBuilder.DropTable( - name: "Solutions"); + name: "ExerciseReleaseWithUserAsParticipations"); migrationBuilder.DropTable( - name: "SolutionAssessment"); + name: "ExerciseReleases"); migrationBuilder.DropTable( - name: "ExerciseReleaseWithUserAsParticipations"); + name: "TemplateFiles"); migrationBuilder.DropTable( - name: "ExerciseReleases"); + name: "Templates"); + + migrationBuilder.DropTable( + name: "Exercises"); + + migrationBuilder.DropTable( + name: "UserGroups"); } } } diff --git a/src/ClientServer/Migrations/20190601145551_ExerciseTestAssetFiles.Designer.cs b/src/ClientServer/Migrations/20190729133239_addTestResultCharacterLimit.Designer.cs similarity index 89% rename from src/ClientServer/Migrations/20190601145551_ExerciseTestAssetFiles.Designer.cs rename to src/ClientServer/Migrations/20190729133239_addTestResultCharacterLimit.Designer.cs index 4996cf09839358e7e237118cef4a4b3c91d73d46..557b03f1ce85b027574493d325a76f04dc8bf620 100755 --- a/src/ClientServer/Migrations/20190601145551_ExerciseTestAssetFiles.Designer.cs +++ b/src/ClientServer/Migrations/20190729133239_addTestResultCharacterLimit.Designer.cs @@ -9,8 +9,8 @@ using ClientServer.Models.Exercises.Release; namespace ClientServer.Migrations { [DbContext(typeof(YapexDbContext))] - [Migration("20190601145551_ExerciseTestAssetFiles")] - partial class ExerciseTestAssetFiles + [Migration("20190729133239_addTestResultCharacterLimit")] + partial class addTestResultCharacterLimit { protected override void BuildTargetModel(ModelBuilder modelBuilder) { @@ -35,7 +35,7 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("DisplayName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int>("LastEditorPLangId"); @@ -56,7 +56,7 @@ namespace ClientServer.Migrations .ValueGeneratedOnAdd(); b.Property<string>("Content") - .HasMaxLength(10000); + .HasMaxLength(50000); b.Property<DateTime>("CreatedAt"); @@ -72,6 +72,21 @@ namespace ClientServer.Migrations b.ToTable("CustomProjectDescriptions"); }); + modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescriptionWithFileAsAssetReference", b => + { + b.Property<int>("CustomProjectDescriptionId"); + + b.Property<int>("FileReferenceUserFileAssetId"); + + b.HasKey("CustomProjectDescriptionId", "FileReferenceUserFileAssetId"); + + b.HasIndex("CustomProjectDescriptionId"); + + b.HasIndex("FileReferenceUserFileAssetId"); + + b.ToTable("CustomProjectDescriptionWithFileAsAssetReferences"); + }); + modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => { b.Property<int>("Id") @@ -105,7 +120,7 @@ namespace ClientServer.Migrations .ValueGeneratedOnAdd(); b.Property<string>("Content") - .HasMaxLength(10000); + .HasMaxLength(70000); b.Property<DateTime>("CreatedAt"); @@ -115,7 +130,7 @@ namespace ClientServer.Migrations b.Property<int>("DisplayIndex"); b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<bool>("IsDisplayed"); @@ -134,7 +149,7 @@ namespace ClientServer.Migrations .ValueGeneratedOnAdd(); b.Property<string>("Content") - .HasMaxLength(5000); + .HasMaxLength(80000); b.Property<DateTime>("CreatedAt"); @@ -143,7 +158,7 @@ namespace ClientServer.Migrations b.Property<int>("DisplayIndex"); b.Property<string>("DisplayName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); @@ -174,25 +189,35 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); - b.Property<int?>("CustomProjectTestId") - .IsRequired(); - b.Property<string>("DisplayName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("Hash") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); b.Property<string>("MimeType") - .HasMaxLength(500); + .HasMaxLength(2000); b.HasKey("Id"); + b.ToTable("CustomProjectTestAssets"); + }); + + modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithFileAsAssetReference", b => + { + b.Property<int>("CustomProjectTestId"); + + b.Property<int>("FileReferenceUserFileAssetId"); + + b.HasKey("CustomProjectTestId", "FileReferenceUserFileAssetId"); + b.HasIndex("CustomProjectTestId"); - b.ToTable("CustomProjectTestAssets"); + b.HasIndex("FileReferenceUserFileAssetId"); + + b.ToTable("CustomProjectTestWithFileAsAssetReferences"); }); modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => @@ -201,6 +226,10 @@ namespace ClientServer.Migrations b.Property<int>("CustomProjectTestId"); + b.Property<bool>("CharacterLimitExceeded"); + + b.Property<int?>("CharacterLimitUsed"); + b.Property<int?>("CompileTimeoutInMsUsed"); b.Property<DateTime>("CreatedAt"); @@ -214,15 +243,15 @@ namespace ClientServer.Migrations b.Property<int?>("ProgramExitCode"); b.Property<string>("Protocol") - .HasMaxLength(10000); + .HasMaxLength(160100); b.Property<string>("RunnerVersion") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int?>("TestResultCode"); b.Property<string>("TestServerVersion") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int?>("TimeForCompiling"); @@ -275,14 +304,14 @@ namespace ClientServer.Migrations b.Property<int>("AfterSolutionId"); b.Property<string>("Content") - .HasMaxLength(10000); + .HasMaxLength(70000); b.Property<DateTime>("CreatedAt"); b.Property<int>("DisplayIndex"); b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<bool>("IsDisplayed"); @@ -305,6 +334,10 @@ namespace ClientServer.Migrations b.Property<int>("AfterSolutionId"); + b.Property<bool>("CharacterLimitExceeded"); + + b.Property<int?>("CharacterLimitUsed"); + b.Property<int?>("CompileTimeoutInMsUsed"); b.Property<DateTime>("CreatedAt"); @@ -318,15 +351,15 @@ namespace ClientServer.Migrations b.Property<int?>("ProgramExitCode"); b.Property<string>("Protocol") - .HasMaxLength(10000); + .HasMaxLength(160100); b.Property<string>("RunnerVersion") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int?>("TestResultCode"); b.Property<string>("TestServerVersion") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int?>("TimeForCompiling"); @@ -349,6 +382,10 @@ namespace ClientServer.Migrations b.Property<int>("AfterSolutionId"); + b.Property<bool>("CharacterLimitExceeded"); + + b.Property<int?>("CharacterLimitUsed"); + b.Property<int?>("CompileTimeoutInMsUsed"); b.Property<DateTime>("CreatedAt"); @@ -362,15 +399,15 @@ namespace ClientServer.Migrations b.Property<int?>("ProgramExitCode"); b.Property<string>("Protocol") - .HasMaxLength(10000); + .HasMaxLength(160100); b.Property<string>("RunnerVersion") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int?>("TestResultCode"); b.Property<string>("TestServerVersion") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int?>("TimeForCompiling"); @@ -387,40 +424,6 @@ namespace ClientServer.Migrations b.ToTable("TestWithAfterSolutionAsTestResults"); }); - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<string>("AssetUrl") - .HasMaxLength(500); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomProjectDescriptionId"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<int?>("ExerciseDescriptionId") - .IsRequired(); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomProjectDescriptionId"); - - b.HasIndex("ExerciseDescriptionId"); - - b.ToTable("Assets"); - }); - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => { b.Property<int>("Id") @@ -448,6 +451,21 @@ namespace ClientServer.Migrations b.ToTable("Templates"); }); + modelBuilder.Entity("ClientServer.Models.Exercises.CustomTestWithFileAsAssetReference", b => + { + b.Property<int>("CustomTestId"); + + b.Property<int>("FileReferenceUserFileAssetId"); + + b.HasKey("CustomTestId", "FileReferenceUserFileAssetId"); + + b.HasIndex("CustomTestId"); + + b.HasIndex("FileReferenceUserFileAssetId"); + + b.ToTable("CustomTestWithFileAsAssetReferences"); + }); + modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => { b.Property<int>("Id") @@ -460,7 +478,7 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("DisplayName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<bool>("IsOnlyVisibleToOwner"); @@ -469,10 +487,10 @@ namespace ClientServer.Migrations b.Property<DateTime>("LastUpdatedAt"); b.Property<string>("Note") - .HasMaxLength(1000); + .HasMaxLength(10000); b.Property<string>("ShortDescription") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int>("UserGroupId"); @@ -493,7 +511,7 @@ namespace ClientServer.Migrations .ValueGeneratedOnAdd(); b.Property<string>("Content") - .HasMaxLength(10000); + .HasMaxLength(50000); b.Property<DateTime>("CreatedAt"); @@ -533,8 +551,6 @@ namespace ClientServer.Migrations b.Property<int>("ExerciseId"); - b.Property<int?>("ExerciseId1"); - b.Property<DateTime>("LastUpdatedAt"); b.HasKey("Id"); @@ -542,8 +558,6 @@ namespace ClientServer.Migrations b.HasIndex("ExerciseId") .IsUnique(); - b.HasIndex("ExerciseId1"); - b.ToTable("MetaDatas"); }); @@ -564,7 +578,7 @@ namespace ClientServer.Migrations b.Property<string>("GeneratedCode") .IsRequired() - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<bool>("HadAutomaticAssessmentErrors"); @@ -591,7 +605,7 @@ namespace ClientServer.Migrations b.Property<int?>("MaxManualPoint"); b.Property<string>("Note") - .HasMaxLength(1000); + .HasMaxLength(10000); b.Property<int>("PLangId"); @@ -631,6 +645,10 @@ namespace ClientServer.Migrations b.Property<int>("SolutionPLangId"); + b.Property<bool>("CharacterLimitExceeded"); + + b.Property<int?>("CharacterLimitUsed"); + b.Property<int?>("CompileTimeoutInMsUsed"); b.Property<DateTime>("CreatedAt"); @@ -644,15 +662,15 @@ namespace ClientServer.Migrations b.Property<int?>("ProgramExitCode"); b.Property<string>("Protocol") - .HasMaxLength(10000); + .HasMaxLength(160100); b.Property<string>("RunnerVersion") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int?>("TestResultCode"); b.Property<string>("TestServerVersion") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int?>("TimeForCompiling"); @@ -709,14 +727,14 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("LastEditingIpAddress") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); b.Property<int?>("MainFileId"); b.Property<string>("Note") - .HasMaxLength(1000); + .HasMaxLength(10000); b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); @@ -739,10 +757,10 @@ namespace ClientServer.Migrations .ValueGeneratedOnAdd(); b.Property<string>("FeedbackForStudent") - .HasMaxLength(1000); + .HasMaxLength(10000); b.Property<string>("LastAssessmentErrorMessage") - .HasMaxLength(5000); + .HasMaxLength(80000); b.Property<int?>("ManualPoints"); @@ -753,7 +771,7 @@ namespace ClientServer.Migrations b.Property<int?>("NormalTestPoints"); b.Property<string>("NoteForOtherTutors") - .HasMaxLength(1000); + .HasMaxLength(10000); b.Property<int?>("SubmitTestPoints"); @@ -768,14 +786,14 @@ namespace ClientServer.Migrations .ValueGeneratedOnAdd(); b.Property<string>("Content") - .HasMaxLength(10000); + .HasMaxLength(70000); b.Property<DateTime>("CreatedAt"); b.Property<int>("DisplayIndex"); b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<bool>("IsDisplayed"); @@ -808,6 +826,10 @@ namespace ClientServer.Migrations b.Property<int>("SolutionPLangId"); + b.Property<bool>("CharacterLimitExceeded"); + + b.Property<int?>("CharacterLimitUsed"); + b.Property<int?>("CompileTimeoutInMsUsed"); b.Property<DateTime>("CreatedAt"); @@ -821,15 +843,15 @@ namespace ClientServer.Migrations b.Property<int?>("ProgramExitCode"); b.Property<string>("Protocol") - .HasMaxLength(10000); + .HasMaxLength(160100); b.Property<string>("RunnerVersion") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int?>("TestResultCode"); b.Property<string>("TestServerVersion") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int?>("TimeForCompiling"); @@ -854,19 +876,19 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("Description") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("DisplayName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("HtmlBackgroundColor") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("HtmlColor") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("HtmlIcon") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); @@ -906,14 +928,14 @@ namespace ClientServer.Migrations .IsRequired(); b.Property<string>("Content") - .HasMaxLength(10000); + .HasMaxLength(70000); b.Property<DateTime>("CreatedAt"); b.Property<int>("DisplayIndex"); b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<bool>("IsContentVisibleForUser"); @@ -934,14 +956,14 @@ namespace ClientServer.Migrations .ValueGeneratedOnAdd(); b.Property<string>("Content") - .HasMaxLength(5000); + .HasMaxLength(80000); b.Property<DateTime>("CreatedAt"); b.Property<int>("DisplayIndex"); b.Property<string>("DisplayName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int>("ExerciseReleaseId"); @@ -960,36 +982,6 @@ namespace ClientServer.Migrations b.ToTable("CustomTest"); }); - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<int?>("CustomTestId") - .IsRequired(); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.HasKey("Id"); - - b.HasIndex("CustomTestId"); - - b.ToTable("CustomTestAssets"); - }); - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => { b.Property<int>("Id") @@ -997,6 +989,9 @@ namespace ClientServer.Migrations b.Property<int>("CompileTimeoutInMs"); + b.Property<string>("CompilerOptions") + .HasMaxLength(2000); + b.Property<DateTime>("CreatedAt"); b.Property<int>("ExerciseId"); @@ -1023,14 +1018,14 @@ namespace ClientServer.Migrations .ValueGeneratedOnAdd(); b.Property<string>("Content") - .HasMaxLength(5000); + .HasMaxLength(80000); b.Property<DateTime>("CreatedAt"); b.Property<int>("DisplayIndex"); b.Property<string>("DisplayName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int>("ExerciseId"); @@ -1056,36 +1051,6 @@ namespace ClientServer.Migrations b.ToTable("Tests"); }); - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.Property<int>("Id") - .ValueGeneratedOnAdd(); - - b.Property<byte[]>("Content"); - - b.Property<DateTime>("CreatedAt"); - - b.Property<string>("DisplayName") - .HasMaxLength(500); - - b.Property<string>("Hash") - .HasMaxLength(500); - - b.Property<DateTime>("LastUpdatedAt"); - - b.Property<string>("MimeType") - .HasMaxLength(500); - - b.Property<int?>("TestId") - .IsRequired(); - - b.HasKey("Id"); - - b.HasIndex("TestId"); - - b.ToTable("TestAssets"); - }); - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestSettings", b => { b.Property<int>("Id") @@ -1093,6 +1058,9 @@ namespace ClientServer.Migrations b.Property<int>("CompileTimeoutInMs"); + b.Property<string>("CompilerOptions") + .HasMaxLength(2000); + b.Property<DateTime>("CreatedAt"); b.Property<DateTime>("LastUpdatedAt"); @@ -1116,10 +1084,10 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("DisplayName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("InternalName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); @@ -1151,18 +1119,15 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("Hash") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); b.Property<string>("MimeType") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("OriginalName") - .HasMaxLength(500); - - b.Property<string>("RelativePath") - .HasMaxLength(5000); + .HasMaxLength(2000); b.Property<long>("SizeInBytes"); @@ -1179,18 +1144,15 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("Hash") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); b.Property<string>("MimeType") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("OriginalName") - .HasMaxLength(500); - - b.Property<string>("RelativePath") - .HasMaxLength(5000); + .HasMaxLength(2000); b.Property<long>("SizeInBytes"); @@ -1199,6 +1161,31 @@ namespace ClientServer.Migrations b.ToTable("FileReferenceTestAssets"); }); + modelBuilder.Entity("ClientServer.Models.Files.FileReferenceUserFileAsset", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd(); + + b.Property<DateTime>("CreatedAt"); + + b.Property<string>("Hash") + .HasMaxLength(2000); + + b.Property<DateTime>("LastUpdatedAt"); + + b.Property<string>("MimeType") + .HasMaxLength(2000); + + b.Property<string>("OriginalName") + .HasMaxLength(2000); + + b.Property<long>("SizeInBytes"); + + b.HasKey("Id"); + + b.ToTable("FileReferenceUserFileAssets"); + }); + modelBuilder.Entity("ClientServer.Models.Lang", b => { b.Property<int>("Id") @@ -1207,10 +1194,10 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("LangShortcut") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("Language") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); @@ -1227,16 +1214,16 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("DisplayName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("EditorHighlightModeName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("FileExtensionsWithDot") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("InternalName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); @@ -1252,17 +1239,17 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("CsrfToken") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("ExpirationDateTime"); b.Property<DateTime>("LastUpdatedAt"); b.Property<string>("RandomSecret") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("UserAuthToken") - .HasMaxLength(500); + .HasMaxLength(2000); b.HasKey("UserId"); @@ -1283,13 +1270,13 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("Email") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("FirstName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("LastName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); @@ -1297,7 +1284,7 @@ namespace ClientServer.Migrations b.Property<string>("Token") .IsRequired() - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int>("UserId"); @@ -1320,7 +1307,7 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("DisplayName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int>("GroupRolePermissionId"); @@ -1355,7 +1342,7 @@ namespace ClientServer.Migrations b.Property<bool>("CanLockExercisesPermanently"); - b.Property<bool>("CanReleaseExercises"); + b.Property<bool>("CanManageExerciseReleases"); b.Property<bool>("CanRemoveMemberFromGroup"); @@ -1394,7 +1381,7 @@ namespace ClientServer.Migrations b.Property<int>("TabSize"); b.Property<string>("Theme") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<bool>("UseWrapping"); @@ -1417,7 +1404,7 @@ namespace ClientServer.Migrations b.Property<DateTime>("LastUpdatedAt"); b.Property<string>("Theme") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int?>("UserId"); @@ -1442,10 +1429,10 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("DisplayName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("Email") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); @@ -1505,7 +1492,7 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("CurrentServerMessage") - .HasMaxLength(1000); + .HasMaxLength(10000); b.Property<int>("CustomProjectTestCompileTimeoutInMs"); @@ -1542,18 +1529,18 @@ namespace ClientServer.Migrations b.Property<int>("SubmitTestServerTimeoutInMs"); b.Property<string>("SubmitTestServerUrl") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("TestServerConfigUiUrl") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("TestServerStatsUrl") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int>("TestServerTimeoutInMs"); b.Property<string>("TestServerUrl") - .HasMaxLength(500); + .HasMaxLength(2000); b.HasKey("Id"); @@ -1577,28 +1564,28 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("Email") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("FirstName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<bool>("IsActivated"); b.Property<DateTime>("LastLoginAt"); b.Property<string>("LastName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); b.Property<string>("Password") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int?>("SystemRoleId"); b.Property<string>("Token") .IsRequired() - .HasMaxLength(500); + .HasMaxLength(2000); b.HasKey("Id"); @@ -1618,10 +1605,10 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("DisplayName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("Email") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); @@ -1669,6 +1656,19 @@ namespace ClientServer.Migrations .OnDelete(DeleteBehavior.Cascade); }); + modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectDescriptionWithFileAsAssetReference", b => + { + b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription", "CustomProjectDescription") + .WithMany("AssetReferences") + .HasForeignKey("CustomProjectDescriptionId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("ClientServer.Models.Files.FileReferenceUserFileAsset", "FileReferenceUserFileAsset") + .WithMany("CustomProjectDescriptionWithFileAsAssetReferences") + .HasForeignKey("FileReferenceUserFileAssetId") + .OnDelete(DeleteBehavior.Cascade); + }); + modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectSolution", b => { b.HasOne("ClientServer.Models.CustomProjects.CustomProject", "CustomProject") @@ -1713,12 +1713,17 @@ namespace ClientServer.Migrations .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestAsset", b => + modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithFileAsAssetReference", b => { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest") - .WithMany("TestAssets") + b.HasOne("ClientServer.Models.CustomProjects.CustomProjectTest", "CustomProjectTest") + .WithMany("AssetReferences") .HasForeignKey("CustomProjectTestId") .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("ClientServer.Models.Files.FileReferenceUserFileAsset", "FileReferenceUserFileAsset") + .WithMany("CustomProjectTestWithFileAsAssetReferences") + .HasForeignKey("FileReferenceUserFileAssetId") + .OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity("ClientServer.Models.CustomProjects.CustomProjectTestWithSolutionAsTestResult", b => @@ -1785,18 +1790,6 @@ namespace ClientServer.Migrations .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("ClientServer.Models.Exercises.Asset", b => - { - b.HasOne("ClientServer.Models.CustomProjects.CustomProjectDescription") - .WithMany("Assets") - .HasForeignKey("CustomProjectDescriptionId"); - - b.HasOne("ClientServer.Models.Exercises.ExerciseDescription") - .WithMany("Assets") - .HasForeignKey("ExerciseDescriptionId") - .OnDelete(DeleteBehavior.Cascade); - }); - modelBuilder.Entity("ClientServer.Models.Exercises.CodeTemplate", b => { b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") @@ -1814,6 +1807,19 @@ namespace ClientServer.Migrations .HasForeignKey("PLangId"); }); + modelBuilder.Entity("ClientServer.Models.Exercises.CustomTestWithFileAsAssetReference", b => + { + b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest", "CustomTest") + .WithMany("AssetReferences") + .HasForeignKey("CustomTestId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("ClientServer.Models.Files.FileReferenceUserFileAsset", "FileReferenceUserFileAsset") + .WithMany("CustomTestWithFileAsAssetReferences") + .HasForeignKey("FileReferenceUserFileAssetId") + .OnDelete(DeleteBehavior.Cascade); + }); + modelBuilder.Entity("ClientServer.Models.Exercises.Exercise", b => { b.HasOne("ClientServer.Models.Users.UserGroup", "UserGroup") @@ -1850,14 +1856,10 @@ namespace ClientServer.Migrations modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => { - b.HasOne("ClientServer.Models.Exercises.Exercise") + b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") .WithOne("MetaData") .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); }); modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => @@ -1984,14 +1986,6 @@ namespace ClientServer.Migrations .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.CustomTestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.CustomTest") - .WithMany("TestAssets") - .HasForeignKey("CustomTestId") - .OnDelete(DeleteBehavior.Cascade); - }); - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.DefaultCustomTestSettings", b => { b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") @@ -2017,14 +2011,6 @@ namespace ClientServer.Migrations .HasForeignKey("TestTypeId"); }); - modelBuilder.Entity("ClientServer.Models.Exercises.Tests.TestAsset", b => - { - b.HasOne("ClientServer.Models.Exercises.Tests.Test") - .WithMany("TestAssets") - .HasForeignKey("TestId") - .OnDelete(DeleteBehavior.Cascade); - }); - modelBuilder.Entity("ClientServer.Models.Exercises.TestWithFileAsAssetReference", b => { b.HasOne("ClientServer.Models.Files.FileReferenceTestAsset", "FileReferenceTestAsset") diff --git a/src/ClientServer/Migrations/20190428191918_MoreTestLimitsAndCompilerTimeout.cs b/src/ClientServer/Migrations/20190729133239_addTestResultCharacterLimit.cs similarity index 52% rename from src/ClientServer/Migrations/20190428191918_MoreTestLimitsAndCompilerTimeout.cs rename to src/ClientServer/Migrations/20190729133239_addTestResultCharacterLimit.cs index 7a69425f26a2ba8676c28bd802bc2ac33c6729f3..0cfbe91831d06e45d3322db995e9e2acea88046b 100755 --- a/src/ClientServer/Migrations/20190428191918_MoreTestLimitsAndCompilerTimeout.cs +++ b/src/ClientServer/Migrations/20190729133239_addTestResultCharacterLimit.cs @@ -4,81 +4,74 @@ using Microsoft.EntityFrameworkCore.Migrations; namespace ClientServer.Migrations { - public partial class MoreTestLimitsAndCompilerTimeout : Migration + public partial class addTestResultCharacterLimit : Migration { protected override void Up(MigrationBuilder migrationBuilder) { - migrationBuilder.AddColumn<int>( - name: "CustomProjectTestCompileTimeoutInMs", - table: "SystemSettings", - nullable: false, - defaultValue: 2000); - - migrationBuilder.AddColumn<int>( - name: "JustRunProgramCompileTimeoutInMs", - table: "SystemSettings", - nullable: false, - defaultValue: 2000); + migrationBuilder.DropForeignKey( + name: "FK_MetaDatas_Exercises_ExerciseId1", + table: "MetaDatas"); - migrationBuilder.AddColumn<int>( - name: "CompileTimeoutInMs", - table: "TestCaseSettingses", - nullable: false, - defaultValue: 2000); + migrationBuilder.DropIndex( + name: "IX_MetaDatas_ExerciseId1", + table: "MetaDatas"); - migrationBuilder.AddColumn<int>( - name: "CompileTimeoutInMs", - table: "DefaultCustomTestSettings", - nullable: false, - defaultValue: 2000); + migrationBuilder.DropColumn( + name: "ExerciseId1", + table: "MetaDatas"); - migrationBuilder.AddColumn<int>( - name: "CompileTimeoutInMsUsed", + migrationBuilder.AddColumn<bool>( + name: "CharacterLimitExceeded", table: "TestWithSingleSolutionAsTestResult", - nullable: true); + nullable: false, + defaultValue: false); migrationBuilder.AddColumn<int>( - name: "TimeoutInMsUsed", + name: "CharacterLimitUsed", table: "TestWithSingleSolutionAsTestResult", nullable: true); - migrationBuilder.AddColumn<int>( - name: "CompileTimeoutInMsUsed", + migrationBuilder.AddColumn<bool>( + name: "CharacterLimitExceeded", table: "CustomTestWithSingleSolutionAsTestResult", - nullable: true); + nullable: false, + defaultValue: false); migrationBuilder.AddColumn<int>( - name: "TimeoutInMsUsed", + name: "CharacterLimitUsed", table: "CustomTestWithSingleSolutionAsTestResult", nullable: true); - migrationBuilder.AddColumn<int>( - name: "CompileTimeoutInMsUsed", + migrationBuilder.AddColumn<bool>( + name: "CharacterLimitExceeded", table: "TestWithAfterSolutionAsTestResults", - nullable: true); + nullable: false, + defaultValue: false); migrationBuilder.AddColumn<int>( - name: "TimeoutInMsUsed", + name: "CharacterLimitUsed", table: "TestWithAfterSolutionAsTestResults", nullable: true); - migrationBuilder.AddColumn<int>( - name: "CompileTimeoutInMsUsed", + migrationBuilder.AddColumn<bool>( + name: "CharacterLimitExceeded", table: "CustomTestWithAfterSolutionAsTestResults", - nullable: true); + nullable: false, + defaultValue: false); migrationBuilder.AddColumn<int>( - name: "TimeoutInMsUsed", + name: "CharacterLimitUsed", table: "CustomTestWithAfterSolutionAsTestResults", nullable: true); - migrationBuilder.AddColumn<int>( - name: "CompileTimeoutInMsUsed", + migrationBuilder.AddColumn<bool>( + name: "CharacterLimitExceeded", table: "CustomProjectTestWithSolutionAsTestResults", - nullable: true); + nullable: false, + defaultValue: false); migrationBuilder.AddColumn<int>( - name: "TimeoutInMsUsed", + name: "CharacterLimitUsed", table: "CustomProjectTestWithSolutionAsTestResults", nullable: true); } @@ -86,60 +79,62 @@ namespace ClientServer.Migrations protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropColumn( - name: "CustomProjectTestCompileTimeoutInMs", - table: "SystemSettings"); - - migrationBuilder.DropColumn( - name: "JustRunProgramCompileTimeoutInMs", - table: "SystemSettings"); - - migrationBuilder.DropColumn( - name: "CompileTimeoutInMs", - table: "TestCaseSettingses"); - - migrationBuilder.DropColumn( - name: "CompileTimeoutInMs", - table: "DefaultCustomTestSettings"); - - migrationBuilder.DropColumn( - name: "CompileTimeoutInMsUsed", + name: "CharacterLimitExceeded", table: "TestWithSingleSolutionAsTestResult"); migrationBuilder.DropColumn( - name: "TimeoutInMsUsed", + name: "CharacterLimitUsed", table: "TestWithSingleSolutionAsTestResult"); migrationBuilder.DropColumn( - name: "CompileTimeoutInMsUsed", + name: "CharacterLimitExceeded", table: "CustomTestWithSingleSolutionAsTestResult"); migrationBuilder.DropColumn( - name: "TimeoutInMsUsed", + name: "CharacterLimitUsed", table: "CustomTestWithSingleSolutionAsTestResult"); migrationBuilder.DropColumn( - name: "CompileTimeoutInMsUsed", + name: "CharacterLimitExceeded", table: "TestWithAfterSolutionAsTestResults"); migrationBuilder.DropColumn( - name: "TimeoutInMsUsed", + name: "CharacterLimitUsed", table: "TestWithAfterSolutionAsTestResults"); migrationBuilder.DropColumn( - name: "CompileTimeoutInMsUsed", + name: "CharacterLimitExceeded", table: "CustomTestWithAfterSolutionAsTestResults"); migrationBuilder.DropColumn( - name: "TimeoutInMsUsed", + name: "CharacterLimitUsed", table: "CustomTestWithAfterSolutionAsTestResults"); migrationBuilder.DropColumn( - name: "CompileTimeoutInMsUsed", + name: "CharacterLimitExceeded", table: "CustomProjectTestWithSolutionAsTestResults"); migrationBuilder.DropColumn( - name: "TimeoutInMsUsed", + name: "CharacterLimitUsed", table: "CustomProjectTestWithSolutionAsTestResults"); + + migrationBuilder.AddColumn<int>( + name: "ExerciseId1", + table: "MetaDatas", + nullable: true); + + migrationBuilder.CreateIndex( + name: "IX_MetaDatas_ExerciseId1", + table: "MetaDatas", + column: "ExerciseId1"); + + migrationBuilder.AddForeignKey( + name: "FK_MetaDatas_Exercises_ExerciseId1", + table: "MetaDatas", + column: "ExerciseId1", + principalTable: "Exercises", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); } } } diff --git a/src/ClientServer/Migrations/SyndromDbContextModelSnapshot.cs b/src/ClientServer/Migrations/YapexDbContextModelSnapshot.cs old mode 100644 new mode 100755 similarity index 93% rename from src/ClientServer/Migrations/SyndromDbContextModelSnapshot.cs rename to src/ClientServer/Migrations/YapexDbContextModelSnapshot.cs index 72787d5e542f3e7bf790ea54ed0a841606fb1cff..fee1131001010d3f65f3fb6d85bf60fa8950b2ac --- a/src/ClientServer/Migrations/SyndromDbContextModelSnapshot.cs +++ b/src/ClientServer/Migrations/YapexDbContextModelSnapshot.cs @@ -9,7 +9,7 @@ using ClientServer.Models.Exercises.Release; namespace ClientServer.Migrations { [DbContext(typeof(YapexDbContext))] - partial class SyndromDbContextModelSnapshot : ModelSnapshot + partial class YapexDbContextModelSnapshot : ModelSnapshot { protected override void BuildModel(ModelBuilder modelBuilder) { @@ -34,7 +34,7 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("DisplayName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int>("LastEditorPLangId"); @@ -55,7 +55,7 @@ namespace ClientServer.Migrations .ValueGeneratedOnAdd(); b.Property<string>("Content") - .HasMaxLength(10000); + .HasMaxLength(50000); b.Property<DateTime>("CreatedAt"); @@ -119,7 +119,7 @@ namespace ClientServer.Migrations .ValueGeneratedOnAdd(); b.Property<string>("Content") - .HasMaxLength(10000); + .HasMaxLength(70000); b.Property<DateTime>("CreatedAt"); @@ -129,7 +129,7 @@ namespace ClientServer.Migrations b.Property<int>("DisplayIndex"); b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<bool>("IsDisplayed"); @@ -148,7 +148,7 @@ namespace ClientServer.Migrations .ValueGeneratedOnAdd(); b.Property<string>("Content") - .HasMaxLength(5000); + .HasMaxLength(80000); b.Property<DateTime>("CreatedAt"); @@ -157,7 +157,7 @@ namespace ClientServer.Migrations b.Property<int>("DisplayIndex"); b.Property<string>("DisplayName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); @@ -189,15 +189,15 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("DisplayName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("Hash") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); b.Property<string>("MimeType") - .HasMaxLength(500); + .HasMaxLength(2000); b.HasKey("Id"); @@ -225,6 +225,10 @@ namespace ClientServer.Migrations b.Property<int>("CustomProjectTestId"); + b.Property<bool>("CharacterLimitExceeded"); + + b.Property<int?>("CharacterLimitUsed"); + b.Property<int?>("CompileTimeoutInMsUsed"); b.Property<DateTime>("CreatedAt"); @@ -238,15 +242,15 @@ namespace ClientServer.Migrations b.Property<int?>("ProgramExitCode"); b.Property<string>("Protocol") - .HasMaxLength(10000); + .HasMaxLength(160100); b.Property<string>("RunnerVersion") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int?>("TestResultCode"); b.Property<string>("TestServerVersion") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int?>("TimeForCompiling"); @@ -299,14 +303,14 @@ namespace ClientServer.Migrations b.Property<int>("AfterSolutionId"); b.Property<string>("Content") - .HasMaxLength(10000); + .HasMaxLength(70000); b.Property<DateTime>("CreatedAt"); b.Property<int>("DisplayIndex"); b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<bool>("IsDisplayed"); @@ -329,6 +333,10 @@ namespace ClientServer.Migrations b.Property<int>("AfterSolutionId"); + b.Property<bool>("CharacterLimitExceeded"); + + b.Property<int?>("CharacterLimitUsed"); + b.Property<int?>("CompileTimeoutInMsUsed"); b.Property<DateTime>("CreatedAt"); @@ -342,15 +350,15 @@ namespace ClientServer.Migrations b.Property<int?>("ProgramExitCode"); b.Property<string>("Protocol") - .HasMaxLength(10000); + .HasMaxLength(160100); b.Property<string>("RunnerVersion") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int?>("TestResultCode"); b.Property<string>("TestServerVersion") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int?>("TimeForCompiling"); @@ -373,6 +381,10 @@ namespace ClientServer.Migrations b.Property<int>("AfterSolutionId"); + b.Property<bool>("CharacterLimitExceeded"); + + b.Property<int?>("CharacterLimitUsed"); + b.Property<int?>("CompileTimeoutInMsUsed"); b.Property<DateTime>("CreatedAt"); @@ -386,15 +398,15 @@ namespace ClientServer.Migrations b.Property<int?>("ProgramExitCode"); b.Property<string>("Protocol") - .HasMaxLength(10000); + .HasMaxLength(160100); b.Property<string>("RunnerVersion") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int?>("TestResultCode"); b.Property<string>("TestServerVersion") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int?>("TimeForCompiling"); @@ -465,7 +477,7 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("DisplayName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<bool>("IsOnlyVisibleToOwner"); @@ -474,10 +486,10 @@ namespace ClientServer.Migrations b.Property<DateTime>("LastUpdatedAt"); b.Property<string>("Note") - .HasMaxLength(1000); + .HasMaxLength(10000); b.Property<string>("ShortDescription") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int>("UserGroupId"); @@ -498,7 +510,7 @@ namespace ClientServer.Migrations .ValueGeneratedOnAdd(); b.Property<string>("Content") - .HasMaxLength(10000); + .HasMaxLength(50000); b.Property<DateTime>("CreatedAt"); @@ -538,8 +550,6 @@ namespace ClientServer.Migrations b.Property<int>("ExerciseId"); - b.Property<int?>("ExerciseId1"); - b.Property<DateTime>("LastUpdatedAt"); b.HasKey("Id"); @@ -547,8 +557,6 @@ namespace ClientServer.Migrations b.HasIndex("ExerciseId") .IsUnique(); - b.HasIndex("ExerciseId1"); - b.ToTable("MetaDatas"); }); @@ -569,7 +577,7 @@ namespace ClientServer.Migrations b.Property<string>("GeneratedCode") .IsRequired() - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<bool>("HadAutomaticAssessmentErrors"); @@ -596,7 +604,7 @@ namespace ClientServer.Migrations b.Property<int?>("MaxManualPoint"); b.Property<string>("Note") - .HasMaxLength(1000); + .HasMaxLength(10000); b.Property<int>("PLangId"); @@ -636,6 +644,10 @@ namespace ClientServer.Migrations b.Property<int>("SolutionPLangId"); + b.Property<bool>("CharacterLimitExceeded"); + + b.Property<int?>("CharacterLimitUsed"); + b.Property<int?>("CompileTimeoutInMsUsed"); b.Property<DateTime>("CreatedAt"); @@ -649,15 +661,15 @@ namespace ClientServer.Migrations b.Property<int?>("ProgramExitCode"); b.Property<string>("Protocol") - .HasMaxLength(10000); + .HasMaxLength(160100); b.Property<string>("RunnerVersion") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int?>("TestResultCode"); b.Property<string>("TestServerVersion") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int?>("TimeForCompiling"); @@ -714,14 +726,14 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("LastEditingIpAddress") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); b.Property<int?>("MainFileId"); b.Property<string>("Note") - .HasMaxLength(1000); + .HasMaxLength(10000); b.HasKey("UserId", "ExerciseReleaseId", "PLangId"); @@ -744,10 +756,10 @@ namespace ClientServer.Migrations .ValueGeneratedOnAdd(); b.Property<string>("FeedbackForStudent") - .HasMaxLength(1000); + .HasMaxLength(10000); b.Property<string>("LastAssessmentErrorMessage") - .HasMaxLength(5000); + .HasMaxLength(80000); b.Property<int?>("ManualPoints"); @@ -758,7 +770,7 @@ namespace ClientServer.Migrations b.Property<int?>("NormalTestPoints"); b.Property<string>("NoteForOtherTutors") - .HasMaxLength(1000); + .HasMaxLength(10000); b.Property<int?>("SubmitTestPoints"); @@ -773,14 +785,14 @@ namespace ClientServer.Migrations .ValueGeneratedOnAdd(); b.Property<string>("Content") - .HasMaxLength(10000); + .HasMaxLength(70000); b.Property<DateTime>("CreatedAt"); b.Property<int>("DisplayIndex"); b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<bool>("IsDisplayed"); @@ -813,6 +825,10 @@ namespace ClientServer.Migrations b.Property<int>("SolutionPLangId"); + b.Property<bool>("CharacterLimitExceeded"); + + b.Property<int?>("CharacterLimitUsed"); + b.Property<int?>("CompileTimeoutInMsUsed"); b.Property<DateTime>("CreatedAt"); @@ -826,15 +842,15 @@ namespace ClientServer.Migrations b.Property<int?>("ProgramExitCode"); b.Property<string>("Protocol") - .HasMaxLength(10000); + .HasMaxLength(160100); b.Property<string>("RunnerVersion") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int?>("TestResultCode"); b.Property<string>("TestServerVersion") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int?>("TimeForCompiling"); @@ -859,19 +875,19 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("Description") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("DisplayName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("HtmlBackgroundColor") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("HtmlColor") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("HtmlIcon") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); @@ -911,14 +927,14 @@ namespace ClientServer.Migrations .IsRequired(); b.Property<string>("Content") - .HasMaxLength(10000); + .HasMaxLength(70000); b.Property<DateTime>("CreatedAt"); b.Property<int>("DisplayIndex"); b.Property<string>("FileNameWithExtension") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<bool>("IsContentVisibleForUser"); @@ -939,14 +955,14 @@ namespace ClientServer.Migrations .ValueGeneratedOnAdd(); b.Property<string>("Content") - .HasMaxLength(5000); + .HasMaxLength(80000); b.Property<DateTime>("CreatedAt"); b.Property<int>("DisplayIndex"); b.Property<string>("DisplayName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int>("ExerciseReleaseId"); @@ -973,7 +989,7 @@ namespace ClientServer.Migrations b.Property<int>("CompileTimeoutInMs"); b.Property<string>("CompilerOptions") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("CreatedAt"); @@ -1001,14 +1017,14 @@ namespace ClientServer.Migrations .ValueGeneratedOnAdd(); b.Property<string>("Content") - .HasMaxLength(5000); + .HasMaxLength(80000); b.Property<DateTime>("CreatedAt"); b.Property<int>("DisplayIndex"); b.Property<string>("DisplayName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int>("ExerciseId"); @@ -1042,7 +1058,7 @@ namespace ClientServer.Migrations b.Property<int>("CompileTimeoutInMs"); b.Property<string>("CompilerOptions") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("CreatedAt"); @@ -1067,10 +1083,10 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("DisplayName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("InternalName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); @@ -1102,15 +1118,15 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("Hash") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); b.Property<string>("MimeType") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("OriginalName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<long>("SizeInBytes"); @@ -1127,15 +1143,15 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("Hash") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); b.Property<string>("MimeType") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("OriginalName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<long>("SizeInBytes"); @@ -1152,15 +1168,15 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("Hash") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); b.Property<string>("MimeType") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("OriginalName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<long>("SizeInBytes"); @@ -1177,10 +1193,10 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("LangShortcut") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("Language") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); @@ -1197,16 +1213,16 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("DisplayName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("EditorHighlightModeName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("FileExtensionsWithDot") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("InternalName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); @@ -1222,17 +1238,17 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("CsrfToken") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("ExpirationDateTime"); b.Property<DateTime>("LastUpdatedAt"); b.Property<string>("RandomSecret") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("UserAuthToken") - .HasMaxLength(500); + .HasMaxLength(2000); b.HasKey("UserId"); @@ -1253,13 +1269,13 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("Email") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("FirstName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("LastName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); @@ -1267,7 +1283,7 @@ namespace ClientServer.Migrations b.Property<string>("Token") .IsRequired() - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int>("UserId"); @@ -1290,7 +1306,7 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("DisplayName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int>("GroupRolePermissionId"); @@ -1364,7 +1380,7 @@ namespace ClientServer.Migrations b.Property<int>("TabSize"); b.Property<string>("Theme") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<bool>("UseWrapping"); @@ -1387,7 +1403,7 @@ namespace ClientServer.Migrations b.Property<DateTime>("LastUpdatedAt"); b.Property<string>("Theme") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int?>("UserId"); @@ -1412,10 +1428,10 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("DisplayName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("Email") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); @@ -1475,7 +1491,7 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("CurrentServerMessage") - .HasMaxLength(1000); + .HasMaxLength(10000); b.Property<int>("CustomProjectTestCompileTimeoutInMs"); @@ -1512,18 +1528,18 @@ namespace ClientServer.Migrations b.Property<int>("SubmitTestServerTimeoutInMs"); b.Property<string>("SubmitTestServerUrl") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("TestServerConfigUiUrl") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("TestServerStatsUrl") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int>("TestServerTimeoutInMs"); b.Property<string>("TestServerUrl") - .HasMaxLength(500); + .HasMaxLength(2000); b.HasKey("Id"); @@ -1547,28 +1563,28 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("Email") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("FirstName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<bool>("IsActivated"); b.Property<DateTime>("LastLoginAt"); b.Property<string>("LastName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); b.Property<string>("Password") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<int?>("SystemRoleId"); b.Property<string>("Token") .IsRequired() - .HasMaxLength(500); + .HasMaxLength(2000); b.HasKey("Id"); @@ -1588,10 +1604,10 @@ namespace ClientServer.Migrations b.Property<DateTime>("CreatedAt"); b.Property<string>("DisplayName") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<string>("Email") - .HasMaxLength(500); + .HasMaxLength(2000); b.Property<DateTime>("LastUpdatedAt"); @@ -1839,14 +1855,10 @@ namespace ClientServer.Migrations modelBuilder.Entity("ClientServer.Models.Exercises.MetaData", b => { - b.HasOne("ClientServer.Models.Exercises.Exercise") + b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") .WithOne("MetaData") .HasForeignKey("ClientServer.Models.Exercises.MetaData", "ExerciseId") .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("ClientServer.Models.Exercises.Exercise", "Exercise") - .WithMany() - .HasForeignKey("ExerciseId1"); }); modelBuilder.Entity("ClientServer.Models.Exercises.Release.ExerciseRelease", b => diff --git a/src/ClientServer/Models/CustomProjects/CustomProjectTestWithSolutionAsTestResult.cs b/src/ClientServer/Models/CustomProjects/CustomProjectTestWithSolutionAsTestResult.cs index 9454b841fe9d96539d2645db848bb1fcb60c3276..7e4fa7a856ba323845b1ba7a156b68bdc2348ec1 100644 --- a/src/ClientServer/Models/CustomProjects/CustomProjectTestWithSolutionAsTestResult.cs +++ b/src/ClientServer/Models/CustomProjects/CustomProjectTestWithSolutionAsTestResult.cs @@ -78,5 +78,16 @@ namespace ClientServer.Models.CustomProjects /// </summary> [MaxLength(YapexDbContext.DefaultMaxStringLength)] public string TestServerVersion { get; set; } + + /// <summary> + /// true: the limit <see cref="YapexDbContext.TestProtocolMaxStringLength"/> was exceeded and + /// the <see cref="Protocol"/> was cut + /// </summary> + public bool CharacterLimitExceeded { get; set; } + /// <summary> + /// the db will only store a max of characters <see cref="YapexDbContext.TestProtocolMaxStringLength"/> + /// can be null for old results + /// </summary> + public int? CharacterLimitUsed { get; set; } } } diff --git a/src/ClientServer/Models/Exercises/AfterSolutions/CustomTestWithAfterSolutionAsTestResult.cs b/src/ClientServer/Models/Exercises/AfterSolutions/CustomTestWithAfterSolutionAsTestResult.cs index 099890c0d1ac636e0b18b4bc0d190bde44e8bf27..aba9c7413a23c025ebffaf68b42b1eb620cb5398 100644 --- a/src/ClientServer/Models/Exercises/AfterSolutions/CustomTestWithAfterSolutionAsTestResult.cs +++ b/src/ClientServer/Models/Exercises/AfterSolutions/CustomTestWithAfterSolutionAsTestResult.cs @@ -84,5 +84,16 @@ namespace ClientServer.Models.Exercises.AfterSolutions /// </summary> [MaxLength(YapexDbContext.DefaultMaxStringLength)] public string TestServerVersion { get; set; } + + /// <summary> + /// true: the limit <see cref="YapexDbContext.TestProtocolMaxStringLength"/> was exceeded and + /// the <see cref="Protocol"/> was cut + /// </summary> + public bool CharacterLimitExceeded { get; set; } + /// <summary> + /// the db will only store a max of characters <see cref="YapexDbContext.TestProtocolMaxStringLength"/> + /// can be null for old results + /// </summary> + public int? CharacterLimitUsed { get; set; } } } diff --git a/src/ClientServer/Models/Exercises/AfterSolutions/TestWithAfterSolutionAsTestResult.cs b/src/ClientServer/Models/Exercises/AfterSolutions/TestWithAfterSolutionAsTestResult.cs index cbf5dfbb6522f1be4ba0201ac692ee9c02ec21d3..fae4b2ba2213230101365dcce8804f05f4a8a226 100644 --- a/src/ClientServer/Models/Exercises/AfterSolutions/TestWithAfterSolutionAsTestResult.cs +++ b/src/ClientServer/Models/Exercises/AfterSolutions/TestWithAfterSolutionAsTestResult.cs @@ -86,5 +86,16 @@ namespace ClientServer.Models.Exercises.AfterSolutions /// </summary> [MaxLength(YapexDbContext.DefaultMaxStringLength)] public string TestServerVersion { get; set; } + + /// <summary> + /// true: the limit <see cref="YapexDbContext.TestProtocolMaxStringLength"/> was exceeded and + /// the <see cref="Protocol"/> was cut + /// </summary> + public bool CharacterLimitExceeded { get; set; } + /// <summary> + /// the db will only store a max of characters <see cref="YapexDbContext.TestProtocolMaxStringLength"/> + /// can be null for old results + /// </summary> + public int? CharacterLimitUsed { get; set; } } } diff --git a/src/ClientServer/Models/Exercises/Solution/CustomTestWithSingleSolutionAsTestResult.cs b/src/ClientServer/Models/Exercises/Solution/CustomTestWithSingleSolutionAsTestResult.cs index 28be011842bfaac425581c0f034503e0588692bb..089f479cd32fdb5800df2be44b784548397a5fa8 100644 --- a/src/ClientServer/Models/Exercises/Solution/CustomTestWithSingleSolutionAsTestResult.cs +++ b/src/ClientServer/Models/Exercises/Solution/CustomTestWithSingleSolutionAsTestResult.cs @@ -94,6 +94,17 @@ namespace ClientServer.Models.Exercises.Solution /// </summary> [MaxLength(YapexDbContext.DefaultMaxStringLength)] public string TestServerVersion { get; set; } + + /// <summary> + /// true: the limit <see cref="YapexDbContext.TestProtocolMaxStringLength"/> was exceeded and + /// the <see cref="Protocol"/> was cut + /// </summary> + public bool CharacterLimitExceeded { get; set; } + /// <summary> + /// the db will only store a max of characters <see cref="YapexDbContext.TestProtocolMaxStringLength"/> + /// can be null for old results + /// </summary> + public int? CharacterLimitUsed { get; set; } } } diff --git a/src/ClientServer/Models/Exercises/Solution/TestWithSingleSolutionAsTestResult.cs b/src/ClientServer/Models/Exercises/Solution/TestWithSingleSolutionAsTestResult.cs index 64b35e8332c03d3f0af7b4eb95c1d201e5947aad..3e1d5c1bbb2687eef22ac40d67525c8f9dd3590d 100644 --- a/src/ClientServer/Models/Exercises/Solution/TestWithSingleSolutionAsTestResult.cs +++ b/src/ClientServer/Models/Exercises/Solution/TestWithSingleSolutionAsTestResult.cs @@ -96,5 +96,16 @@ namespace ClientServer.Models.Exercises.Solution /// </summary> [MaxLength(YapexDbContext.DefaultMaxStringLength)] public string TestServerVersion { get; set; } + + /// <summary> + /// true: the limit <see cref="YapexDbContext.TestProtocolMaxStringLength"/> was exceeded and + /// the <see cref="Protocol"/> was cut + /// </summary> + public bool CharacterLimitExceeded { get; set; } + /// <summary> + /// the db will only store a max of characters <see cref="YapexDbContext.TestProtocolMaxStringLength"/> + /// can be null for old results + /// </summary> + public int? CharacterLimitUsed { get; set; } } }