From e19d4357c88653539778fe142551b9baf54096de Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Tue, 9 Apr 2024 10:50:40 +0800 Subject: [PATCH 1/2] Add rules and email addresses to admin --- pkg/admin/src/db.ts | 145 +++++++++++++++++++++++++++++------------ pkg/admin/src/index.ts | 12 ++-- 2 files changed, 111 insertions(+), 46 deletions(-) diff --git a/pkg/admin/src/db.ts b/pkg/admin/src/db.ts index 6a56e8e90..eb4ce7dd9 100644 --- a/pkg/admin/src/db.ts +++ b/pkg/admin/src/db.ts @@ -44,7 +44,6 @@ export const registerDatabase = async (secrets: any): Promise => { AdminUser, User, UserProfile, - UserArticle, ReceivedEmail, ContentDisplayReport, Group, @@ -55,6 +54,8 @@ export const registerDatabase = async (secrets: any): Promise => { Recommendation, GroupMembership, Features, + EmailAddress, + Rule, ], }) @@ -113,9 +114,6 @@ export class User extends BaseEntity { @Column({ type: 'enum', enum: StatusType }) status!: StatusType - @OneToMany(() => UserArticle, (ua) => ua.user) - articles!: UserArticle[] - @Column({ type: 'text' }) source_user_id!: string @@ -132,42 +130,17 @@ export class UserProfile extends BaseEntity { public username!: string @JoinColumn({ name: 'user_id' }) - @ManyToOne(() => User, (user) => user.articles, { eager: true }) + @ManyToOne(() => User, { eager: true }) user!: User } -@Entity({ name: 'user_articles' }) -export class UserArticle extends BaseEntity { - @PrimaryGeneratedColumn('uuid') - id!: string - - @JoinColumn({ name: 'user_id' }) - @ManyToOne(() => User, (user) => user.articles, { eager: true }) - user!: User - - @Column({ type: 'text', name: 'article_id' }) - articleId!: string - - @Column({ type: 'text' }) - slug!: string - - @Column({ type: 'timestamp', name: 'created_at' }) - createdAt!: Date - - @Column({ type: 'timestamp', name: 'updated_at' }) - updatedAt!: Date - - @Column({ type: 'timestamp', name: 'saved_at' }) - savedAt!: Date -} - @Entity({ name: 'content_display_report' }) export class ContentDisplayReport extends BaseEntity { @PrimaryGeneratedColumn('uuid') id!: string @JoinColumn({ name: 'user_id' }) - @ManyToOne(() => User, (user) => user.articles, { eager: true }) + @ManyToOne(() => User, { eager: true }) user!: User @Column({ type: 'text', name: 'original_url' }) @@ -189,7 +162,7 @@ export class ReceivedEmail extends BaseEntity { id!: string @JoinColumn({ name: 'user_id' }) - @ManyToOne(() => User, (user) => user.articles, { eager: true }) + @ManyToOne(() => User, { eager: true }) user!: User @Column('text') @@ -254,7 +227,7 @@ export class Integration extends BaseEntity { id!: string @JoinColumn({ name: 'user_id' }) - @ManyToOne(() => User, (user) => user.articles, { eager: true }) + @ManyToOne(() => User, { eager: true }) user!: User @Column('varchar', { length: 40 }) @@ -293,7 +266,7 @@ export class Subscription extends BaseEntity { id!: string @JoinColumn({ name: 'user_id' }) - @ManyToOne(() => User, (user) => user.articles, { eager: true }) + @ManyToOne(() => User, { eager: true }) user!: User @Column('text') @@ -335,7 +308,7 @@ export class LibraryItem extends BaseEntity { id!: string @JoinColumn({ name: 'user_id' }) - @ManyToOne(() => User, (user) => user.articles, { eager: true }) + @ManyToOne(() => User, { eager: true }) user!: User @Column({ type: 'enum', enum: LibraryItemState }) @@ -382,7 +355,7 @@ export class UploadFile extends BaseEntity { id!: string @JoinColumn({ name: 'user_id' }) - @ManyToOne(() => User, (user) => user.articles, { eager: true }) + @ManyToOne(() => User, { eager: true }) user!: User @Column('text') @@ -410,15 +383,15 @@ export class Recommendation extends BaseEntity { id!: string @JoinColumn({ name: 'recommender_id' }) - @ManyToOne(() => User, (user) => user.articles, { eager: true }) + @ManyToOne(() => User, { eager: true }) recommender!: User @JoinColumn({ name: 'library_item_id' }) - @ManyToOne(() => User, (user) => user.articles, { eager: true }) + @ManyToOne(() => User, { eager: true }) libraryItem!: LibraryItem @JoinColumn({ name: 'group_id' }) - @ManyToOne(() => User, (user) => user.articles, { eager: true }) + @ManyToOne(() => User, { eager: true }) group!: Group @Column('text', { nullable: true }) @@ -434,7 +407,7 @@ export class GroupMembership extends BaseEntity { id!: string @JoinColumn({ name: 'user_id' }) - @ManyToOne(() => User, (user) => user.articles, { eager: true }) + @ManyToOne(() => User, { eager: true }) user!: User @JoinColumn({ name: 'group_id' }) @@ -456,7 +429,7 @@ export class Features extends BaseEntity { id!: string @JoinColumn({ name: 'user_id' }) - @ManyToOne(() => User, (user) => user.articles, { eager: true }) + @ManyToOne(() => User, { eager: true }) user!: User @Column('text') @@ -474,3 +447,93 @@ export class Features extends BaseEntity { @Column({ type: 'timestamp', name: 'updated_at' }) updatedAt!: Date } + +@Entity({ name: 'newsletter_emails' }) +export class EmailAddress extends BaseEntity { + @PrimaryGeneratedColumn('uuid') + id!: string + + @JoinColumn({ name: 'user_id' }) + @ManyToOne(() => User) + user!: User + + @Column('varchar') + address!: string + + @Column('text') + folder?: string | null + + @Column('text') + name?: string | null + + @Column('text') + description?: string | null + + @Column({ type: 'timestamp', name: 'created_at' }) + createdAt!: Date + + @Column({ type: 'timestamp', name: 'updated_at' }) + updatedAt!: Date +} + +@Entity({ name: 'rules' }) +export class Rule extends BaseEntity { + @PrimaryGeneratedColumn('uuid') + id!: string + + @JoinColumn({ name: 'user_id' }) + @ManyToOne(() => User) + user!: User + + @Column('varchar') + name!: string + + @Column('text') + filter!: string + + @Column({ type: 'timestamp', name: 'created_at' }) + createdAt!: Date + + @Column({ type: 'timestamp', name: 'updated_at' }) + updatedAt!: Date + + @Column({ type: 'timestamp', name: 'failed_at' }) + failedAt?: Date +} + +// @Entity({ name: 'rules' }) +// export class Rule { +// @PrimaryGeneratedColumn('uuid') +// id!: string + +// // @ManyToOne(() => User, { onDelete: 'CASCADE' }) +// // @JoinColumn({ name: 'user_id' }) +// // user!: User + +// @Column('text') +// name!: string + +// // @Column('text') +// // filter!: string + +// // @Column('simple-json') +// // actions!: RuleAction[] + +// @Column('text', { nullable: true }) +// description?: string | null + +// // @Column('text', { array: true }) +// // eventTypes!: RuleEventType[] + +// // @Column('boolean', { default: true }) +// // enabled!: boolean + +// // @Column({ type: 'timestamp', name: 'created_at' }) +// // createdAt!: Date + +// // @Column({ type: 'timestamp', name: 'updated_at' }) +// // updatedAt!: Date + +// // @Column({ type: 'timestamp', name: 'failed_at' }) +// // failedAt?: Date +// } diff --git a/pkg/admin/src/index.ts b/pkg/admin/src/index.ts index d6b5fcd07..662cb8180 100644 --- a/pkg/admin/src/index.ts +++ b/pkg/admin/src/index.ts @@ -5,7 +5,6 @@ import { registerDatabase, AdminUser, User, - UserArticle, UserProfile, ReceivedEmail, Group, @@ -16,6 +15,8 @@ import { Recommendation, GroupMembership, Features, + EmailAddress, + Rule, } from './db' import { compare, hashSync } from 'bcryptjs' const readYamlFile = require('read-yaml-file') @@ -33,6 +34,9 @@ const ADMIN_USER_EMAIL = databases: [db], rootPath: '/admin', resources: [ + { + resource: ContentDisplayReport, + }, { resource: User, options: { @@ -40,18 +44,16 @@ const ADMIN_USER_EMAIL = }, }, { resource: UserProfile, options: { parent: { name: 'Users' } } }, - { resource: UserArticle, options: { parent: { name: 'Users' } } }, { resource: ReceivedEmail, options: { parent: { name: 'Users' } } }, { resource: Group, options: { parent: { name: 'Users' } } }, { resource: Subscription, options: { parent: { name: 'Users' } } }, { resource: Integration, options: { parent: { name: 'Users' } } }, { resource: LibraryItem, options: { parent: { name: 'Users' } } }, - { - resource: ContentDisplayReport, - }, { resource: Recommendation, options: { parent: { name: 'Users' } } }, { resource: GroupMembership, options: { parent: { name: 'Users' } } }, { resource: Features, options: { parent: { name: 'Users' } } }, + { resource: EmailAddress, options: { parent: { name: 'Users' } } }, + { resource: Rule, options: { parent: { name: 'Users' } } }, ], }) From 5d6c2ba7f8ee12160a72404584a72e2ea261ed95 Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Tue, 9 Apr 2024 11:16:47 +0800 Subject: [PATCH 2/2] Remove commented out items --- pkg/admin/src/db.ts | 37 ------------------------------------- 1 file changed, 37 deletions(-) diff --git a/pkg/admin/src/db.ts b/pkg/admin/src/db.ts index eb4ce7dd9..78f55c4c7 100644 --- a/pkg/admin/src/db.ts +++ b/pkg/admin/src/db.ts @@ -500,40 +500,3 @@ export class Rule extends BaseEntity { @Column({ type: 'timestamp', name: 'failed_at' }) failedAt?: Date } - -// @Entity({ name: 'rules' }) -// export class Rule { -// @PrimaryGeneratedColumn('uuid') -// id!: string - -// // @ManyToOne(() => User, { onDelete: 'CASCADE' }) -// // @JoinColumn({ name: 'user_id' }) -// // user!: User - -// @Column('text') -// name!: string - -// // @Column('text') -// // filter!: string - -// // @Column('simple-json') -// // actions!: RuleAction[] - -// @Column('text', { nullable: true }) -// description?: string | null - -// // @Column('text', { array: true }) -// // eventTypes!: RuleEventType[] - -// // @Column('boolean', { default: true }) -// // enabled!: boolean - -// // @Column({ type: 'timestamp', name: 'created_at' }) -// // createdAt!: Date - -// // @Column({ type: 'timestamp', name: 'updated_at' }) -// // updatedAt!: Date - -// // @Column({ type: 'timestamp', name: 'failed_at' }) -// // failedAt?: Date -// }