Refactor app architecture and clean local artifacts
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
using Backend.Data;
|
||||
using Backend.Services;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace Backend.Endpoints;
|
||||
|
||||
public static partial class AuthEndpoints
|
||||
{
|
||||
private static async Task<IResult> DeleteMyParticipationData(
|
||||
HttpContext context,
|
||||
AwardsDbContext db,
|
||||
IUserSessionService userSessionService)
|
||||
{
|
||||
var session = await userSessionService.ResolveSessionAsync(context, context.RequestAborted);
|
||||
if (session is null)
|
||||
{
|
||||
return Results.Unauthorized();
|
||||
}
|
||||
|
||||
var twitchUserId = session.TwitchUserId;
|
||||
await using var transaction = await db.Database.BeginTransactionAsync(context.RequestAborted);
|
||||
|
||||
var ballotIds = await db.VoteBallots
|
||||
.Where(item => item.SubmittedByTwitchId == twitchUserId)
|
||||
.Select(item => item.Id)
|
||||
.ToArrayAsync(context.RequestAborted);
|
||||
|
||||
var deletedVoteEntries = ballotIds.Length == 0
|
||||
? 0
|
||||
: await db.VoteEntries
|
||||
.Where(item => ballotIds.Contains(item.BallotId))
|
||||
.ExecuteDeleteAsync(context.RequestAborted);
|
||||
|
||||
var deletedBallots = await db.VoteBallots
|
||||
.Where(item => item.SubmittedByTwitchId == twitchUserId)
|
||||
.ExecuteDeleteAsync(context.RequestAborted);
|
||||
|
||||
var deletedNominations = await db.Nominations
|
||||
.Where(item => item.SubmittedByTwitchId == twitchUserId)
|
||||
.ExecuteDeleteAsync(context.RequestAborted);
|
||||
|
||||
var deletedClips = await db.ClipSubmissions
|
||||
.Where(item => item.SubmittedByTwitchId == twitchUserId)
|
||||
.ExecuteDeleteAsync(context.RequestAborted);
|
||||
|
||||
var deletedRiskFlags = await db.RiskFlags
|
||||
.Where(item => item.TwitchUserId == twitchUserId)
|
||||
.ExecuteDeleteAsync(context.RequestAborted);
|
||||
|
||||
var disabledSessions = await db.UserSessions
|
||||
.Where(item => item.TwitchUserId == twitchUserId)
|
||||
.ExecuteUpdateAsync(
|
||||
setters => setters.SetProperty(item => item.IsActive, false),
|
||||
context.RequestAborted);
|
||||
|
||||
await transaction.CommitAsync(context.RequestAborted);
|
||||
|
||||
return Results.Ok(new
|
||||
{
|
||||
deleted = true,
|
||||
twitchUserId,
|
||||
deletedVoteEntries,
|
||||
deletedBallots,
|
||||
deletedNominations,
|
||||
deletedClips,
|
||||
deletedRiskFlags,
|
||||
disabledSessions,
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user