How to do inserts in many-to-many relations ?
I'm new to Drizzle and I don't really know if my tables relation is correct or not.
Here's the schema:
I chose to use a many-to-many relation because a music can have multiple authors and an author can have multiple music. Is my schema correct ?
Insert in comment
Here's the schema:
export const musics = pgTable('musics', {
id: serial('id').primaryKey(),
url: text('url').notNull().unique(),
number: integer('number').notNull(),
title: text('title').notNull(),
duration: integer('duration').notNull(),
albumId: serial('album_id')
.notNull()
.references(() => albums.id, { onDelete: 'cascade' }),
});
export const musicsRelations = relations(musics, ({ one, many }) => ({
album: one(albums, { fields: [musics.albumId], references: [albums.id] }),
musicsToAuthors: many(musicsToAuthors),
}));
export const authors = pgTable('authors', {
id: serial('id').primaryKey(),
name: text('name').notNull().unique(),
});
export const authorsRelations = relations(authors, ({ many }) => ({
musicsToAuthors: many(musicsToAuthors),
}));
export const musicsToAuthors = pgTable(
'musics_to_authors',
{
musicId: integer('music_id')
.notNull()
.references(() => musics.id),
authorId: integer('author_id')
.notNull()
.references(() => authors.id),
},
(t) => ({
pk: primaryKey(t.musicId, t.authorId),
}),
);
export const musicToAuthorRelations = relations(musicsToAuthors, ({ one }) => ({
music: one(musics, {
fields: [musicsToAuthors.musicId],
references: [musics.id],
}),
author: one(authors, {
fields: [musicsToAuthors.authorId],
references: [authors.id],
}),
}));export const musics = pgTable('musics', {
id: serial('id').primaryKey(),
url: text('url').notNull().unique(),
number: integer('number').notNull(),
title: text('title').notNull(),
duration: integer('duration').notNull(),
albumId: serial('album_id')
.notNull()
.references(() => albums.id, { onDelete: 'cascade' }),
});
export const musicsRelations = relations(musics, ({ one, many }) => ({
album: one(albums, { fields: [musics.albumId], references: [albums.id] }),
musicsToAuthors: many(musicsToAuthors),
}));
export const authors = pgTable('authors', {
id: serial('id').primaryKey(),
name: text('name').notNull().unique(),
});
export const authorsRelations = relations(authors, ({ many }) => ({
musicsToAuthors: many(musicsToAuthors),
}));
export const musicsToAuthors = pgTable(
'musics_to_authors',
{
musicId: integer('music_id')
.notNull()
.references(() => musics.id),
authorId: integer('author_id')
.notNull()
.references(() => authors.id),
},
(t) => ({
pk: primaryKey(t.musicId, t.authorId),
}),
);
export const musicToAuthorRelations = relations(musicsToAuthors, ({ one }) => ({
music: one(musics, {
fields: [musicsToAuthors.musicId],
references: [musics.id],
}),
author: one(authors, {
fields: [musicsToAuthors.authorId],
references: [authors.id],
}),
}));I chose to use a many-to-many relation because a music can have multiple authors and an author can have multiple music. Is my schema correct ?
Insert in comment