feat(discovery): add saved job searches

This commit is contained in:
cesnimda
2026-08-31 17:17:48 +02:00
parent 78ad0c66f9
commit c2181afaea
13 changed files with 461 additions and 80 deletions
@@ -152,6 +152,13 @@ public sealed class AccountDataExportService(
Evidence = careerEvidence,
}, (careerProfileId is null ? 0 : 1) + careerVersions.Count + careerExperiences.Count + careerEducation.Count + careerSkills.Count + careerProjects.Count + careerCertifications.Count + careerLanguages.Count + careerEvidence.Count);
var savedSearches = await db.SavedJobSearches.IgnoreQueryFilters().AsNoTracking()
.Where(item => item.OwnerUserId == ownerUserId).OrderBy(item => item.Id).ToListAsync(cancellationToken);
var savedSearchIds = savedSearches.Select(item => item.Id).ToList();
var savedSearchResults = await db.SavedJobSearchResults.IgnoreQueryFilters().AsNoTracking()
.Where(item => savedSearchIds.Contains(item.SavedJobSearchId)).OrderBy(item => item.Id).ToListAsync(cancellationToken);
await AddJsonAsync("data/job-discovery.json", new { Searches = savedSearches, Results = savedSearchResults }, savedSearches.Count + savedSearchResults.Count);
var variants = await db.CvVariants.IgnoreQueryFilters().AsNoTracking().Where(item => item.OwnerUserId == ownerUserId).OrderBy(item => item.Id).ToListAsync(cancellationToken);
var variantVersions = await db.CvVariantVersions.IgnoreQueryFilters().AsNoTracking().Where(item => item.OwnerUserId == ownerUserId).OrderBy(item => item.Id).ToListAsync(cancellationToken);
var artifacts = await db.CvUploadArtifacts.IgnoreQueryFilters().AsNoTracking().Where(item => item.OwnerUserId == ownerUserId).OrderBy(item => item.Id).ToListAsync(cancellationToken);
@@ -249,6 +249,9 @@ public sealed class AccountDeletionService(
deleted += await db.CareerCertifications.IgnoreQueryFilters().Where(item => item.OwnerUserId == owner).ExecuteDeleteAsync(cancellationToken);
deleted += await db.CareerLanguages.IgnoreQueryFilters().Where(item => item.OwnerUserId == owner).ExecuteDeleteAsync(cancellationToken);
deleted += await db.CareerEvidence.IgnoreQueryFilters().Where(item => item.OwnerUserId == owner).ExecuteDeleteAsync(cancellationToken);
var savedSearchIds = await db.SavedJobSearches.IgnoreQueryFilters().Where(item => item.OwnerUserId == owner).Select(item => item.Id).ToListAsync(cancellationToken);
deleted += await db.SavedJobSearchResults.IgnoreQueryFilters().Where(item => savedSearchIds.Contains(item.SavedJobSearchId)).ExecuteDeleteAsync(cancellationToken);
deleted += await db.SavedJobSearches.IgnoreQueryFilters().Where(item => item.OwnerUserId == owner).ExecuteDeleteAsync(cancellationToken);
deleted += await db.CareerProfileVersions.IgnoreQueryFilters().Where(item => item.OwnerUserId == owner).ExecuteDeleteAsync(cancellationToken);
deleted += await db.CareerProfiles.IgnoreQueryFilters().Where(item => item.OwnerUserId == owner).ExecuteDeleteAsync(cancellationToken);
deleted += await db.CvExtractionRuns.IgnoreQueryFilters().Where(item => item.OwnerUserId == owner).ExecuteDeleteAsync(cancellationToken);
@@ -51,6 +51,8 @@ internal static class StartupSchemaOwnership
"Jobs",
"MicrosoftGraphConnections",
"RuleSettings",
"SavedJobSearches",
"SavedJobSearchResults",
"SubmittedApplicationPackages",
"SubmittedPackageAttachments",
"SystemEmailSettings",