How to query join table with db.query syntax?
Here is my schema for User, Library and LibraryUser tables..
import { relations } from "drizzle-orm";
import { uniqueIndex, uuid, varchar } from "drizzle-orm/pg-core";
import { LibraryAlbum } from "./library-album";
import { LibraryArtist } from "./library-artist";
import { LibraryPath } from "./library-path";
import { LibraryTrack } from "./library-track";
import { LibraryUser } from "./library-user";
import { schema } from "./schema";
export const Library = schema.table("library", {
id: uuid("id").primaryKey().notNull().unique().defaultRandom(),
name: varchar("name", { length: 255 }).notNull(),
}, (table) => {
return {
library_index: uniqueIndex("library_index").on(table.name),
};
});
export const LibraryRelation = relations(Library, ({ many }) => ({
users: many(LibraryUser),
paths: many(LibraryPath),
tracks: many(LibraryTrack),
albums: many(LibraryAlbum),
artists: many(LibraryArtist),
}));import { relations } from "drizzle-orm";
import { uniqueIndex, uuid, varchar } from "drizzle-orm/pg-core";
import { LibraryAlbum } from "./library-album";
import { LibraryArtist } from "./library-artist";
import { LibraryPath } from "./library-path";
import { LibraryTrack } from "./library-track";
import { LibraryUser } from "./library-user";
import { schema } from "./schema";
export const Library = schema.table("library", {
id: uuid("id").primaryKey().notNull().unique().defaultRandom(),
name: varchar("name", { length: 255 }).notNull(),
}, (table) => {
return {
library_index: uniqueIndex("library_index").on(table.name),
};
});
export const LibraryRelation = relations(Library, ({ many }) => ({
users: many(LibraryUser),
paths: many(LibraryPath),
tracks: many(LibraryTrack),
albums: many(LibraryAlbum),
artists: many(LibraryArtist),
}));import { relations } from "drizzle-orm";
import { primaryKey, uuid } from "drizzle-orm/pg-core";
import { Library } from "./library";
import { schema } from "./schema";
import { User } from "./users";
export const LibraryUser = schema.table("library_user", {
library_id: uuid("library_id").references(() => Library.id, { onDelete: "cascade" }).notNull(),
user_id: uuid("user_id").references(() => User.id, { onDelete: "cascade" }).notNull(),
}, (table) => ({
pk: primaryKey({ columns: [table.user_id, table.library_id] }),
}));
export const LibraryUserRelation = relations(LibraryUser, ({ one }) => ({
library: one(Library, {
fields: [LibraryUser.library_id],
references: [Library.id],
}),
user: one(User, {
fields: [LibraryUser.user_id],
references: [User.id],
}),
}));import { relations } from "drizzle-orm";
import { primaryKey, uuid } from "drizzle-orm/pg-core";
import { Library } from "./library";
import { schema } from "./schema";
import { User } from "./users";
export const LibraryUser = schema.table("library_user", {
library_id: uuid("library_id").references(() => Library.id, { onDelete: "cascade" }).notNull(),
user_id: uuid("user_id").references(() => User.id, { onDelete: "cascade" }).notNull(),
}, (table) => ({
pk: primaryKey({ columns: [table.user_id, table.library_id] }),
}));
export const LibraryUserRelation = relations(LibraryUser, ({ one }) => ({
library: one(Library, {
fields: [LibraryUser.library_id],
references: [Library.id],
}),
user: one(User, {
fields: [LibraryUser.user_id],
references: [User.id],
}),
}));