Cast columns in relations

A great feature of drizzle's relational queries is that they don't actually require a foreign key, which provides a great amount of flexibility in querying your data. However, it doesn't seem like there is currently a way to cast the fields so that their types match.

Something along the lines of
export const actionRelations = relations(actions, ({ many, one }) => ({
  user: one(users, {
    fields: [sql<string>`${actions.ownerId}::uuid`.as("ownerId")],
    references: [users.id],
  })
  service: one(services, {
    fields: [actions.ownerId],
    references: [sql<string>`${services.id}::text`.as("id")]
  }
}));

where an action's ownerId is text so that it can refer to multiple different owner types regardless of their primary key type.
Was this page helpful?