FNDEVVE
FNDEVVE
DTDrizzle Team
Created by FNDEVVE on 8/2/2024 in #help
findMany conditional select one-to-one relation
Hello. I am switching to Drizzle from Supabase ORM and it's very good. However I got some issues, in findMany query like this: return this.drizzleService.db.query.Client.findMany({ columns: CLIENT_QUERY, with: { Documents: { columns: DOCUMENT_QUERY, }, SharedClients: { columns: SHARED_CLIENT_QUERY, with: { User_sharedWithId: { columns: PARTIAL_USER_QUERY, }, }, where: eq(SharedClient.ownerId, userId), }, User: { columns: PARTIAL_USER_QUERY, // where: ne(Client.ownerId, userId), }, }, where: or( eq(Client.ownerId, userId), inArray( Client.id, this.drizzleService.db .select({ clientId: SharedClient.clientId }) .from(SharedClient) .where(eq(SharedClient.sharedWithId, userId)), ), ), }); I need to return User only when owner !== current user. I can't find a way to do it. This is how relations look: export const ClientRelations = relations(Client, ({ one, many }) => ({ Documents: many(Document), User: one(User, { fields: [Client.ownerId], references: [User.id], }), SharedClients: many(SharedClient), })); I found someone with similar issue here: https://discord.com/channels/1043890932593987624/1177189892585963560
2 replies