Rado GitHub

Delete

Remove rows with db.delete(Table).

import {eq} from 'rado'

await db.delete(User).where(eq(User.id, 1))

db.delete(User) without a where deletes all rows. This is valid SQL and rado won't stop you. Triple-check, then check again.

Conditions

where accepts the same operators as select. See Filter operators:

import {and, inArray, lt} from 'rado'

await db
  .delete(Post)
  .where(and(eq(Post.published, false), lt(Post.createdAt, cutoff)))

await db.delete(Post).where(inArray(Post.id, [1, 2, 3]))

Subqueries work too:

const inactiveUsers = db
  .select(User.id)
  .from(User)
  .where(eq(User.active, false))

await db.delete(Post).where(inArray(Post.authorId, inactiveUsers))

Returning deleted rows (PostgreSQL/SQLite)

const removed = await db
  .delete(Post)
  .where(eq(Post.published, false))
  .returning(Post.id)

Ordering and limiting

Where the dialect allows it:

await db.delete(LogEntry).orderBy(asc(LogEntry.createdAt)).limit(1000)