From 6597cc37b6885c0c8bc82c43cdcc626088b42425 Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Tue, 22 Mar 2022 18:43:47 +0800 Subject: [PATCH] add created_at and updated_at to newsletter emails and sort by created_at desc --- packages/api/src/entity/newsletter_email.ts | 12 ++++++++++-- packages/api/src/services/newsletters.ts | 5 ++++- .../api/test/resolvers/newsletters.test.ts | 18 ++++++++++-------- ....do.add_created_at_to_newsletter_emails.sql | 13 +++++++++++++ ...ndo.add_created_at_to_newsletter_emails.sql | 11 +++++++++++ 5 files changed, 48 insertions(+), 11 deletions(-) create mode 100755 packages/db/migrations/0075.do.add_created_at_to_newsletter_emails.sql create mode 100755 packages/db/migrations/0075.undo.add_created_at_to_newsletter_emails.sql diff --git a/packages/api/src/entity/newsletter_email.ts b/packages/api/src/entity/newsletter_email.ts index d9bd5050d..d69e97298 100644 --- a/packages/api/src/entity/newsletter_email.ts +++ b/packages/api/src/entity/newsletter_email.ts @@ -1,10 +1,12 @@ import { - Entity, BaseEntity, Column, - ManyToOne, + CreateDateColumn, + Entity, JoinColumn, + ManyToOne, PrimaryGeneratedColumn, + UpdateDateColumn, } from 'typeorm' import { User } from './user' @@ -22,4 +24,10 @@ export class NewsletterEmail extends BaseEntity { @Column('varchar', { nullable: true }) confirmationCode?: string + + @CreateDateColumn() + createdAt!: Date + + @UpdateDateColumn() + updatedAt!: Date } diff --git a/packages/api/src/services/newsletters.ts b/packages/api/src/services/newsletters.ts index ee31f4a49..1ff5949d6 100644 --- a/packages/api/src/services/newsletters.ts +++ b/packages/api/src/services/newsletters.ts @@ -30,7 +30,10 @@ export const createNewsletterEmail = async ( export const getNewsletterEmails = async ( userId: string ): Promise => { - return getRepository(NewsletterEmail).find({ where: { user: userId } }) + return getRepository(NewsletterEmail).find({ + where: { user: userId }, + order: { createdAt: 'DESC' }, + }) } export const deleteNewsletterEmail = async (id: string): Promise => { diff --git a/packages/api/test/resolvers/newsletters.test.ts b/packages/api/test/resolvers/newsletters.test.ts index 3999e32b2..8c8a8d199 100644 --- a/packages/api/test/resolvers/newsletters.test.ts +++ b/packages/api/test/resolvers/newsletters.test.ts @@ -61,16 +61,18 @@ describe('Newsletters API', () => { } ` - it('responds with newsletter emails', async () => { + it('responds with newsletter emails sort by created_at desc', async () => { const response = await graphqlRequest(query, authToken).expect(200) expect(response.body.data.newsletterEmails.newsletterEmails).to.eqls( - newsletterEmails.map((value) => { - return { - id: value.id, - address: value.address, - confirmationCode: value.confirmationCode, - } - }) + newsletterEmails + .sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime()) + .map((value) => { + return { + id: value.id, + address: value.address, + confirmationCode: value.confirmationCode, + } + }) ) }) diff --git a/packages/db/migrations/0075.do.add_created_at_to_newsletter_emails.sql b/packages/db/migrations/0075.do.add_created_at_to_newsletter_emails.sql new file mode 100755 index 000000000..97bebe015 --- /dev/null +++ b/packages/db/migrations/0075.do.add_created_at_to_newsletter_emails.sql @@ -0,0 +1,13 @@ +-- Type: DO +-- Name: add_created_at_to_newsletter_emails +-- Description: Add created_at and updated_at fields to newsletter_emails table + +BEGIN; + +ALTER TABLE omnivore.newsletter_emails + ADD COLUMN created_at timestamptz NOT NULL default current_timestamp, + ADD COLUMN updated_at timestamptz NOT NULL default current_timestamp; + +CREATE TRIGGER newsletter_emails_modtime BEFORE UPDATE ON omnivore.newsletter_emails FOR EACH ROW EXECUTE PROCEDURE update_updated_at_column(); + +COMMIT; diff --git a/packages/db/migrations/0075.undo.add_created_at_to_newsletter_emails.sql b/packages/db/migrations/0075.undo.add_created_at_to_newsletter_emails.sql new file mode 100755 index 000000000..7b6385f12 --- /dev/null +++ b/packages/db/migrations/0075.undo.add_created_at_to_newsletter_emails.sql @@ -0,0 +1,11 @@ +-- Type: UNDO +-- Name: add_created_at_to_newsletter_emails +-- Description: Add created_at and updated_at fields to newsletter_emails table + +BEGIN; + +ALTER TABLE omnivore.newsletter_emails + DROP COLUMN created_at, + DROP COLUMN updated_at; + +COMMIT;