feat(dashboard): add findContributorsPerDocument query and ContributorRow projection
This commit is contained in:
@@ -85,4 +85,26 @@ public interface AuditLogQueryRepository extends JpaRepository<AuditLog, UUID> {
|
|||||||
List<Object[]> findMostRecentActorPerDocument(
|
List<Object[]> findMostRecentActorPerDocument(
|
||||||
@Param("documentIds") List<UUID> documentIds,
|
@Param("documentIds") List<UUID> documentIds,
|
||||||
@Param("kind") String kind);
|
@Param("kind") String kind);
|
||||||
|
|
||||||
|
@Query(value = """
|
||||||
|
SELECT
|
||||||
|
a.document_id AS documentId,
|
||||||
|
CASE
|
||||||
|
WHEN u.first_name IS NOT NULL AND u.last_name IS NOT NULL
|
||||||
|
THEN UPPER(LEFT(u.first_name, 1)) || UPPER(LEFT(u.last_name, 1))
|
||||||
|
WHEN u.first_name IS NOT NULL THEN UPPER(LEFT(u.first_name, 1))
|
||||||
|
WHEN u.last_name IS NOT NULL THEN UPPER(LEFT(u.last_name, 1))
|
||||||
|
ELSE '?'
|
||||||
|
END AS actorInitials,
|
||||||
|
COALESCE(u.color, '') AS actorColor,
|
||||||
|
CONCAT_WS(' ', u.first_name, u.last_name) AS actorName
|
||||||
|
FROM audit_log a
|
||||||
|
JOIN users u ON u.id = a.actor_id
|
||||||
|
WHERE a.kind IN ('ANNOTATION_CREATED', 'TEXT_SAVED', 'BLOCK_REVIEWED')
|
||||||
|
AND a.document_id IN :documentIds
|
||||||
|
AND a.actor_id IS NOT NULL
|
||||||
|
GROUP BY a.document_id, a.actor_id, u.first_name, u.last_name, u.color
|
||||||
|
ORDER BY a.document_id, MIN(a.happened_at)
|
||||||
|
""", nativeQuery = true)
|
||||||
|
List<ContributorRow> findContributorsPerDocument(@Param("documentIds") List<UUID> documentIds);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
package org.raddatz.familienarchiv.dashboard;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public interface ContributorRow {
|
||||||
|
UUID getDocumentId();
|
||||||
|
String getActorInitials();
|
||||||
|
String getActorColor();
|
||||||
|
String getActorName();
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user