feat(backend): add communication, tester, admin and middleman modules

Implement step 17 modules: threads/messages, notifications with automation (submission.created, idea.created, grant_call.opened), innovation test feedback, admin panel (submissions, verify, metrics, grant call status), Middleman adaptation and partnerships. Split multi-type files into one type per file and replace object-valued dictionaries with string-valued maps in data contracts (migrations 0006/0007).
This commit is contained in:
Rafał Tyński
2026-10-04 03:49:45 +02:00
parent f4f3b3896a
commit fa1199539b
136 changed files with 2338 additions and 574 deletions
@@ -93,6 +93,19 @@ public sealed class IdeaService : IIdeaService
return result;
}
public async Task<IReadOnlyList<string>> ListDistinctAuthorIdsAsync(CancellationToken cancellationToken)
{
var response = await _client.RawQuery(
"SELECT type::string(author) AS id FROM idea;",
new Dictionary<string, object?>(),
cancellationToken);
response.EnsureAllOks();
var rows = response.GetValue<List<IdRow>>(0) ?? [];
return rows.Select(row => row.Id).Distinct(StringComparer.Ordinal).ToList();
}
public async Task<IdeaResponse?> UpdateAsync(
string ideaId,
UpdateIdeaRequest request,