Compare commits
2
Commits
10b51eb08a
...
cc04270c2a
@@ -313,9 +313,8 @@ public sealed class ExperimentsController(
|
|||||||
|
|
||||||
var tasks = await AccessibleTeachingTasks().AsNoTracking()
|
var tasks = await AccessibleTeachingTasks().AsNoTracking()
|
||||||
.Include(x => x.AcademicTerm)
|
.Include(x => x.AcademicTerm)
|
||||||
.Where(x =>
|
.WhereIn(taskIds, x => x.Id)
|
||||||
taskIds.Contains(x.Id) &&
|
.Where(x => x.Status == TeachingTaskStatus.Published)
|
||||||
x.Status == TeachingTaskStatus.Published)
|
|
||||||
.OrderBy(x => x.TaskNumber)
|
.OrderBy(x => x.TaskNumber)
|
||||||
.ToListAsync(cancellationToken);
|
.ToListAsync(cancellationToken);
|
||||||
if (tasks.Count != taskIds.Count)
|
if (tasks.Count != taskIds.Count)
|
||||||
@@ -329,9 +328,8 @@ public sealed class ExperimentsController(
|
|||||||
|
|
||||||
var code = request.Code.Trim();
|
var code = request.Code.Trim();
|
||||||
var conflictingTaskNumbers = await db.ExperimentProjects.AsNoTracking()
|
var conflictingTaskNumbers = await db.ExperimentProjects.AsNoTracking()
|
||||||
.Where(x =>
|
.WhereIn(taskIds, x => x.TeachingTaskId)
|
||||||
taskIds.Contains(x.TeachingTaskId) &&
|
.Where(x => x.Code == code)
|
||||||
x.Code == code)
|
|
||||||
.Select(x => x.TeachingTask!.TaskNumber)
|
.Select(x => x.TeachingTask!.TaskNumber)
|
||||||
.OrderBy(x => x)
|
.OrderBy(x => x)
|
||||||
.ToListAsync(cancellationToken);
|
.ToListAsync(cancellationToken);
|
||||||
@@ -576,7 +574,7 @@ public sealed class ExperimentsController(
|
|||||||
var projects = await ScopedProjects()
|
var projects = await ScopedProjects()
|
||||||
.Include(x => x.TeachingTask)
|
.Include(x => x.TeachingTask)
|
||||||
.ThenInclude(x => x!.AcademicTerm)
|
.ThenInclude(x => x!.AcademicTerm)
|
||||||
.Where(x => projectIds.Contains(x.Id))
|
.WhereIn(projectIds, x => x.Id)
|
||||||
.ToDictionaryAsync(x => x.Id, cancellationToken);
|
.ToDictionaryAsync(x => x.Id, cancellationToken);
|
||||||
if (projects.Count != projectIds.Count)
|
if (projects.Count != projectIds.Count)
|
||||||
return ValidationProblem(
|
return ValidationProblem(
|
||||||
|
|||||||
@@ -235,6 +235,39 @@ public sealed class MySqlMigrationTests
|
|||||||
StringComparison.OrdinalIgnoreCase);
|
StringComparison.OrdinalIgnoreCase);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void MySql_experiment_batch_project_query_is_translatable()
|
||||||
|
{
|
||||||
|
using var db = new AppDbContext(CreateMySqlOptions());
|
||||||
|
var projectIds = new[]
|
||||||
|
{
|
||||||
|
Guid.Parse("11111111-1111-1111-1111-111111111111"),
|
||||||
|
Guid.Parse("22222222-2222-2222-2222-222222222222")
|
||||||
|
};
|
||||||
|
var accessibleTaskIds = db.TeachingTasks.Select(x => x.Id);
|
||||||
|
|
||||||
|
var sql = db.ExperimentProjects
|
||||||
|
.Where(x => accessibleTaskIds.Contains(x.TeachingTaskId))
|
||||||
|
.Include(x => x.TeachingTask)
|
||||||
|
.ThenInclude(x => x!.AcademicTerm)
|
||||||
|
.WhereIn(projectIds, x => x.Id)
|
||||||
|
.ToQueryString();
|
||||||
|
|
||||||
|
Assert.Contains(
|
||||||
|
"ExperimentProjects",
|
||||||
|
sql,
|
||||||
|
StringComparison.OrdinalIgnoreCase);
|
||||||
|
Assert.Contains(" IN (", sql, StringComparison.OrdinalIgnoreCase);
|
||||||
|
Assert.Contains(
|
||||||
|
projectIds[0].ToString(),
|
||||||
|
sql,
|
||||||
|
StringComparison.OrdinalIgnoreCase);
|
||||||
|
Assert.Contains(
|
||||||
|
projectIds[1].ToString(),
|
||||||
|
sql,
|
||||||
|
StringComparison.OrdinalIgnoreCase);
|
||||||
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void MySql_index_names_fit_the_server_identifier_limit()
|
public void MySql_index_names_fit_the_server_identifier_limit()
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user