From 23c527c345ca820dc827b61d5bc5ba5bd08d104e Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Thu, 17 Nov 2022 15:04:44 +0800 Subject: [PATCH] Add rule entity --- packages/api/src/entity/rule.ts | 38 ++++++++++++++++++++++++ packages/db/migrations/0099.do.rules.sql | 10 +++++-- 2 files changed, 45 insertions(+), 3 deletions(-) create mode 100644 packages/api/src/entity/rule.ts diff --git a/packages/api/src/entity/rule.ts b/packages/api/src/entity/rule.ts new file mode 100644 index 000000000..fe19b360d --- /dev/null +++ b/packages/api/src/entity/rule.ts @@ -0,0 +1,38 @@ +import { + Column, + CreateDateColumn, + Entity, + JoinColumn, + ManyToOne, + PrimaryGeneratedColumn, + UpdateDateColumn, +} from 'typeorm' +import { User } from './user' + +@Entity({ name: 'rules' }) +export class Rule { + @PrimaryGeneratedColumn('uuid') + id!: string + + @ManyToOne(() => User, { onDelete: 'CASCADE' }) + @JoinColumn({ name: 'user_id' }) + user!: User + + @Column('text') + query!: string + + @Column('text', { array: true }) + actions!: string[] + + @Column('text', { nullable: true }) + description?: string | null + + @Column('boolean', { default: true }) + enabled!: boolean + + @CreateDateColumn({ default: () => 'CURRENT_TIMESTAMP' }) + createdAt!: Date + + @UpdateDateColumn({ default: () => 'CURRENT_TIMESTAMP' }) + updatedAt!: Date +} diff --git a/packages/db/migrations/0099.do.rules.sql b/packages/db/migrations/0099.do.rules.sql index 659d94980..9ddcd50f9 100755 --- a/packages/db/migrations/0099.do.rules.sql +++ b/packages/db/migrations/0099.do.rules.sql @@ -7,13 +7,17 @@ BEGIN; CREATE TABLE omnivore.rules ( id uuid PRIMARY KEY DEFAULT uuid_generate_v1mc(), user_id uuid NOT NULL REFERENCES omnivore.user ON DELETE CASCADE, - name text NOT NULL, description text, query text NOT NULL, - actions text NOT NULL, + actions text[] NOT NULL, enabled boolean NOT NULL DEFAULT true, created_at timestamptz NOT NULL DEFAULT current_timestamp, - updated_at timestamptz NOT NULL DEFAULT current_timestamp, + updated_at timestamptz NOT NULL DEFAULT current_timestamp ); +CREATE TRIGGER rules_modtime BEFORE UPDATE ON omnivore.rules + FOR EACH ROW EXECUTE PROCEDURE update_updated_at_column(); + +GRANT SELECT, INSERT, UPDATE, DELETE ON omnivore.rules TO omnivore_user; + COMMIT;