Add rules and email addresses to admin

This commit is contained in:
Jackson Harper
2024-04-09 10:50:40 +08:00
parent 671aeda76f
commit e19d4357c8
2 changed files with 111 additions and 46 deletions

View File

@ -44,7 +44,6 @@ export const registerDatabase = async (secrets: any): Promise<Connection> => {
AdminUser,
User,
UserProfile,
UserArticle,
ReceivedEmail,
ContentDisplayReport,
Group,
@ -55,6 +54,8 @@ export const registerDatabase = async (secrets: any): Promise<Connection> => {
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
// }

View File

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