`where` within `where`? confused about complex query

export const posts = pgTable('posts', {
  id: uuid('id').defaultRandom().primaryKey(),
  userId: char('user_id', { length: 17 }).notNull().references(() => users.id),
  description: text('description'),
  createdAt: timestamp('created_at', { withTimezone: true }).defaultNow().notNull(),
});

export const postsRelations = relations(posts, ({ one, many }) => ({
  user: one(users, {
    fields: [posts.userId],
    references: [users.id],
  }),
  userItems: many(postUserItems),
}));

export const userItems = pgTable('user_items', {
  assetId: varchar('asset_id', { length: 255 }).primaryKey(),
  userId: char('user_id', { length: 17 }).notNull().references(() => users.id),
  itemId: serial('item_id').references(() => items.id).notNull(),
  imageUrl: varchar('image_url', { length: 512 }).notNull(),
});

export const userItemsRelations = relations(userItems, ({ one, many }) => ({
  user: one(users, {
    fields: [userItems.userId],
    references: [users.id],
  }),
  item: one(items, {
    fields: [userItems.itemId],
    references: [items.id],
  }),
  posts: many(trades),
  postUserItems: many(postUserItems),
}));

export const postUserItems = pgTable('post_user_items', {
  postId: uuid('post_id').references(() => posts.id),
  assetId: varchar('asset_id', { length: 255 }).references(() => userItems.assetId),
},(table) => {
  return {
    pk: primaryKey(table.postId, table.assetId),
  };
});

export const postUserItemsRelations = relations(postUserItems, ({ one, many }) => ({
  post: one(posts, {
    fields: [postUserItems.postId],
    references: [posts.id],
  }),
  userItem: one(userItems, {
    fields: [postUserItems.assetId],
    references: [userItems.assetId],
  }),
}));

how can i select posts that contain a userItems with assetId = {X}?
Was this page helpful?