From f129b0d7f6f126bb2efb77b8b19df835a4db1716 Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Fri, 15 Sep 2023 21:53:49 +0800 Subject: [PATCH 1/5] Add subscription models --- pkg/admin/src/db.ts | 55 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/pkg/admin/src/db.ts b/pkg/admin/src/db.ts index 73c0a2b2f..038e656ab 100644 --- a/pkg/admin/src/db.ts +++ b/pkg/admin/src/db.ts @@ -257,3 +257,58 @@ export class Integration extends BaseEntity { @Column({ name: 'synced_at', type: 'timestamp', nullable: true }) syncedAt?: Date | null } + +enum SubscriptionStatus { + Active = 'ACTIVE', + Deleted = 'DELETED', + Unsubscribed = 'UNSUBSCRIBED', +} + +enum SubscriptionType { + Newsletter = 'NEWSLETTER', + Rss = 'RSS', +} + +@Entity({ name: 'subscriptions' }) +export class Subscription extends BaseEntity { + @PrimaryGeneratedColumn('uuid') + id!: string + + @JoinColumn({ name: 'user_id' }) + user!: User + + @Column('text') + name!: string + + @Column('enum', { + enum: SubscriptionStatus, + default: SubscriptionStatus.Active, + }) + status!: SubscriptionStatus + + @Column('text', { nullable: true }) + description?: string + + @Column('text', { nullable: true }) + url?: string + + @Column('text', { nullable: true }) + icon?: string + + @Column('enum', { + enum: SubscriptionType, + }) + type!: SubscriptionType + + @Column('integer', { default: 0 }) + count!: number + + @Column('timestamp', { nullable: true }) + lastFetchedAt?: Date | null + + @Column({ type: 'timestamp', name: 'created_at' }) + createdAt!: Date + + @Column({ type: 'timestamp', name: 'updated_at' }) + updatedAt!: Date +} From f1deca700a936b04fc5f826cf419bbfe5df05621 Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Fri, 15 Sep 2023 21:54:12 +0800 Subject: [PATCH 2/5] Register subscriptions --- pkg/admin/src/db.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/admin/src/db.ts b/pkg/admin/src/db.ts index 038e656ab..a9313f4ff 100644 --- a/pkg/admin/src/db.ts +++ b/pkg/admin/src/db.ts @@ -49,6 +49,7 @@ export const registerDatabase = async (secrets: any): Promise => { ContentDisplayReport, Group, Integration, + Subscription, ], }) From eb604fff849702ef73b5a26b1161535972ff1836 Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Fri, 15 Sep 2023 22:12:25 +0800 Subject: [PATCH 3/5] Fix last fetch at column --- pkg/admin/src/db.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/admin/src/db.ts b/pkg/admin/src/db.ts index a9313f4ff..8902eea38 100644 --- a/pkg/admin/src/db.ts +++ b/pkg/admin/src/db.ts @@ -304,7 +304,7 @@ export class Subscription extends BaseEntity { @Column('integer', { default: 0 }) count!: number - @Column('timestamp', { nullable: true }) + @Column({ type: 'timestamp', name: 'last_fetched_at', nullable: true }) lastFetchedAt?: Date | null @Column({ type: 'timestamp', name: 'created_at' }) From ce3f1f789c370e3203acc9b66c36c1b5d8709b61 Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Fri, 15 Sep 2023 22:21:31 +0800 Subject: [PATCH 4/5] Add subscription and integration to user --- pkg/admin/src/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkg/admin/src/index.ts b/pkg/admin/src/index.ts index c1b128727..687ddfb59 100644 --- a/pkg/admin/src/index.ts +++ b/pkg/admin/src/index.ts @@ -10,6 +10,8 @@ import { ReceivedEmail, Group, ContentDisplayReport, + Subscription, + Integration, } from './db' import { compare, hashSync } from 'bcryptjs' const readYamlFile = require('read-yaml-file') @@ -37,6 +39,8 @@ const ADMIN_USER_EMAIL = { 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: ContentDisplayReport, }, From 166a45f142c389744613cbc2f242762d00f75d72 Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Fri, 15 Sep 2023 22:33:16 +0800 Subject: [PATCH 5/5] Join user on subscription --- pkg/admin/src/db.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/admin/src/db.ts b/pkg/admin/src/db.ts index 8902eea38..c38abe198 100644 --- a/pkg/admin/src/db.ts +++ b/pkg/admin/src/db.ts @@ -276,6 +276,7 @@ export class Subscription extends BaseEntity { id!: string @JoinColumn({ name: 'user_id' }) + @ManyToOne(() => User, (user) => user.articles, { eager: true }) user!: User @Column('text')