diff --git a/packages/api/src/entity/search_filter.ts b/packages/api/src/entity/search_filter.ts new file mode 100644 index 000000000..8f4ed528f --- /dev/null +++ b/packages/api/src/entity/search_filter.ts @@ -0,0 +1,37 @@ +import { + Column, + CreateDateColumn, + Entity, + JoinColumn, + ManyToOne, + PrimaryGeneratedColumn, + Unique, + UpdateDateColumn, +} from 'typeorm' +import { User } from './user' + +@Entity({ name: 'search_filter' }) +@Unique('search_filter_unique_key', ['user', 'name']) +export class SearchFilter { + @PrimaryGeneratedColumn('uuid') + id!: string + + @ManyToOne(() => User, { onDelete: 'CASCADE' }) + @JoinColumn({ name: 'user_id' }) + user!: User + + @Column('varchar', { length: 255 }) + name!: string + + @Column('varchar', { length: 255, nullable: true }) + description?: string | null + + @Column('varchar', { length: 255 }) + filter!: string + + @CreateDateColumn({ default: () => 'CURRENT_TIMESTAMP' }) + createdAt!: Date + + @UpdateDateColumn({ default: () => 'CURRENT_TIMESTAMP' }) + updatedAt!: Date +} diff --git a/packages/db/migrations/0100.do.search_filters.sql b/packages/db/migrations/0100.do.search_filters.sql new file mode 100755 index 000000000..dcf717340 --- /dev/null +++ b/packages/db/migrations/0100.do.search_filters.sql @@ -0,0 +1,23 @@ +-- Type: DO +-- Name: search_filters +-- Description: Create search_filters table + +BEGIN; + +CREATE TABLE omnivore.search_filters ( + id uuid PRIMARY KEY DEFAULT uuid_generate_v1mc(), + user_id uuid NOT NULL REFERENCES omnivore.user ON DELETE CASCADE, + name character varying(255) NOT NULL, + description character varying(255), + filter character varying(255) NOT NULL, + created_at timestamptz NOT NULL DEFAULT current_timestamp, + updated_at timestamptz NOT NULL DEFAULT current_timestamp, + UNIQUE (user_id, name) +); + +CREATE TRIGGER search_filters_modtime BEFORE UPDATE ON omnivore.search_filters + FOR EACH ROW EXECUTE PROCEDURE update_updated_at_column(); + +GRANT SELECT, INSERT, UPDATE, DELETE ON omnivore.search_filters TO omnivore_user; + +COMMIT; diff --git a/packages/db/migrations/0100.undo.search_filters.sql b/packages/db/migrations/0100.undo.search_filters.sql new file mode 100755 index 000000000..b08361352 --- /dev/null +++ b/packages/db/migrations/0100.undo.search_filters.sql @@ -0,0 +1,9 @@ +-- Type: UNDO +-- Name: search_filters +-- Description: Create search_filters table + +BEGIN; + +DROP TABLE IF EXISTS omnivore.search_filters; + +COMMIT;