fix(db): normalize document index names across MariaDB collations
MariaDB persistence qualification / mariadb (push) Failing after 8s
MariaDB persistence qualification / mariadb (push) Failing after 8s
This commit is contained in:
@@ -59,8 +59,10 @@ public sealed class DocumentsIndexService(JobTrackerContext db)
|
||||
var answers = HasAnswers(sqlite);
|
||||
var recruiter = HasContent("j.RecruiterMessageDraft");
|
||||
var tailored = HasContent("j.TailoredCvText");
|
||||
// Startup-created tables can have different collations; keep the index's folded, accent-sensitive names compatible.
|
||||
string Name(string value) => sqlite ? value : $"CONVERT({value} USING utf8mb4) COLLATE utf8mb4_bin";
|
||||
var sources = $$"""
|
||||
SELECT 'cv' AS Type, CAST(v.Id AS CHAR) AS ResourceId, v.Name AS Name, 'current' AS State,
|
||||
SELECT 'cv' AS Type, CAST(v.Id AS CHAR) AS ResourceId, {{Name("v.Name")}} AS Name, 'current' AS State,
|
||||
CASE WHEN v.IsPublic = 1 THEN 'public' ELSE 'private' END AS Visibility,
|
||||
j.Id AS JobApplicationId, j.JobTitle AS JobTitle, c.Name AS CompanyName, j.IsDeleted AS JobIsDeleted,
|
||||
CAST(v.UpdatedAtUtc AS CHAR) AS RawRecordedAt, 'updated-utc' AS DateKind,
|
||||
@@ -73,7 +75,7 @@ public sealed class DocumentsIndexService(JobTrackerContext db)
|
||||
LEFT JOIN `Companies` c ON c.Id = j.CompanyId AND c.OwnerUserId = {0}
|
||||
WHERE v.OwnerUserId = {0}
|
||||
UNION ALL
|
||||
SELECT 'cover-letter', CAST(j.Id AS CHAR), j.JobTitle, 'draft', NULL,
|
||||
SELECT 'cover-letter', CAST(j.Id AS CHAR), {{Name("j.JobTitle")}}, 'draft', NULL,
|
||||
j.Id, j.JobTitle, c.Name, j.IsDeleted, {{letterDate}},
|
||||
CASE WHEN {{letterDate}} IS NULL THEN 'unknown' ELSE 'history-recorded-utc' END,
|
||||
{{letterVersion}}, {{letterCount}}, NULL, NULL, NULL, NULL,
|
||||
@@ -82,14 +84,14 @@ public sealed class DocumentsIndexService(JobTrackerContext db)
|
||||
LEFT JOIN `Companies` c ON c.Id = j.CompanyId AND c.OwnerUserId = {0}
|
||||
WHERE j.OwnerUserId = {0} AND ({{letterContent}} OR {{letterCount}} > 0)
|
||||
UNION ALL
|
||||
SELECT 'application-material', CAST(j.Id AS CHAR), j.JobTitle, 'draft', NULL,
|
||||
SELECT 'application-material', CAST(j.Id AS CHAR), {{Name("j.JobTitle")}}, 'draft', NULL,
|
||||
j.Id, j.JobTitle, c.Name, j.IsDeleted, NULL, 'unknown',
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL
|
||||
FROM `JobApplications` j
|
||||
LEFT JOIN `Companies` c ON c.Id = j.CompanyId AND c.OwnerUserId = {0}
|
||||
WHERE j.OwnerUserId = {0} AND ({{answers}} OR {{recruiter}})
|
||||
UNION ALL
|
||||
SELECT 'tailored-cv', CAST(j.Id AS CHAR), j.JobTitle, 'draft', NULL,
|
||||
SELECT 'tailored-cv', CAST(j.Id AS CHAR), {{Name("j.JobTitle")}}, 'draft', NULL,
|
||||
j.Id, j.JobTitle, c.Name, j.IsDeleted,
|
||||
CAST(COALESCE(d.LastEditedAtUtc, d.LastGeneratedAtUtc, j.TailoredCvUpdatedAt) AS CHAR),
|
||||
CASE WHEN COALESCE(d.LastEditedAtUtc, d.LastGeneratedAtUtc, j.TailoredCvUpdatedAt) IS NULL THEN 'unknown' ELSE 'updated-utc' END,
|
||||
@@ -99,14 +101,14 @@ public sealed class DocumentsIndexService(JobTrackerContext db)
|
||||
LEFT JOIN `TailoredCvDrafts` d ON d.JobApplicationId = j.Id AND d.OwnerUserId = {0}
|
||||
WHERE j.OwnerUserId = {0} AND (d.Id IS NOT NULL OR {{tailored}})
|
||||
UNION ALL
|
||||
SELECT 'attachment', CAST(a.Id AS CHAR), a.FileName, 'current', NULL,
|
||||
SELECT 'attachment', CAST(a.Id AS CHAR), {{Name("a.FileName")}}, 'current', NULL,
|
||||
j.Id, j.JobTitle, c.Name, j.IsDeleted, CAST(a.UploadDate AS CHAR), 'uploaded-local',
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, a.FileType, a.FileSize, a.Purpose, a.UseForAi, NULL, NULL, NULL
|
||||
FROM `Attachments` a
|
||||
JOIN `JobApplications` j ON j.Id = a.JobApplicationId AND j.OwnerUserId = {0}
|
||||
LEFT JOIN `Companies` c ON c.Id = j.CompanyId AND c.OwnerUserId = {0}
|
||||
UNION ALL
|
||||
SELECT 'submitted-package', CAST(p.Id AS CHAR), COALESCE(p.CvVariantName, j.JobTitle), 'frozen', NULL,
|
||||
SELECT 'submitted-package', CAST(p.Id AS CHAR), {{Name("COALESCE(p.CvVariantName, j.JobTitle)")}}, 'frozen', NULL,
|
||||
j.Id, j.JobTitle, c.Name, j.IsDeleted, CAST(p.CreatedAtUtc AS CHAR), 'captured-utc',
|
||||
p.Version, NULL, (SELECT COUNT(*) FROM `SubmittedPackageAttachments` a WHERE a.SubmittedApplicationPackageId = p.Id),
|
||||
p.CvVariantId, p.CvVariantName, p.CvVariantVersion, NULL, NULL, NULL, NULL, NULL, NULL, NULL
|
||||
@@ -115,7 +117,7 @@ public sealed class DocumentsIndexService(JobTrackerContext db)
|
||||
LEFT JOIN `Companies` c ON c.Id = j.CompanyId AND c.OwnerUserId = {0}
|
||||
WHERE p.OwnerUserId = {0}
|
||||
UNION ALL
|
||||
SELECT 'email-draft', CAST(d.Id AS CHAR), d.Subject, 'draft', NULL,
|
||||
SELECT 'email-draft', CAST(d.Id AS CHAR), {{Name("d.Subject")}}, 'draft', NULL,
|
||||
j.Id, j.JobTitle, c.Name, j.IsDeleted, CAST(d.UpdatedAtUtc AS CHAR), 'updated-utc',
|
||||
d.Revision, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, d.Provider, NULL, NULL
|
||||
FROM `EmailDrafts` d
|
||||
|
||||
Reference in New Issue
Block a user