• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

hicommonwealth / commonwealth / 14655113082

25 Apr 2025 01:39AM UTC coverage: 45.41% (-0.5%) from 45.902%
14655113082

Pull #11922

github

web-flow
Merge 5cbbe9b61 into 8f728a23c
Pull Request #11922: Thread Rankings

1645 of 4008 branches covered (41.04%)

Branch coverage included in aggregate %.

15 of 81 new or added lines in 15 files covered. (18.52%)

21 existing lines in 4 files now uncovered.

3020 of 6265 relevant lines covered (48.2%)

39.68 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/libs/model/src/utils/pgMultiRowUpdate.ts
1
import { QueryTypes, Transaction } from 'sequelize';
2
import { models } from '../database';
3

4
type Column = {
5
  setColumn: string;
6
  rows: { newValue: string | number; whenCaseValue: string | number }[];
7
};
8

9
/**
10
 * WARNING: NEVER USE WITH USER DERIVED INPUT. All inputs are NOT escaped!
11
 */
12
export async function pgMultiRowUpdate(
13
  tableName: string,
14
  columns: [Column, ...Column[]],
15
  caseColumn: string,
16
  transaction?: Transaction,
17
  updatedAtColumn?: boolean,
18
) {
19
  if (columns.length === 0) return false;
×
20

21
  let hasRows = false;
×
22
  for (const column of columns) {
×
23
    if (column.rows.length > 0) {
×
24
      hasRows = true;
×
25
      break;
×
26
    }
27
  }
28
  if (!hasRows) return false;
×
29

30
  let updates = ``;
×
31
  for (const { setColumn, rows } of columns) {
×
32
    if (rows.length === 0) continue;
×
33
    if (updates.length > 0) updates += `, \n`;
×
34

35
    updates += `${setColumn} = CASE `;
×
36
    for (const { whenCaseValue, newValue } of rows) {
×
NEW
37
      updates += `\n\tWHEN ${caseColumn} = ${whenCaseValue} THEN ${newValue}`;
×
38
    }
39
    updates += ` \n\tEND`;
×
40
  }
41

42
  const caseValues = new Set(
×
43
    columns.map((c) => c.rows.map((r) => r.whenCaseValue)).flat(),
×
44
  );
45
  const query = `
×
46
    UPDATE "${tableName}"
47
    SET ${updates} ${updatedAtColumn ? `, updated_at = NOW()` : ''}
×
48
    WHERE ${caseColumn} IN (${Array.from(caseValues).join(', ')});
49
  `;
50

UNCOV
51
  await models.sequelize.query(query, {
×
52
    transaction,
53
    type: QueryTypes.UPDATE,
54
  });
UNCOV
55
  return true;
×
56
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc