Mirror of https://github.com/roostorg/coop
github.com/roostorg/coop
1import { type Kysely } from 'kysely';
2
3import { type ManualReviewToolServicePg } from '../dbTypes.js';
4
5export default class ManualReviewToolSettings {
6 constructor(readonly pgQuery: Kysely<ManualReviewToolServicePg>) {}
7
8 async upsertDefaultSettings(opts: { orgId: string }) {
9 const { orgId } = opts;
10
11 await this.pgQuery
12 .insertInto('manual_review_tool.manual_review_tool_settings')
13 .values({
14 org_id: orgId,
15 requires_policy_for_decisions: false,
16 mrt_requires_decision_reason: false,
17 hide_skip_button_for_non_admins: false,
18 preview_jobs_view_enabled: false,
19 ignore_callback_url: undefined,
20 })
21 .onConflict((oc) => oc.column('org_id').doNothing())
22 .execute();
23 }
24
25 async getRequiresPolicyForDecisions(orgId: string) {
26 const requiresPolicyForDecisionsRow = await this.pgQuery
27 .selectFrom('manual_review_tool.manual_review_tool_settings')
28 .select(['org_id', 'requires_policy_for_decisions'])
29 .where('org_id', '=', orgId)
30 .executeTakeFirst();
31 return (
32 requiresPolicyForDecisionsRow?.requires_policy_for_decisions ?? false
33 );
34 }
35
36 async getRequiresDecisionReason(orgId: string) {
37 const decisionReasonRow = await this.pgQuery
38 .selectFrom('manual_review_tool.manual_review_tool_settings')
39 .select(['org_id', 'mrt_requires_decision_reason'])
40 .where('org_id', '=', orgId)
41 .executeTakeFirst();
42 return decisionReasonRow?.mrt_requires_decision_reason ?? false;
43 }
44
45 async getHideSkipButtonForNonAdmins(orgId: string) {
46 const hideSkipButtonRow = await this.pgQuery
47 .selectFrom('manual_review_tool.manual_review_tool_settings')
48 .select(['org_id', 'hide_skip_button_for_non_admins'])
49 .where('org_id', '=', orgId)
50 .executeTakeFirst();
51 return hideSkipButtonRow?.hide_skip_button_for_non_admins ?? false;
52 }
53
54 async getPreviewJobsViewEnabled(orgId: string) {
55 const row = await this.pgQuery
56 .selectFrom('manual_review_tool.manual_review_tool_settings')
57 .select(['preview_jobs_view_enabled'])
58 .where('org_id', '=', orgId)
59 .executeTakeFirst();
60 return row?.preview_jobs_view_enabled ?? false;
61 }
62}