Skip to content

Commit 1bed44b

Browse files
Merge branch 'develop' into SWAP-4687-uo-remove-unused-fields-from-user-form
2 parents 7463a28 + c030c8f commit 1bed44b

32 files changed

+353
-159
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
DO
2+
$$
3+
BEGIN
4+
IF register_patch('0180_MarkInstrumentsAsUnselectable.sql', 'TCMeldrum', 'Mark instruments as unselecable for instrument picker', '2025-05-25') THEN
5+
BEGIN
6+
7+
ALTER TABLE instruments
8+
ADD COLUMN selectable boolean DEFAULT true;
9+
10+
END;
11+
END IF;
12+
END;
13+
$$
14+
LANGUAGE plpgsql;

apps/backend/src/datasources/FapDataSource.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,10 @@ export interface FapDataSource {
8383
getFapProposalCount(fapId: number): Promise<number>;
8484
getCurrentFapProposalCount(fapId: number): Promise<number>;
8585
getFapReviewerProposalCount(reviewerId: number): Promise<number>;
86-
getCurrentFapReviewerProposalCount(reviewerId: number): Promise<number>;
86+
getCurrentFapReviewerProposalCount(
87+
reviewerId: number,
88+
fapId: number
89+
): Promise<number>;
8790
getFapProposal(
8891
fapId: number,
8992
proposalPk: number,

apps/backend/src/datasources/InstrumentDataSource.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ export interface InstrumentDataSource {
1919
): Promise<{ totalCount: number; instruments: Instrument[] }>;
2020
getUserInstruments(userId: number): Promise<Instrument[]>;
2121
getInstrumentsByCallId(
22-
callIds: number[]
22+
callIds: number[],
23+
selectableOnly?: boolean
2324
): Promise<InstrumentWithAvailabilityTime[]>;
2425
getCallsByInstrumentId(
2526
instrumentId: number,

apps/backend/src/datasources/mockups/FapDataSource.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,7 @@ export class FapDataSourceMock implements FapDataSource {
358358
return dummyFapProposals.length;
359359
}
360360

361-
async getCurrentFapReviewerProposalCount(reviewerId: number) {
361+
async getCurrentFapReviewerProposalCount(reviewerId: number, fapId: number) {
362362
return dummyFapProposals.length;
363363
}
364364

apps/backend/src/datasources/mockups/InstrumentDataSource.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,17 @@ export const dummyInstrument = new Instrument(
1616
'Dummy instrument 1',
1717
'instrument_1',
1818
'This is test instrument.',
19-
1
19+
1,
20+
true
2021
);
2122

2223
export const dummyInstrument2 = new Instrument(
2324
2,
2425
'Dummy instrument 2',
2526
'instrument_2',
2627
'This is test instrument.',
27-
1
28+
1,
29+
true
2830
);
2931

3032
export const dummyInstrumentWithAvailabilityTime =

apps/backend/src/datasources/postgres/FapDataSource.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -406,7 +406,8 @@ export default class PostgresFapDataSource implements FapDataSource {
406406
}
407407

408408
async getCurrentFapReviewerProposalCount(
409-
reviewerId: number
409+
reviewerId: number,
410+
fapId: number
410411
): Promise<number> {
411412
const callFilter = {
412413
isFapReviewEnded: false,
@@ -424,6 +425,7 @@ export default class PostgresFapDataSource implements FapDataSource {
424425
})
425426
.whereIn('fp.call_id', callIds)
426427
.andWhere('fr.user_id', reviewerId)
428+
.andWhere('fr.fap_id', fapId)
427429
.groupBy('fr.user_id')
428430
.first()
429431
.then((result: { count?: string | undefined } | undefined) => {

apps/backend/src/datasources/postgres/InstrumentDataSource.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ export default class PostgresInstrumentDataSource
4141
instrument.name,
4242
instrument.short_code,
4343
instrument.description,
44-
instrument.manager_user_id
44+
instrument.manager_user_id,
45+
instrument.selectable
4546
);
4647
}
4748

@@ -80,6 +81,7 @@ export default class PostgresInstrumentDataSource
8081
short_code: args.shortCode,
8182
description: args.description,
8283
manager_user_id: args.managerUserId,
84+
selectable: !!args.selectable,
8385
})
8486
.into('instruments')
8587
.returning('*');
@@ -153,7 +155,8 @@ export default class PostgresInstrumentDataSource
153155
}
154156

155157
async getInstrumentsByCallId(
156-
callIds: number[]
158+
callIds: number[],
159+
selectableOnly?: boolean
157160
): Promise<InstrumentWithAvailabilityTime[]> {
158161
return database
159162
.select([
@@ -170,6 +173,11 @@ export default class PostgresInstrumentDataSource
170173
'i.instrument_id': 'chi.instrument_id',
171174
})
172175
.whereIn('chi.call_id', callIds)
176+
.modify((query) => {
177+
if (selectableOnly) {
178+
query.andWhere('i.selectable', true);
179+
}
180+
})
173181
.distinct('i.instrument_id')
174182
.then((instruments: InstrumentWithAvailabilityTimeRecord[]) => {
175183
const result = instruments.map((instrument) =>
@@ -286,6 +294,7 @@ export default class PostgresInstrumentDataSource
286294
short_code: instrument.shortCode,
287295
description: instrument.description,
288296
manager_user_id: instrument.managerUserId,
297+
selectable: instrument.selectable,
289298
},
290299
['*']
291300
)

apps/backend/src/datasources/postgres/records.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -476,6 +476,7 @@ export interface InstrumentRecord {
476476
readonly description: string;
477477
readonly manager_user_id: number;
478478
readonly full_count: number;
479+
readonly selectable: boolean;
479480
}
480481

481482
export interface InstrumentHasProposalRecord {
@@ -815,7 +816,8 @@ export const createInstrumentObject = (instrument: InstrumentRecord) => {
815816
instrument.name,
816817
instrument.short_code,
817818
instrument.description,
818-
instrument.manager_user_id
819+
instrument.manager_user_id,
820+
instrument.selectable
819821
);
820822
};
821823

apps/backend/src/models/Instrument.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ export class Instrument {
44
public name: string,
55
public shortCode: string,
66
public description: string,
7-
public managerUserId: number
7+
public managerUserId: number,
8+
public selectable?: boolean
89
) {}
910
}
1011

apps/backend/src/models/questionTypes/InstrumentPicker.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,10 @@ export const instrumentPickerDefinition: Question<DataType.INSTRUMENT_PICKER> =
6464
Tokens.InstrumentDataSource
6565
);
6666

67-
const instruments = await instrumentDataSource.getInstrumentsByCallId([
68-
callId,
69-
]);
67+
const instruments = await instrumentDataSource.getInstrumentsByCallId(
68+
[callId],
69+
true
70+
);
7071

7172
return {
7273
...config,

0 commit comments

Comments
 (0)