import { SQL , inArray , sql } from 'drizzle-orm' ;
import { users } from './schema' ;
const db = drizzle ( ... );
const inputs = [
{
id : 1 ,
city : 'New York' ,
} ,
{
id : 2 ,
city : 'Los Angeles' ,
} ,
{
id : 3 ,
city : 'Chicago' ,
} ,
];
// You have to be sure that inputs array is not empty
if ( inputs . length === 0 ) {
return ;
}
const sqlChunks : SQL [] = [];
const ids : number [] = [];
sqlChunks .push ( sql `(case` );
for ( const input of inputs) {
sqlChunks .push ( sql `when ${ users .id } = ${ input .id } then ${ input .city } ` );
ids .push ( input .id);
}
sqlChunks .push ( sql `end)` );
const finalSql : SQL = sql .join (sqlChunks , sql .raw ( ' ' ));
await db .update (users) .set ({ city : finalSql }) .where ( inArray ( users .id , ids));
update users set "city" =
( case when id = 1 then 'New York' when id = 2 then 'Los Angeles' when id = 3 then 'Chicago' end )
where id in ( 1 , 2 , 3 )