From f129b0d7f6f126bb2efb77b8b19df835a4db1716 Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Fri, 15 Sep 2023 21:53:49 +0800 Subject: [PATCH] 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 +}