Oreki
Oreki
Explore posts from servers
DTDrizzle Team
Created by Oreki on 1/26/2024 in #help
advanced relational query builder
hey, i have a use case where i need to return rows from one table based on filters requiring on connected table here's prisma equivalent code
await prisma.card.findMany({
where: {
// character is another table
character: {
element: '...'
}
}
})
await prisma.card.findMany({
where: {
// character is another table
character: {
element: '...'
}
}
})
how would this be possible with drizzle
13 replies
DTDrizzle Team
Created by Oreki on 8/7/2023 in #help
relations help
how can i have a many-to-many relation for example a user can have multiple followers and can follow multple users
export const users = pgTable(
'users',
{
id: text('id').primaryKey().notNull(),
name: text('name'),
bio: text('bio').default("I Don''t Need A Bio, I''m A Developer"),
email: text('email'),
avatar: text('avatar').default('https://i.imgur.com/6VBx3io.png'),
bannerImage: text('bannerImage').default('https://i.imgur.com/6VBx3io.png'),
createdAt: timestamp('created_at', { precision: 3, mode: 'string' }).defaultNow().notNull(),
updatedAt: timestamp('updated_at', { precision: 3, mode: 'string' }).notNull(),
role: role('role'),
preferences: jsonb('preferences'),
auth: jsonb('auth'),
invitedBy: text('invitedBy'),
},
(table) => {
return {
emailKey: uniqueIndex('users_email_key').on(table.email),
};
},
);

export const userRelations = relations(users, ({ one, many }) => ({
invitee: one(users, {
fields: [users.invitedBy],
references: [users.id],
}),
// followers: many(users, {
// relationName: 'followers',
// }),
// following: many(users, {
// relationName: 'following',
// }),
posts: many(post),
comments: many(comment),
likes: many(like),
}));
export const users = pgTable(
'users',
{
id: text('id').primaryKey().notNull(),
name: text('name'),
bio: text('bio').default("I Don''t Need A Bio, I''m A Developer"),
email: text('email'),
avatar: text('avatar').default('https://i.imgur.com/6VBx3io.png'),
bannerImage: text('bannerImage').default('https://i.imgur.com/6VBx3io.png'),
createdAt: timestamp('created_at', { precision: 3, mode: 'string' }).defaultNow().notNull(),
updatedAt: timestamp('updated_at', { precision: 3, mode: 'string' }).notNull(),
role: role('role'),
preferences: jsonb('preferences'),
auth: jsonb('auth'),
invitedBy: text('invitedBy'),
},
(table) => {
return {
emailKey: uniqueIndex('users_email_key').on(table.email),
};
},
);

export const userRelations = relations(users, ({ one, many }) => ({
invitee: one(users, {
fields: [users.invitedBy],
references: [users.id],
}),
// followers: many(users, {
// relationName: 'followers',
// }),
// following: many(users, {
// relationName: 'following',
// }),
posts: many(post),
comments: many(comment),
likes: many(like),
}));
this seem to not work and im told to give more information about relation "user.followers"
2 replies