mirror of
https://github.com/tgstation/tgstation-server.git
synced 2026-08-22 04:27:19 +01:00
Remove the need to call .AsQueryable() on IDatabaseCollection. Remove IAsyncEnumerable support
This commit is contained in:
@@ -208,7 +208,7 @@ namespace Tgstation.Server.Host.Authority
|
||||
using (systemIdentity)
|
||||
{
|
||||
// Get the user from the database
|
||||
IQueryable<User> query = DatabaseContext.Users.AsQueryable();
|
||||
IQueryable<User> query = DatabaseContext.Users;
|
||||
if (oAuthLogin)
|
||||
{
|
||||
var oAuthProvider = headers.OAuthProvider!.Value;
|
||||
|
||||
@@ -118,13 +118,11 @@ namespace Tgstation.Server.Host.Authority
|
||||
|
||||
var groupIdQuery = DatabaseContext
|
||||
.Users
|
||||
.AsQueryable()
|
||||
.Where(user => user.Id == userId)
|
||||
.Select(user => user.GroupId);
|
||||
|
||||
var permissionSetId = await DatabaseContext
|
||||
.PermissionSets
|
||||
.AsQueryable()
|
||||
.Where(permissionSet => permissionSet.UserId == userId
|
||||
|| groupIdQuery.Contains(permissionSet.GroupId))
|
||||
.Select(permissionSet => permissionSet.Id!.Value)
|
||||
|
||||
@@ -107,7 +107,6 @@ namespace Tgstation.Server.Host.Authority
|
||||
|
||||
return databaseContext
|
||||
.Users
|
||||
.AsQueryable()
|
||||
.Where(x => ids.Contains(x.Id!.Value))
|
||||
.ToDictionaryAsync(user => user.Id!.Value, cancellationToken);
|
||||
}
|
||||
@@ -130,7 +129,6 @@ namespace Tgstation.Server.Host.Authority
|
||||
|
||||
var list = await databaseContext
|
||||
.OAuthConnections
|
||||
.AsQueryable()
|
||||
.Where(x => userIds.Contains(x.User!.Id!.Value))
|
||||
.ToListAsync(cancellationToken);
|
||||
|
||||
@@ -161,7 +159,6 @@ namespace Tgstation.Server.Host.Authority
|
||||
|
||||
var list = await databaseContext
|
||||
.OidcConnections
|
||||
.AsQueryable()
|
||||
.Where(x => userIds.Contains(x.User!.Id!.Value))
|
||||
.ToListAsync(cancellationToken);
|
||||
|
||||
@@ -371,7 +368,6 @@ namespace Tgstation.Server.Host.Authority
|
||||
|
||||
var totalUsers = await DatabaseContext
|
||||
.Users
|
||||
.AsQueryable()
|
||||
.CountAsync(cancellationToken);
|
||||
if (totalUsers >= generalConfigurationOptions.Value.UserLimit)
|
||||
return Conflict<UpdatedUser>(ErrorCode.UserLimitReached);
|
||||
@@ -473,7 +469,6 @@ namespace Tgstation.Server.Host.Authority
|
||||
|
||||
var userQuery = DatabaseContext
|
||||
.Users
|
||||
.AsQueryable()
|
||||
.Where(x => x.Id == model.Id)
|
||||
.Include(x => x.CreatedBy)
|
||||
.Include(x => x.OAuthConnections)
|
||||
@@ -574,7 +569,6 @@ namespace Tgstation.Server.Host.Authority
|
||||
|
||||
originalUser.Group = await DatabaseContext
|
||||
.Groups
|
||||
.AsQueryable()
|
||||
.Where(x => x.Id == model.Group.Id)
|
||||
.Include(x => x.PermissionSet)
|
||||
.FirstOrDefaultAsync(cancellationToken);
|
||||
@@ -759,9 +753,8 @@ namespace Tgstation.Server.Host.Authority
|
||||
IQueryable<User> Queryable(bool includeJoins, bool allowSystemUser)
|
||||
{
|
||||
var tgsUserCanonicalName = User.CanonicalizeName(User.TgsSystemUserName);
|
||||
var queryable = DatabaseContext
|
||||
.Users
|
||||
.AsQueryable();
|
||||
IQueryable<User> queryable = DatabaseContext
|
||||
.Users;
|
||||
|
||||
if (!allowSystemUser)
|
||||
queryable = queryable
|
||||
@@ -792,7 +785,6 @@ namespace Tgstation.Server.Host.Authority
|
||||
if (model.Group != null)
|
||||
group = await DatabaseContext
|
||||
.Groups
|
||||
.AsQueryable()
|
||||
.Where(x => x.Id == model.Group.Id)
|
||||
.Include(x => x.PermissionSet)
|
||||
.FirstOrDefaultAsync(cancellationToken);
|
||||
|
||||
@@ -121,7 +121,6 @@ namespace Tgstation.Server.Host.Authority
|
||||
var userId = claimsPrincipalAccessor.User.GetTgsUserId();
|
||||
var group = await DatabaseContext
|
||||
.Users
|
||||
.AsQueryable()
|
||||
.Where(user => user.Id == userId)
|
||||
.Select(user => user.Group)
|
||||
.FirstOrDefaultAsync(cancellationToken);
|
||||
@@ -148,7 +147,6 @@ namespace Tgstation.Server.Host.Authority
|
||||
{
|
||||
var totalGroups = await DatabaseContext
|
||||
.Groups
|
||||
.AsQueryable()
|
||||
.CountAsync(cancellationToken);
|
||||
if (totalGroups >= generalConfigurationOptions.Value.UserGroupLimit)
|
||||
return Conflict<UserGroup>(ErrorCode.UserGroupLimitReached);
|
||||
@@ -183,7 +181,6 @@ namespace Tgstation.Server.Host.Authority
|
||||
{
|
||||
var currentGroup = await DatabaseContext
|
||||
.Groups
|
||||
.AsQueryable()
|
||||
.Where(x => x.Id == id)
|
||||
.Include(x => x.PermissionSet)
|
||||
.FirstOrDefaultAsync(cancellationToken);
|
||||
@@ -212,7 +209,6 @@ namespace Tgstation.Server.Host.Authority
|
||||
{
|
||||
var numDeleted = await DatabaseContext
|
||||
.Groups
|
||||
.AsQueryable()
|
||||
.Where(x => x.Id == id && x.Users!.Count == 0)
|
||||
.ExecuteDeleteAsync(cancellationToken);
|
||||
|
||||
@@ -222,7 +218,6 @@ namespace Tgstation.Server.Host.Authority
|
||||
// find out how we failed
|
||||
var groupExists = await DatabaseContext
|
||||
.Groups
|
||||
.AsQueryable()
|
||||
.Where(x => x.Id == id)
|
||||
.AnyAsync(cancellationToken);
|
||||
|
||||
@@ -242,9 +237,8 @@ namespace Tgstation.Server.Host.Authority
|
||||
/// <returns>An <see cref="IQueryable{T}"/> of <see cref="UserGroup"/>s.</returns>
|
||||
IQueryable<UserGroup> QueryableImpl(bool includeJoins)
|
||||
{
|
||||
var queryable = DatabaseContext
|
||||
.Groups
|
||||
.AsQueryable();
|
||||
IQueryable<UserGroup> queryable = DatabaseContext
|
||||
.Groups;
|
||||
|
||||
if (includeJoins)
|
||||
queryable = queryable
|
||||
|
||||
@@ -116,7 +116,6 @@ namespace Tgstation.Server.Host.Components.Chat.Commands
|
||||
await databaseContextFactory.UseContext(
|
||||
async db => results = await db
|
||||
.RevisionInformations
|
||||
.AsQueryable()
|
||||
.Where(x => x.Instance!.Id == instance.Id && x.CommitSha == head)
|
||||
.SelectMany(x => x.ActiveTestMerges!)
|
||||
.Select(x => x.TestMerge)
|
||||
|
||||
@@ -207,7 +207,6 @@ namespace Tgstation.Server.Host.Components.Deployment
|
||||
async (db) =>
|
||||
cj = await db
|
||||
.CompileJobs
|
||||
.AsQueryable()
|
||||
.Where(x => x.Job.Instance!.Id == metadata.Id)
|
||||
.OrderByDescending(x => x.Job.StoppedAt)
|
||||
.FirstOrDefaultAsync(cancellationToken));
|
||||
@@ -277,7 +276,6 @@ namespace Tgstation.Server.Host.Components.Deployment
|
||||
{
|
||||
jobUidsToNotErase = (await db
|
||||
.CompileJobs
|
||||
.AsQueryable()
|
||||
.Where(
|
||||
x => x.Job.Instance!.Id == metadata.Id
|
||||
&& jobIdsToSkip.Contains(x.Id!.Value))
|
||||
@@ -364,7 +362,6 @@ namespace Tgstation.Server.Host.Components.Deployment
|
||||
await databaseContextFactory.UseContext(
|
||||
async db => compileJob = await db
|
||||
.CompileJobs
|
||||
.AsQueryable()
|
||||
.Where(x => x!.Id == compileJobId)
|
||||
.Include(x => x.Job!)
|
||||
.ThenInclude(x => x.StartedBy)
|
||||
|
||||
@@ -253,7 +253,6 @@ namespace Tgstation.Server.Host.Components.Deployment
|
||||
|
||||
ddSettings = await databaseContext
|
||||
.DreamDaemonSettings
|
||||
.AsQueryable()
|
||||
.Where(x => x.InstanceId == metadata.Id)
|
||||
.Select(x => new Models.DreamDaemonSettings
|
||||
{
|
||||
@@ -266,7 +265,6 @@ namespace Tgstation.Server.Host.Components.Deployment
|
||||
|
||||
dreamMakerSettings = await databaseContext
|
||||
.DreamMakerSettings
|
||||
.AsQueryable()
|
||||
.Where(x => x.InstanceId == metadata.Id)
|
||||
.FirstAsync(cancellationToken);
|
||||
if (dreamMakerSettings == default)
|
||||
@@ -274,7 +272,6 @@ namespace Tgstation.Server.Host.Components.Deployment
|
||||
|
||||
repositorySettings = await databaseContext
|
||||
.RepositorySettings
|
||||
.AsQueryable()
|
||||
.Where(x => x.InstanceId == metadata.Id)
|
||||
.Select(x => new Models.RepositorySettings
|
||||
{
|
||||
@@ -302,7 +299,6 @@ namespace Tgstation.Server.Host.Components.Deployment
|
||||
repoName = repo.RemoteRepositoryName;
|
||||
revInfo = await databaseContext
|
||||
.RevisionInformations
|
||||
.AsQueryable()
|
||||
.Where(x => x.CommitSha == repoSha && x.InstanceId == metadata.Id)
|
||||
.Include(x => x.ActiveTestMerges!)
|
||||
.ThenInclude(x => x.TestMerge!)
|
||||
@@ -456,7 +452,6 @@ namespace Tgstation.Server.Host.Components.Deployment
|
||||
{
|
||||
var previousCompileJobs = await databaseContext
|
||||
.CompileJobs
|
||||
.AsQueryable()
|
||||
.Where(x => x.Job.Instance!.Id == metadata.Id)
|
||||
.OrderByDescending(x => x.Job.StoppedAt)
|
||||
.Take(10)
|
||||
|
||||
-2
@@ -70,7 +70,6 @@ namespace Tgstation.Server.Host.Components.Deployment.Remote
|
||||
async databaseContext =>
|
||||
repositorySettings = await databaseContext
|
||||
.RepositorySettings
|
||||
.AsQueryable()
|
||||
.Where(x => x.InstanceId == Metadata.Id)
|
||||
.FirstAsync(cancellationToken));
|
||||
|
||||
@@ -376,7 +375,6 @@ namespace Tgstation.Server.Host.Components.Deployment.Remote
|
||||
async databaseContext =>
|
||||
gitHubAccessToken = await databaseContext
|
||||
.RepositorySettings
|
||||
.AsQueryable()
|
||||
.Where(x => x.InstanceId == Metadata.Id)
|
||||
.Select(x => x.AccessToken)
|
||||
.FirstAsync(cancellationToken));
|
||||
|
||||
@@ -389,7 +389,6 @@ namespace Tgstation.Server.Host.Components
|
||||
// assume 5 steps with synchronize
|
||||
var repositorySettingsTask = databaseContext
|
||||
.RepositorySettings
|
||||
.AsQueryable()
|
||||
.Where(x => x.InstanceId == metadata.Id)
|
||||
.FirstAsync(cancellationToken);
|
||||
|
||||
@@ -433,7 +432,6 @@ namespace Tgstation.Server.Host.Components
|
||||
logger.LogTrace("Loading revision info for commit {sha}...", startSha[..7]);
|
||||
currentRevInfo = await databaseContext
|
||||
.RevisionInformations
|
||||
.AsQueryable()
|
||||
.Where(x => x.CommitSha == startSha && x.InstanceId == metadata.Id)
|
||||
.Include(x => x.ActiveTestMerges!)
|
||||
.ThenInclude(x => x.TestMerge)
|
||||
@@ -550,8 +548,8 @@ namespace Tgstation.Server.Host.Components
|
||||
|
||||
var currentHead = repo.Head;
|
||||
|
||||
currentRevInfo = await databaseContext.RevisionInformations
|
||||
.AsQueryable()
|
||||
currentRevInfo = await databaseContext
|
||||
.RevisionInformations
|
||||
.Where(x => x.CommitSha == currentHead && x.InstanceId == metadata.Id)
|
||||
.FirstOrDefaultAsync(cancellationToken);
|
||||
|
||||
|
||||
@@ -387,7 +387,6 @@ namespace Tgstation.Server.Host.Components
|
||||
{
|
||||
var jobs = await db
|
||||
.Jobs
|
||||
.AsQueryable()
|
||||
.Where(x => x.Instance!.Id == metadata.Id && !x.StoppedAt.HasValue)
|
||||
.Select(x => new Job(x.Id!.Value))
|
||||
.ToListAsync(cancellationToken);
|
||||
@@ -638,7 +637,6 @@ namespace Tgstation.Server.Host.Components
|
||||
async ValueTask EnumerateInstances(IDatabaseContext databaseContext)
|
||||
=> dbInstances = await databaseContext
|
||||
.Instances
|
||||
.AsQueryable()
|
||||
.Where(x => x.Online!.Value && x.SwarmIdentifer == swarmConfiguration.Identifier)
|
||||
.Include(x => x.RepositorySettings)
|
||||
.Include(x => x.ChatSettings)
|
||||
|
||||
@@ -90,7 +90,10 @@ namespace Tgstation.Server.Host.Components.Repository
|
||||
.ThenInclude(x => x.TestMerge)
|
||||
.ThenInclude(x => x.MergedBy);
|
||||
|
||||
var revisionInfo = await ApplyQuery(databaseContext.RevisionInformations).FirstOrDefaultAsync(cancellationToken);
|
||||
var revisionInfo = await ApplyQuery(
|
||||
databaseContext
|
||||
.RevisionInformations)
|
||||
.FirstOrDefaultAsync(cancellationToken);
|
||||
|
||||
// If the DB doesn't have it, check the local set
|
||||
if (revisionInfo == default)
|
||||
@@ -400,8 +403,8 @@ namespace Tgstation.Server.Host.Components.Repository
|
||||
|
||||
await databaseContextFactory.UseContext(
|
||||
async databaseContext =>
|
||||
dbPull = await databaseContext.RevisionInformations
|
||||
.AsQueryable()
|
||||
dbPull = await databaseContext
|
||||
.RevisionInformations
|
||||
.Where(x => x.InstanceId == instanceId
|
||||
&& x.OriginCommitSha == lastRevisionInfo.OriginCommitSha
|
||||
&& x.ActiveTestMerges!.Count <= newTestMergeModels.Count
|
||||
|
||||
@@ -158,7 +158,6 @@ namespace Tgstation.Server.Host.Components.Session
|
||||
{
|
||||
var dbReattachInfos = await db
|
||||
.ReattachInformations
|
||||
.AsQueryable()
|
||||
.Where(x => x.CompileJob!.Job.Instance!.Id == metadata.Id)
|
||||
.Include(x => x.CompileJob)
|
||||
.Include(x => x.InitialCompileJob)
|
||||
@@ -169,7 +168,6 @@ namespace Tgstation.Server.Host.Components.Session
|
||||
|
||||
var timeoutMilliseconds = await db
|
||||
.Instances
|
||||
.AsQueryable()
|
||||
.Where(x => x.Id == metadata.Id)
|
||||
.Select(x => x.DreamDaemonSettings!.TopicRequestTimeout)
|
||||
.FirstOrDefaultAsync(cancellationToken);
|
||||
@@ -217,7 +215,6 @@ namespace Tgstation.Server.Host.Components.Session
|
||||
logger.LogTrace("Deleting ReattachInformation {id}...", result.Id);
|
||||
await db
|
||||
.ReattachInformations
|
||||
.AsQueryable()
|
||||
.Where(x => x.Id == result.Id)
|
||||
.ExecuteDeleteAsync(cancellationToken);
|
||||
});
|
||||
@@ -264,7 +261,6 @@ namespace Tgstation.Server.Host.Components.Session
|
||||
{
|
||||
var baseQuery = databaseContext
|
||||
.ReattachInformations
|
||||
.AsQueryable()
|
||||
.Where(x => x.CompileJob!.Job.Instance!.Id == metadata.Id);
|
||||
|
||||
if (instant)
|
||||
|
||||
@@ -160,7 +160,6 @@ namespace Tgstation.Server.Host.Controllers
|
||||
instance.Chat.DeleteConnection(id, cancellationToken),
|
||||
DatabaseContext
|
||||
.ChatBots
|
||||
.AsQueryable()
|
||||
.Where(x => x.Id == id)
|
||||
.ExecuteDeleteAsync(cancellationToken));
|
||||
return null;
|
||||
@@ -187,7 +186,6 @@ namespace Tgstation.Server.Host.Controllers
|
||||
new PaginatableResult<ChatBot>(
|
||||
DatabaseContext
|
||||
.ChatBots
|
||||
.AsQueryable()
|
||||
.Where(x => x.InstanceId == Instance.Id)
|
||||
.Include(x => x.Channels)
|
||||
.OrderBy(x => x.Id))),
|
||||
@@ -217,8 +215,8 @@ namespace Tgstation.Server.Host.Controllers
|
||||
[ProducesResponseType(typeof(ErrorMessageResponse), 410)]
|
||||
public async ValueTask<IActionResult> GetId(long id, CancellationToken cancellationToken)
|
||||
{
|
||||
var query = DatabaseContext.ChatBots
|
||||
.AsQueryable()
|
||||
var query = DatabaseContext
|
||||
.ChatBots
|
||||
.Where(x => x.Id == id && x.InstanceId == Instance.Id)
|
||||
.Include(x => x.Channels);
|
||||
|
||||
@@ -260,7 +258,6 @@ namespace Tgstation.Server.Host.Controllers
|
||||
|
||||
var query = DatabaseContext
|
||||
.ChatBots
|
||||
.AsQueryable()
|
||||
.Where(x => x.InstanceId == Instance.Id && x.Id == model.Id)
|
||||
.Include(x => x.Channels);
|
||||
|
||||
|
||||
@@ -165,7 +165,6 @@ namespace Tgstation.Server.Host.Controllers
|
||||
// alias for changing DD settings
|
||||
var current = await DatabaseContext
|
||||
.Instances
|
||||
.AsQueryable()
|
||||
.Where(x => x.Id == Instance.Id)
|
||||
.Select(x => x.DreamDaemonSettings)
|
||||
.FirstOrDefaultAsync(cancellationToken);
|
||||
@@ -330,7 +329,6 @@ namespace Tgstation.Server.Host.Controllers
|
||||
{
|
||||
settings = await DatabaseContext
|
||||
.Instances
|
||||
.AsQueryable()
|
||||
.Where(x => x.Id == Instance.Id)
|
||||
.Select(x => x.DreamDaemonSettings!)
|
||||
.FirstOrDefaultAsync(cancellationToken);
|
||||
|
||||
@@ -81,7 +81,6 @@ namespace Tgstation.Server.Host.Controllers
|
||||
{
|
||||
var dreamMakerSettings = await DatabaseContext
|
||||
.DreamMakerSettings
|
||||
.AsQueryable()
|
||||
.Where(x => x.InstanceId == Instance.Id)
|
||||
.FirstOrDefaultAsync(cancellationToken);
|
||||
|
||||
@@ -186,7 +185,6 @@ namespace Tgstation.Server.Host.Controllers
|
||||
|
||||
var hostModel = await DatabaseContext
|
||||
.DreamMakerSettings
|
||||
.AsQueryable()
|
||||
.Where(x => x.InstanceId == Instance.Id)
|
||||
.FirstOrDefaultAsync(cancellationToken);
|
||||
if (hostModel == null)
|
||||
@@ -295,7 +293,6 @@ namespace Tgstation.Server.Host.Controllers
|
||||
/// <returns>An <see cref="IQueryable{T}"/> of <see cref="CompileJob"/> with all the inclusions.</returns>
|
||||
IQueryable<CompileJob> BaseCompileJobsQuery() => DatabaseContext
|
||||
.CompileJobs
|
||||
.AsQueryable()
|
||||
.Include(x => x.Job!)
|
||||
.ThenInclude(x => x.StartedBy)
|
||||
.Include(x => x.Job!)
|
||||
|
||||
@@ -161,7 +161,6 @@ namespace Tgstation.Server.Host.Controllers
|
||||
// Validate it's not a child of any other instance
|
||||
var instancePaths = await DatabaseContext
|
||||
.Instances
|
||||
.AsQueryable()
|
||||
.Where(x => x.SwarmIdentifer == swarmConfiguration.Identifier)
|
||||
.Select(x => new Models.Instance
|
||||
{
|
||||
@@ -278,7 +277,6 @@ namespace Tgstation.Server.Host.Controllers
|
||||
{
|
||||
var originalModel = await DatabaseContext
|
||||
.Instances
|
||||
.AsQueryable()
|
||||
.Where(x => x.Id == id && x.SwarmIdentifer == swarmConfiguration.Identifier)
|
||||
.FirstOrDefaultAsync(cancellationToken);
|
||||
if (originalModel == default)
|
||||
@@ -306,17 +304,14 @@ namespace Tgstation.Server.Host.Controllers
|
||||
// there's a bug where removing the root instance doesn't work sometimes
|
||||
await DatabaseContext
|
||||
.CompileJobs
|
||||
.AsQueryable()
|
||||
.Where(x => x.Job!.Instance!.Id == id)
|
||||
.ExecuteDeleteAsync(cancellationToken);
|
||||
await DatabaseContext
|
||||
.RevInfoTestMerges
|
||||
.AsQueryable()
|
||||
.Where(x => x.RevisionInformation.InstanceId == id)
|
||||
.ExecuteDeleteAsync(cancellationToken);
|
||||
await DatabaseContext
|
||||
.RevisionInformations
|
||||
.AsQueryable()
|
||||
.Where(x => x.InstanceId == id)
|
||||
.ExecuteDeleteAsync(cancellationToken);
|
||||
|
||||
@@ -361,7 +356,6 @@ namespace Tgstation.Server.Host.Controllers
|
||||
|
||||
IQueryable<Models.Instance> InstanceQuery() => DatabaseContext
|
||||
.Instances
|
||||
.AsQueryable()
|
||||
.Where(x => x.Id == model.Id && x.SwarmIdentifer == swarmConfiguration.Identifier);
|
||||
|
||||
var moveJob = await InstanceQuery()
|
||||
@@ -460,7 +454,6 @@ namespace Tgstation.Server.Host.Controllers
|
||||
{
|
||||
var countOfExistingChatBots = await DatabaseContext
|
||||
.ChatBots
|
||||
.AsQueryable()
|
||||
.Where(x => x.InstanceId == originalModel.Id)
|
||||
.CountAsync(cancellationToken);
|
||||
|
||||
@@ -585,7 +578,6 @@ namespace Tgstation.Server.Host.Controllers
|
||||
{
|
||||
var query = DatabaseContext
|
||||
.Instances
|
||||
.AsQueryable()
|
||||
.Where(x => x.SwarmIdentifer == swarmConfiguration.Identifier);
|
||||
if (!AuthenticationContext.PermissionSet.InstanceManagerRights!.Value.HasFlag(InstanceManagerRights.List))
|
||||
query = query
|
||||
@@ -651,7 +643,6 @@ namespace Tgstation.Server.Host.Controllers
|
||||
{
|
||||
var query = DatabaseContext
|
||||
.Instances
|
||||
.AsQueryable()
|
||||
.Where(x => x.Id == id && x.SwarmIdentifer == swarmConfiguration.Identifier);
|
||||
|
||||
if (cantList)
|
||||
@@ -706,7 +697,6 @@ namespace Tgstation.Server.Host.Controllers
|
||||
{
|
||||
IQueryable<Models.Instance> BaseQuery() => DatabaseContext
|
||||
.Instances
|
||||
.AsQueryable()
|
||||
.Where(x => x.Id == id && x.SwarmIdentifer == swarmConfiguration.Identifier);
|
||||
|
||||
// ensure the current user has write privilege on the instance
|
||||
@@ -871,7 +861,6 @@ namespace Tgstation.Server.Host.Controllers
|
||||
{
|
||||
instanceResponse.Accessible = await DatabaseContext
|
||||
.InstancePermissionSets
|
||||
.AsQueryable()
|
||||
.Where(x => x.InstanceId == instanceResponse.Id && x.PermissionSetId == AuthenticationContext.PermissionSet.Id)
|
||||
.AnyAsync(cancellationToken);
|
||||
}
|
||||
|
||||
@@ -78,7 +78,6 @@ namespace Tgstation.Server.Host.Controllers
|
||||
|
||||
var existingPermissionSet = await DatabaseContext
|
||||
.PermissionSets
|
||||
.AsQueryable()
|
||||
.Where(x => x.Id == model.PermissionSetId)
|
||||
.Select(x => new Models.PermissionSet
|
||||
{
|
||||
@@ -94,7 +93,6 @@ namespace Tgstation.Server.Host.Controllers
|
||||
{
|
||||
var userCanonicalName = await DatabaseContext
|
||||
.Users
|
||||
.AsQueryable()
|
||||
.Where(x => x.Id == existingPermissionSet.UserId.Value)
|
||||
.Select(x => x.CanonicalName)
|
||||
.FirstAsync(cancellationToken);
|
||||
@@ -146,7 +144,6 @@ namespace Tgstation.Server.Host.Controllers
|
||||
|
||||
var originalPermissionSet = await DatabaseContext
|
||||
.Instances
|
||||
.AsQueryable()
|
||||
.Where(x => x.Id == Instance.Id)
|
||||
.SelectMany(x => x.InstancePermissionSets)
|
||||
.Where(x => x.PermissionSetId == model.PermissionSetId)
|
||||
@@ -201,7 +198,6 @@ namespace Tgstation.Server.Host.Controllers
|
||||
new PaginatableResult<InstancePermissionSet>(
|
||||
DatabaseContext
|
||||
.Instances
|
||||
.AsQueryable()
|
||||
.Where(x => x.Id == Instance.Id)
|
||||
.SelectMany(x => x.InstancePermissionSets)
|
||||
.OrderBy(x => x.PermissionSetId))),
|
||||
@@ -227,7 +223,6 @@ namespace Tgstation.Server.Host.Controllers
|
||||
// this functions as userId
|
||||
var permissionSet = await DatabaseContext
|
||||
.Instances
|
||||
.AsQueryable()
|
||||
.Where(x => x.Id == Instance.Id)
|
||||
.SelectMany(x => x.InstancePermissionSets)
|
||||
.Where(x => x.PermissionSetId == id)
|
||||
@@ -253,7 +248,6 @@ namespace Tgstation.Server.Host.Controllers
|
||||
{
|
||||
var numDeleted = await DatabaseContext
|
||||
.Instances
|
||||
.AsQueryable()
|
||||
.Where(x => x.Id == Instance.Id)
|
||||
.SelectMany(x => x.InstancePermissionSets)
|
||||
.Where(x => x.PermissionSetId == id)
|
||||
|
||||
@@ -75,7 +75,6 @@ namespace Tgstation.Server.Host.Controllers
|
||||
new PaginatableResult<Job>(
|
||||
DatabaseContext
|
||||
.Jobs
|
||||
.AsQueryable()
|
||||
.Include(x => x.StartedBy)
|
||||
.Include(x => x.CancelledBy)
|
||||
.Include(x => x.Instance)
|
||||
@@ -103,7 +102,6 @@ namespace Tgstation.Server.Host.Controllers
|
||||
new PaginatableResult<Job>(
|
||||
DatabaseContext
|
||||
.Jobs
|
||||
.AsQueryable()
|
||||
.Include(x => x.StartedBy)
|
||||
.Include(x => x.CancelledBy)
|
||||
.Include(x => x.Instance)
|
||||
@@ -132,7 +130,6 @@ namespace Tgstation.Server.Host.Controllers
|
||||
// don't care if an instance post or not at this point
|
||||
var job = await DatabaseContext
|
||||
.Jobs
|
||||
.AsQueryable()
|
||||
.Include(x => x.StartedBy)
|
||||
.Include(x => x.Instance)
|
||||
.Where(x => x.Id == id && x.Instance!.Id == Instance.Id)
|
||||
@@ -166,7 +163,6 @@ namespace Tgstation.Server.Host.Controllers
|
||||
{
|
||||
var job = await DatabaseContext
|
||||
.Jobs
|
||||
.AsQueryable()
|
||||
.Where(x => x.Id == id && x.Instance!.Id == Instance.Id)
|
||||
.Include(x => x.StartedBy)
|
||||
.Include(x => x.CancelledBy)
|
||||
|
||||
@@ -122,7 +122,6 @@ namespace Tgstation.Server.Host.Controllers
|
||||
|
||||
var currentModel = await DatabaseContext
|
||||
.RepositorySettings
|
||||
.AsQueryable()
|
||||
.Where(x => x.InstanceId == Instance.Id)
|
||||
.FirstOrDefaultAsync(cancellationToken);
|
||||
|
||||
@@ -225,7 +224,6 @@ namespace Tgstation.Server.Host.Controllers
|
||||
{
|
||||
var currentModel = await DatabaseContext
|
||||
.RepositorySettings
|
||||
.AsQueryable()
|
||||
.Where(x => x.InstanceId == Instance.Id)
|
||||
.FirstOrDefaultAsync(cancellationToken);
|
||||
|
||||
@@ -264,7 +262,6 @@ namespace Tgstation.Server.Host.Controllers
|
||||
{
|
||||
var currentModel = await DatabaseContext
|
||||
.RepositorySettings
|
||||
.AsQueryable()
|
||||
.Where(x => x.InstanceId == Instance.Id)
|
||||
.FirstOrDefaultAsync(cancellationToken);
|
||||
|
||||
@@ -302,7 +299,6 @@ namespace Tgstation.Server.Host.Controllers
|
||||
{
|
||||
var currentModel = await DatabaseContext
|
||||
.RepositorySettings
|
||||
.AsQueryable()
|
||||
.Where(x => x.InstanceId == Instance.Id)
|
||||
.FirstOrDefaultAsync(cancellationToken);
|
||||
|
||||
@@ -388,7 +384,6 @@ namespace Tgstation.Server.Host.Controllers
|
||||
|
||||
var currentModel = await DatabaseContext
|
||||
.RepositorySettings
|
||||
.AsQueryable()
|
||||
.Where(x => x.InstanceId == Instance.Id)
|
||||
.FirstOrDefaultAsync(cancellationToken);
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@ using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
using System.Threading;
|
||||
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
@@ -48,9 +47,6 @@ namespace Tgstation.Server.Host.Database
|
||||
/// <inheritdoc />
|
||||
public void Attach(TModel model) => dbSet.Attach(model);
|
||||
|
||||
/// <inheritdoc />
|
||||
public IAsyncEnumerator<TModel> GetAsyncEnumerator(CancellationToken cancellationToken = default) => dbSet.AsAsyncEnumerable().GetAsyncEnumerator(cancellationToken);
|
||||
|
||||
/// <inheritdoc />
|
||||
public IEnumerator<TModel> GetEnumerator() => dbSet.AsQueryable().GetEnumerator();
|
||||
|
||||
|
||||
@@ -216,7 +216,6 @@ namespace Tgstation.Server.Host.Database
|
||||
{
|
||||
var tgsUser = await databaseContext
|
||||
.Users
|
||||
.AsQueryable()
|
||||
.Where(x => x.CanonicalName == User.CanonicalizeName(User.TgsSystemUserName))
|
||||
.FirstOrDefaultAsync(cancellationToken);
|
||||
|
||||
@@ -232,7 +231,6 @@ namespace Tgstation.Server.Host.Database
|
||||
// normalize backslashes to forward slashes
|
||||
var allInstances = await databaseContext
|
||||
.Instances
|
||||
.AsQueryable()
|
||||
.Where(instance => instance.SwarmIdentifer == swarmConfiguration.Identifier)
|
||||
.ToListAsync(cancellationToken);
|
||||
foreach (var instance in allInstances)
|
||||
@@ -242,7 +240,6 @@ namespace Tgstation.Server.Host.Database
|
||||
{
|
||||
var ids = await databaseContext
|
||||
.DreamDaemonSettings
|
||||
.AsQueryable()
|
||||
.Where(x => x.TopicRequestTimeout == 0)
|
||||
.Select(x => x.Id)
|
||||
.ToListAsync(cancellationToken);
|
||||
@@ -311,7 +308,6 @@ namespace Tgstation.Server.Host.Database
|
||||
{
|
||||
var admin = await databaseContext
|
||||
.Users
|
||||
.AsQueryable()
|
||||
.Where(x => x.CanonicalName == User.CanonicalizeName(DefaultCredentials.AdminUserName))
|
||||
.Include(x => x.CreatedBy)
|
||||
.Include(x => x.PermissionSet)
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace Tgstation.Server.Host.Database
|
||||
/// Represents a database table.
|
||||
/// </summary>
|
||||
/// <typeparam name="TModel">The type of model.</typeparam>
|
||||
public interface IDatabaseCollection<TModel> : IQueryable<TModel>, IAsyncEnumerable<TModel>
|
||||
public interface IDatabaseCollection<TModel> : IQueryable<TModel>
|
||||
{
|
||||
/// <summary>
|
||||
/// An <see cref="IEnumerable{T}"/> of <typeparamref name="TModel"/>s prioritizing in the working set.
|
||||
|
||||
@@ -33,7 +33,6 @@ namespace Tgstation.Server.Host.Extensions
|
||||
ArgumentNullException.ThrowIfNull(selector);
|
||||
|
||||
return databaseCollection
|
||||
.AsQueryable()
|
||||
.Where(x => x.CanonicalName == User.CanonicalizeName(User.TgsSystemUserName))
|
||||
.Select(selector)
|
||||
.FirstAsync(cancellationToken);
|
||||
|
||||
@@ -213,7 +213,6 @@ namespace Tgstation.Server.Host.Jobs
|
||||
// mark all jobs as cancelled
|
||||
var badJobIds = await databaseContext
|
||||
.Jobs
|
||||
.AsQueryable()
|
||||
.Where(y => !y.StoppedAt.HasValue)
|
||||
.Select(y => y.Id!.Value)
|
||||
.ToListAsync(cancellationToken);
|
||||
@@ -535,7 +534,6 @@ namespace Tgstation.Server.Host.Jobs
|
||||
// DCT: Cancellation token is for job, operation should always run
|
||||
var finalJob = await databaseContext
|
||||
.Jobs
|
||||
.AsQueryable()
|
||||
.Include(x => x.Instance)
|
||||
.Include(x => x.StartedBy)
|
||||
.Include(x => x.CancelledBy)
|
||||
|
||||
@@ -128,7 +128,6 @@ namespace Tgstation.Server.Host.Jobs
|
||||
async databaseContext =>
|
||||
permedInstanceIds = await databaseContext
|
||||
.InstancePermissionSets
|
||||
.AsQueryable()
|
||||
.Where(ips => ips.PermissionSetId == pid)
|
||||
.Select(ips => ips.InstanceId)
|
||||
.ToListAsync(cancellationToken));
|
||||
@@ -162,7 +161,6 @@ namespace Tgstation.Server.Host.Jobs
|
||||
.ToListAsync(cancellationToken);
|
||||
var permissionSetAccessibleInstanceIds = await databaseContext
|
||||
.InstancePermissionSets
|
||||
.AsQueryable()
|
||||
.Where(ips => ips.PermissionSetId == permissionSetId)
|
||||
.Select(ips => ips.InstanceId)
|
||||
.ToListAsync(cancellationToken);
|
||||
|
||||
@@ -129,7 +129,6 @@ namespace Tgstation.Server.Host.Security
|
||||
|
||||
var user = await databaseContext
|
||||
.Users
|
||||
.AsQueryable()
|
||||
.Where(x => x.Id == userId)
|
||||
.Include(x => x.CreatedBy)
|
||||
.Include(x => x.PermissionSet)
|
||||
@@ -164,8 +163,8 @@ namespace Tgstation.Server.Host.Security
|
||||
var instanceId = apiHeaders?.InstanceId;
|
||||
if (instanceId.HasValue)
|
||||
{
|
||||
instancePermissionSet = await databaseContext.InstancePermissionSets
|
||||
.AsQueryable()
|
||||
instancePermissionSet = await databaseContext
|
||||
.InstancePermissionSets
|
||||
.Where(x => x.PermissionSetId == userPermissionSet!.Id && x.InstanceId == instanceId && x.Instance!.SwarmIdentifer == swarmConfiguration.Identifier)
|
||||
.Include(x => x.Instance)
|
||||
.FirstOrDefaultAsync(cancellationToken);
|
||||
@@ -208,7 +207,6 @@ namespace Tgstation.Server.Host.Security
|
||||
var deprefixedScheme = scheme.Substring(OpenIDConnectAuthenticationSchemePrefix.Length);
|
||||
var connection = await databaseContext
|
||||
.OidcConnections
|
||||
.AsQueryable()
|
||||
.Where(oidcConnection => oidcConnection.ExternalUserId == userId && oidcConnection.SchemeKey == deprefixedScheme)
|
||||
.Include(oidcConnection => oidcConnection.User)
|
||||
.ThenInclude(user => user!.Group)
|
||||
@@ -243,7 +241,6 @@ namespace Tgstation.Server.Host.Security
|
||||
UserGroup? group = groupId.HasValue
|
||||
? await databaseContext
|
||||
.Groups
|
||||
.AsQueryable()
|
||||
.Where(group => group.Id == groupId.Value)
|
||||
.Include(group => group.PermissionSet)
|
||||
.FirstOrDefaultAsync(cancellationToken)
|
||||
|
||||
@@ -106,7 +106,6 @@ namespace Tgstation.Server.Host.Security
|
||||
{
|
||||
var sessionData = await databaseContext
|
||||
.Users
|
||||
.AsQueryable()
|
||||
.Where(user => user.Id == userId)
|
||||
.Select(user => new
|
||||
{
|
||||
@@ -151,8 +150,7 @@ namespace Tgstation.Server.Host.Security
|
||||
return databaseContextFactory.UseContext(async databaseContext =>
|
||||
{
|
||||
var queryableUsers = databaseContext
|
||||
.Users
|
||||
.AsQueryable();
|
||||
.Users;
|
||||
|
||||
var matchingUniquePermissionSetIds = queryableUsers
|
||||
.Where(user => user.Id == userId && user.PermissionSet != null)
|
||||
@@ -170,7 +168,6 @@ namespace Tgstation.Server.Host.Security
|
||||
|
||||
permissionSet = await databaseContext
|
||||
.InstancePermissionSets
|
||||
.AsQueryable()
|
||||
.Where(ips => ips.InstanceId == instanceId
|
||||
&& (matchingUniquePermissionSetIds.Contains(ips.PermissionSetId) || matchingGroupPermissionSetIds.Contains(ips.PermissionSetId)))
|
||||
.TagWith("rights_authorization_handler_instance_permission_set")
|
||||
@@ -179,7 +176,6 @@ namespace Tgstation.Server.Host.Security
|
||||
else
|
||||
permissionSet = await databaseContext
|
||||
.PermissionSets
|
||||
.AsQueryable()
|
||||
.Where(permissionSet => matchingUniquePermissionSetIds.Contains(permissionSet.Id) || matchingGroupPermissionSetIds.Contains(permissionSet.Id))
|
||||
.TagWith("rights_authorization_handler_permission_set")
|
||||
.FirstOrDefaultAsync(cancellationToken);
|
||||
|
||||
@@ -99,7 +99,6 @@ namespace Tgstation.Server.Host.Utils
|
||||
logger.LogTrace("Port allocation >= {basePort} requested...", basePort);
|
||||
var ddPorts = await databaseContext
|
||||
.DreamDaemonSettings
|
||||
.AsQueryable()
|
||||
.Where(x => x.Instance!.SwarmIdentifer == swarmConfiguration.Identifier)
|
||||
.Select(x => new
|
||||
{
|
||||
@@ -110,7 +109,6 @@ namespace Tgstation.Server.Host.Utils
|
||||
|
||||
var dmPorts = await databaseContext
|
||||
.DreamMakerSettings
|
||||
.AsQueryable()
|
||||
.Where(x => x.Instance!.SwarmIdentifer == swarmConfiguration.Identifier)
|
||||
.Select(x => new
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user