diff --git a/packages/api/src/entity/label.ts b/packages/api/src/entity/label.ts index b7081e0a7..27ee04da9 100644 --- a/packages/api/src/entity/label.ts +++ b/packages/api/src/entity/label.ts @@ -4,6 +4,8 @@ import { CreateDateColumn, Entity, JoinColumn, + JoinTable, + ManyToMany, ManyToOne, PrimaryGeneratedColumn, } from 'typeorm' @@ -22,9 +24,15 @@ export class Label extends BaseEntity { @JoinColumn({ name: 'user_id' }) user!: User - @ManyToOne(() => Link) - @JoinColumn({ name: 'link_id' }) - link!: Link + @ManyToMany(() => Link, (link) => link.labels) + @JoinTable({ name: 'link_labels' }) + link?: Link + + @Column('text') + color!: string + + @Column('text') + description?: string @CreateDateColumn() createdAt!: Date diff --git a/packages/api/src/entity/link.ts b/packages/api/src/entity/link.ts index cc3550cb1..fcd9ee2f4 100644 --- a/packages/api/src/entity/link.ts +++ b/packages/api/src/entity/link.ts @@ -15,7 +15,8 @@ import { CreateDateColumn, Entity, JoinColumn, - OneToMany, + JoinTable, + ManyToMany, OneToOne, PrimaryGeneratedColumn, UpdateDateColumn, @@ -62,6 +63,7 @@ export class Link extends BaseEntity { @UpdateDateColumn() updatedAt?: Date - @OneToMany(() => Label, (label) => label.link) + @ManyToMany(() => Label, (label) => label.link) + @JoinTable({ name: 'link_labels' }) labels?: Label[] } diff --git a/packages/db/migrations/0070.do.update_labels_table.sql b/packages/db/migrations/0070.do.update_labels_table.sql index 617376715..b3b5518d2 100755 --- a/packages/db/migrations/0070.do.update_labels_table.sql +++ b/packages/db/migrations/0070.do.update_labels_table.sql @@ -6,7 +6,7 @@ BEGIN; ALTER TABLE omnivore.labels DROP COLUMN link_id, - ADD COLUMN color text, + ADD COLUMN color text NOT NULL, ADD COLUMN description text, ADD CONSTRAINT label_name_unique UNIQUE (user_id, name);