Openstatus
www.openstatus.dev
1import type { Column } from "drizzle-orm";
2import { sql } from "drizzle-orm";
3import type {
4 SQLiteTable,
5 SQLiteUpdateSetSource,
6} from "drizzle-orm/sqlite-core";
7
8export function conflictUpdateSet<TTable extends SQLiteTable>(
9 table: TTable,
10 columns: (keyof TTable["_"]["columns"] & keyof TTable)[],
11): SQLiteUpdateSetSource<TTable> {
12 return Object.assign(
13 {},
14 ...columns.map((k) => ({
15 [k]: sql`excluded.${(table[k] as Column).name}`,
16 })),
17 ) as SQLiteUpdateSetSource<TTable>;
18}