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' } } }, ], })