@@ -13,6 +13,53 @@ import {
1313} from "~/server/db/schema" ;
1414import type { CseRow , IndicatorGEntry } from "./fetchDeclarations" ;
1515
16+ // ── Shared select columns for indicators A–F ───────────────────────
17+
18+ export const indicatorColumns = {
19+ indicatorAAnnualWomen : declarations . indicatorAAnnualWomen ,
20+ indicatorAAnnualMen : declarations . indicatorAAnnualMen ,
21+ indicatorAHourlyWomen : declarations . indicatorAHourlyWomen ,
22+ indicatorAHourlyMen : declarations . indicatorAHourlyMen ,
23+ indicatorBAnnualWomen : declarations . indicatorBAnnualWomen ,
24+ indicatorBAnnualMen : declarations . indicatorBAnnualMen ,
25+ indicatorBHourlyWomen : declarations . indicatorBHourlyWomen ,
26+ indicatorBHourlyMen : declarations . indicatorBHourlyMen ,
27+ indicatorCAnnualWomen : declarations . indicatorCAnnualWomen ,
28+ indicatorCAnnualMen : declarations . indicatorCAnnualMen ,
29+ indicatorCHourlyWomen : declarations . indicatorCHourlyWomen ,
30+ indicatorCHourlyMen : declarations . indicatorCHourlyMen ,
31+ indicatorDAnnualWomen : declarations . indicatorDAnnualWomen ,
32+ indicatorDAnnualMen : declarations . indicatorDAnnualMen ,
33+ indicatorDHourlyWomen : declarations . indicatorDHourlyWomen ,
34+ indicatorDHourlyMen : declarations . indicatorDHourlyMen ,
35+ indicatorEWomen : declarations . indicatorEWomen ,
36+ indicatorEMen : declarations . indicatorEMen ,
37+ indicatorFAnnualThreshold1 : declarations . indicatorFAnnualThreshold1 ,
38+ indicatorFAnnualThreshold2 : declarations . indicatorFAnnualThreshold2 ,
39+ indicatorFAnnualThreshold3 : declarations . indicatorFAnnualThreshold3 ,
40+ indicatorFAnnualThreshold4 : declarations . indicatorFAnnualThreshold4 ,
41+ indicatorFAnnualWomen1 : declarations . indicatorFAnnualWomen1 ,
42+ indicatorFAnnualWomen2 : declarations . indicatorFAnnualWomen2 ,
43+ indicatorFAnnualWomen3 : declarations . indicatorFAnnualWomen3 ,
44+ indicatorFAnnualWomen4 : declarations . indicatorFAnnualWomen4 ,
45+ indicatorFAnnualMen1 : declarations . indicatorFAnnualMen1 ,
46+ indicatorFAnnualMen2 : declarations . indicatorFAnnualMen2 ,
47+ indicatorFAnnualMen3 : declarations . indicatorFAnnualMen3 ,
48+ indicatorFAnnualMen4 : declarations . indicatorFAnnualMen4 ,
49+ indicatorFHourlyThreshold1 : declarations . indicatorFHourlyThreshold1 ,
50+ indicatorFHourlyThreshold2 : declarations . indicatorFHourlyThreshold2 ,
51+ indicatorFHourlyThreshold3 : declarations . indicatorFHourlyThreshold3 ,
52+ indicatorFHourlyThreshold4 : declarations . indicatorFHourlyThreshold4 ,
53+ indicatorFHourlyWomen1 : declarations . indicatorFHourlyWomen1 ,
54+ indicatorFHourlyWomen2 : declarations . indicatorFHourlyWomen2 ,
55+ indicatorFHourlyWomen3 : declarations . indicatorFHourlyWomen3 ,
56+ indicatorFHourlyWomen4 : declarations . indicatorFHourlyWomen4 ,
57+ indicatorFHourlyMen1 : declarations . indicatorFHourlyMen1 ,
58+ indicatorFHourlyMen2 : declarations . indicatorFHourlyMen2 ,
59+ indicatorFHourlyMen3 : declarations . indicatorFHourlyMen3 ,
60+ indicatorFHourlyMen4 : declarations . indicatorFHourlyMen4 ,
61+ } ;
62+
1663// ── Shared helper ────────────────────────────────────────────────────
1764
1865function groupByKey < T > ( rows : T [ ] , keyFn : ( row : T ) => string ) : Map < string , T [ ] > {
@@ -60,63 +107,14 @@ export async function fetchSubmittedDeclarations(
60107 declarantLastName : users . lastName ,
61108 declarantEmail : users . email ,
62109 declarantPhone : users . phone ,
63- // Indicator A — Global remuneration gap (mean)
64- indicatorAAnnualWomen : declarations . indicatorAAnnualWomen ,
65- indicatorAAnnualMen : declarations . indicatorAAnnualMen ,
66- indicatorAHourlyWomen : declarations . indicatorAHourlyWomen ,
67- indicatorAHourlyMen : declarations . indicatorAHourlyMen ,
68- // Indicator B — Variable remuneration gap (mean)
69- indicatorBAnnualWomen : declarations . indicatorBAnnualWomen ,
70- indicatorBAnnualMen : declarations . indicatorBAnnualMen ,
71- indicatorBHourlyWomen : declarations . indicatorBHourlyWomen ,
72- indicatorBHourlyMen : declarations . indicatorBHourlyMen ,
73- // Indicator C — Global remuneration gap (median)
74- indicatorCAnnualWomen : declarations . indicatorCAnnualWomen ,
75- indicatorCAnnualMen : declarations . indicatorCAnnualMen ,
76- indicatorCHourlyWomen : declarations . indicatorCHourlyWomen ,
77- indicatorCHourlyMen : declarations . indicatorCHourlyMen ,
78- // Indicator D — Variable remuneration gap (median)
79- indicatorDAnnualWomen : declarations . indicatorDAnnualWomen ,
80- indicatorDAnnualMen : declarations . indicatorDAnnualMen ,
81- indicatorDHourlyWomen : declarations . indicatorDHourlyWomen ,
82- indicatorDHourlyMen : declarations . indicatorDHourlyMen ,
83- // Indicator E — Variable pay beneficiary count
84- indicatorEWomen : declarations . indicatorEWomen ,
85- indicatorEMen : declarations . indicatorEMen ,
86- // Indicator F — Quartile distribution (annual)
87- indicatorFAnnualThreshold1 : declarations . indicatorFAnnualThreshold1 ,
88- indicatorFAnnualThreshold2 : declarations . indicatorFAnnualThreshold2 ,
89- indicatorFAnnualThreshold3 : declarations . indicatorFAnnualThreshold3 ,
90- indicatorFAnnualThreshold4 : declarations . indicatorFAnnualThreshold4 ,
91- indicatorFAnnualWomen1 : declarations . indicatorFAnnualWomen1 ,
92- indicatorFAnnualWomen2 : declarations . indicatorFAnnualWomen2 ,
93- indicatorFAnnualWomen3 : declarations . indicatorFAnnualWomen3 ,
94- indicatorFAnnualWomen4 : declarations . indicatorFAnnualWomen4 ,
95- indicatorFAnnualMen1 : declarations . indicatorFAnnualMen1 ,
96- indicatorFAnnualMen2 : declarations . indicatorFAnnualMen2 ,
97- indicatorFAnnualMen3 : declarations . indicatorFAnnualMen3 ,
98- indicatorFAnnualMen4 : declarations . indicatorFAnnualMen4 ,
99- // Indicator F — Quartile distribution (hourly)
100- indicatorFHourlyThreshold1 : declarations . indicatorFHourlyThreshold1 ,
101- indicatorFHourlyThreshold2 : declarations . indicatorFHourlyThreshold2 ,
102- indicatorFHourlyThreshold3 : declarations . indicatorFHourlyThreshold3 ,
103- indicatorFHourlyThreshold4 : declarations . indicatorFHourlyThreshold4 ,
104- indicatorFHourlyWomen1 : declarations . indicatorFHourlyWomen1 ,
105- indicatorFHourlyWomen2 : declarations . indicatorFHourlyWomen2 ,
106- indicatorFHourlyWomen3 : declarations . indicatorFHourlyWomen3 ,
107- indicatorFHourlyWomen4 : declarations . indicatorFHourlyWomen4 ,
108- indicatorFHourlyMen1 : declarations . indicatorFHourlyMen1 ,
109- indicatorFHourlyMen2 : declarations . indicatorFHourlyMen2 ,
110- indicatorFHourlyMen3 : declarations . indicatorFHourlyMen3 ,
111- indicatorFHourlyMen4 : declarations . indicatorFHourlyMen4 ,
110+ ...indicatorColumns ,
112111 } )
113112 . from ( declarations )
114113 . innerJoin ( companies , eq ( declarations . siren , companies . siren ) )
115114 . innerJoin ( users , eq ( declarations . declarantId , users . id ) )
116115 . where (
117116 and (
118117 eq ( declarations . status , "submitted" ) ,
119- // Timestamps are stored in UTC (withTimezone: true)
120118 gte ( declarations . updatedAt , new Date ( `${ dateBegin } T00:00:00Z` ) ) ,
121119 lt ( declarations . updatedAt , new Date ( `${ dateEnd } T00:00:00Z` ) ) ,
122120 ) ,
0 commit comments