1+ DO
2+ $$
3+ BEGIN
4+ IF register_patch(' ChangeFapGradeToString.sql' , ' TCMeldrum' , ' Make grade a string for FAPs' , ' 2025-09-04' ) THEN
5+ BEGIN
6+
7+ DROP VIEW review_data;
8+
9+ ALTER TABLE fap_reviews
10+ ALTER COLUMN grade type varchar (30 );
11+
12+ CREATE OR REPLACE VIEW public .review_data
13+ AS SELECT proposal .proposal_pk ,
14+ proposal .proposal_id ,
15+ proposal .title ,
16+ proposal .instrument_name ,
17+ proposal .availability_time ,
18+ proposal .time_allocation ,
19+ proposal .fap_id ,
20+ proposal .rank_order ,
21+ proposal .call_id ,
22+ proposal .proposer_id ,
23+ proposal .instrument_id ,
24+ proposal .fap_time_allocation ,
25+ proposal .questionary_id ,
26+ grade .avg AS average_grade,
27+ proposal .public_comment AS comment
28+ FROM ( SELECT fp .proposal_pk ,
29+ p .proposal_id ,
30+ p .title ,
31+ i .name AS instrument_name,
32+ chi .availability_time ,
33+ tr .time_allocation ,
34+ f .fap_id ,
35+ fmd .rank_order ,
36+ c .call_id ,
37+ p .proposer_id ,
38+ i .instrument_id ,
39+ fp .fap_time_allocation ,
40+ p .questionary_id ,
41+ tr .public_comment
42+ FROM fap_proposals fp
43+ JOIN faps f ON f .fap_id = fp .fap_id
44+ JOIN call c ON c .call_id = fp .call_id
45+ JOIN proposals p ON p .proposal_pk = fp .proposal_pk
46+ JOIN technical_review tr ON tr .proposal_pk = p .proposal_pk AND tr .instrument_id = fp .instrument_id
47+ LEFT JOIN fap_meeting_decisions fmd ON fmd .proposal_pk = p .proposal_pk
48+ JOIN call_has_instruments chi ON chi .instrument_id = fp .instrument_id AND chi .call_id = c .call_id
49+ JOIN instruments i ON i .instrument_id = chi .instrument_id
50+ WHERE p .status_id <> 9 AND p .status_id <> 1 ) proposal
51+ LEFT JOIN ( SELECT fr .proposal_pk ,
52+ avg (CASE
53+ WHEN fr .grade ~ ' ^\d +(\.\d +)\? $' THEN fr .grade ::double precision
54+ ELSE NULL
55+ END) AS avg
56+ FROM fap_proposals fp
57+ JOIN fap_reviews fr ON fr .proposal_pk = fp .proposal_pk
58+ GROUP BY fr .proposal_pk ) grade ON grade .proposal_pk = proposal .proposal_pk ;
59+
60+
61+ UPDATE questions SET default_config = jsonb_set(default_config, ' {maxGrade}' , ' 10' , true) WHERE question_id = ' fap_review_basis' ;
62+ UPDATE questions SET default_config = jsonb_set(default_config, ' {minGrade}' , ' 1' , true) WHERE question_id = ' fap_review_basis' ;
63+ UPDATE questions SET default_config = jsonb_set(default_config, ' {decimalPoints}' , ' 0' , true) WHERE question_id = ' fap_review_basis' ;
64+ UPDATE templates_has_questions SET config = jsonb_set(config, ' {maxGrade}' , ' 10' , true) WHERE question_id = ' fap_review_basis' ;
65+ UPDATE templates_has_questions SET config = jsonb_set(config, ' {minGrade}' , ' 1' , true) WHERE question_id = ' fap_review_basis' ;
66+ UPDATE templates_has_questions SET config = jsonb_set(config, ' {decimalPoints}' , ' 0' , true) WHERE question_id = ' fap_review_basis' ;
67+
68+ DELETE FROM settings WHERE settings_id = ' GRADE_PRECISION' ;
69+ END;
70+ END IF;
71+ END;
72+ $$
73+ LANGUAGE plpgsql;
0 commit comments