Merge pull request #3805 from omnivore-app/feat/admin-tables

Add rules and email addresses to admin
This commit is contained in:
Jackson Harper 2024-04-09 11:51:57 +08:00 committed by GitHub
commit 08aa5521d5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 74 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,56 @@ 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
}

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