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:
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
Was this page helpful?