chore: changed properties to embedProperties in shortcode model

This commit is contained in:
Balu Babu
2023-11-06 13:18:14 +05:30
parent 2064af92fc
commit 3eef6c9b04
6 changed files with 27 additions and 56 deletions

View File

@@ -1,16 +0,0 @@
/*
Warnings:
- A unique constraint covering the columns `[id]` on the table `Shortcode` will be added. If there are existing duplicate values, this will fail.
- Added the required column `updatedOn` to the `Shortcode` table without a default value. This is not possible if the table is not empty.
*/
-- AlterTable
ALTER TABLE "Shortcode" ADD COLUMN "properties" JSONB,
ADD COLUMN "updatedOn" TIMESTAMP(3) NOT NULL;
-- CreateIndex
CREATE UNIQUE INDEX "Shortcode_id_key" ON "Shortcode"("id");
-- AddForeignKey
ALTER TABLE "Shortcode" ADD CONSTRAINT "Shortcode_creatorUid_fkey" FOREIGN KEY ("creatorUid") REFERENCES "User"("uid") ON DELETE SET NULL ON UPDATE CASCADE;

View File

@@ -68,13 +68,13 @@ model TeamRequest {
} }
model Shortcode { model Shortcode {
id String @id @unique id String @id @unique
request Json request Json
properties Json? // if properties is null, SharedRequest is an shortcode else embed embedProperties Json?
creatorUid String? creatorUid String?
User User? @relation(fields: [creatorUid], references: [uid]) User User? @relation(fields: [creatorUid], references: [uid])
createdOn DateTime @default(now()) createdOn DateTime @default(now())
updatedOn DateTime @updatedAt updatedOn DateTime @updatedAt
@@unique(fields: [id, creatorUid], name: "creator_uid_shortcode_unique") @@unique(fields: [id, creatorUid], name: "creator_uid_shortcode_unique")
} }

View File

@@ -1,5 +1,4 @@
import { Module } from '@nestjs/common'; import { Module } from '@nestjs/common';
import { JwtModule } from '@nestjs/jwt';
import { PrismaModule } from 'src/prisma/prisma.module'; import { PrismaModule } from 'src/prisma/prisma.module';
import { PubSubModule } from 'src/pubsub/pubsub.module'; import { PubSubModule } from 'src/pubsub/pubsub.module';
import { UserModule } from 'src/user/user.module'; import { UserModule } from 'src/user/user.module';
@@ -7,14 +6,7 @@ import { ShortcodeResolver } from './shortcode.resolver';
import { ShortcodeService } from './shortcode.service'; import { ShortcodeService } from './shortcode.service';
@Module({ @Module({
imports: [ imports: [PrismaModule, UserModule, PubSubModule],
PrismaModule,
UserModule,
PubSubModule,
JwtModule.register({
secret: process.env.JWT_SECRET,
}),
],
providers: [ShortcodeService, ShortcodeResolver], providers: [ShortcodeService, ShortcodeResolver],
exports: [ShortcodeService], exports: [ShortcodeService],
}) })

View File

@@ -11,14 +11,12 @@ import * as E from 'fp-ts/Either';
import { UseGuards } from '@nestjs/common'; import { UseGuards } from '@nestjs/common';
import { Shortcode } from './shortcode.model'; import { Shortcode } from './shortcode.model';
import { ShortcodeService } from './shortcode.service'; import { ShortcodeService } from './shortcode.service';
import { UserService } from 'src/user/user.service';
import { throwErr } from 'src/utils'; import { throwErr } from 'src/utils';
import { GqlUser } from 'src/decorators/gql-user.decorator'; import { GqlUser } from 'src/decorators/gql-user.decorator';
import { GqlAuthGuard } from 'src/guards/gql-auth.guard'; import { GqlAuthGuard } from 'src/guards/gql-auth.guard';
import { User } from 'src/user/user.model'; import { User } from 'src/user/user.model';
import { PubSubService } from 'src/pubsub/pubsub.service'; import { PubSubService } from 'src/pubsub/pubsub.service';
import { AuthUser } from '../types/AuthUser'; import { AuthUser } from '../types/AuthUser';
import { JwtService } from '@nestjs/jwt';
import { PaginationArgs } from 'src/types/input-types.args'; import { PaginationArgs } from 'src/types/input-types.args';
import { GqlThrottlerGuard } from 'src/guards/gql-throttler.guard'; import { GqlThrottlerGuard } from 'src/guards/gql-throttler.guard';
import { SkipThrottle } from '@nestjs/throttler'; import { SkipThrottle } from '@nestjs/throttler';
@@ -28,9 +26,7 @@ import { SkipThrottle } from '@nestjs/throttler';
export class ShortcodeResolver { export class ShortcodeResolver {
constructor( constructor(
private readonly shortcodeService: ShortcodeService, private readonly shortcodeService: ShortcodeService,
private readonly userService: UserService,
private readonly pubsub: PubSubService, private readonly pubsub: PubSubService,
private jwtService: JwtService,
) {} ) {}
/* Queries */ /* Queries */

View File

@@ -57,7 +57,7 @@ const user: AuthUser = {
const mockEmbed = { const mockEmbed = {
id: '123', id: '123',
request: '{}', request: '{}',
properties: '{}', embedProperties: '{}',
createdOn: createdOn, createdOn: createdOn,
creatorUid: user.uid, creatorUid: user.uid,
updatedOn: createdOn, updatedOn: createdOn,
@@ -66,7 +66,7 @@ const mockEmbed = {
const mockShortcode = { const mockShortcode = {
id: '123', id: '123',
request: '{}', request: '{}',
properties: null, embedProperties: null,
createdOn: createdOn, createdOn: createdOn,
creatorUid: user.uid, creatorUid: user.uid,
updatedOn: createdOn, updatedOn: createdOn,
@@ -78,7 +78,7 @@ const shortcodes = [
request: { request: {
hello: 'there', hello: 'there',
}, },
properties: { embedProperties: {
foo: 'bar', foo: 'bar',
}, },
creatorUid: user.uid, creatorUid: user.uid,
@@ -90,7 +90,7 @@ const shortcodes = [
request: { request: {
hello: 'there', hello: 'there',
}, },
properties: { embedProperties: {
foo: 'bar', foo: 'bar',
}, },
creatorUid: user.uid, creatorUid: user.uid,
@@ -109,7 +109,7 @@ describe('ShortcodeService', () => {
id: mockEmbed.id, id: mockEmbed.id,
createdOn: mockEmbed.createdOn, createdOn: mockEmbed.createdOn,
request: JSON.stringify(mockEmbed.request), request: JSON.stringify(mockEmbed.request),
properties: JSON.stringify(mockEmbed.properties), properties: JSON.stringify(mockEmbed.embedProperties),
}); });
}); });
@@ -135,13 +135,13 @@ describe('ShortcodeService', () => {
{ {
id: shortcodes[0].id, id: shortcodes[0].id,
request: JSON.stringify(shortcodes[0].request), request: JSON.stringify(shortcodes[0].request),
properties: JSON.stringify(shortcodes[0].properties), properties: JSON.stringify(shortcodes[0].embedProperties),
createdOn: shortcodes[0].createdOn, createdOn: shortcodes[0].createdOn,
}, },
{ {
id: shortcodes[1].id, id: shortcodes[1].id,
request: JSON.stringify(shortcodes[1].request), request: JSON.stringify(shortcodes[1].request),
properties: JSON.stringify(shortcodes[1].properties), properties: JSON.stringify(shortcodes[1].embedProperties),
createdOn: shortcodes[1].createdOn, createdOn: shortcodes[1].createdOn,
}, },
]); ]);
@@ -158,7 +158,7 @@ describe('ShortcodeService', () => {
{ {
id: shortcodes[1].id, id: shortcodes[1].id,
request: JSON.stringify(shortcodes[1].request), request: JSON.stringify(shortcodes[1].request),
properties: JSON.stringify(shortcodes[1].properties), properties: JSON.stringify(shortcodes[1].embedProperties),
createdOn: shortcodes[1].createdOn, createdOn: shortcodes[1].createdOn,
}, },
]); ]);
@@ -229,7 +229,7 @@ describe('ShortcodeService', () => {
id: mockEmbed.id, id: mockEmbed.id,
createdOn: mockEmbed.createdOn, createdOn: mockEmbed.createdOn,
request: JSON.stringify(mockEmbed.request), request: JSON.stringify(mockEmbed.request),
properties: JSON.stringify(mockEmbed.properties), properties: JSON.stringify(mockEmbed.embedProperties),
}); });
}); });
@@ -245,7 +245,7 @@ describe('ShortcodeService', () => {
id: mockShortcode.id, id: mockShortcode.id,
createdOn: mockShortcode.createdOn, createdOn: mockShortcode.createdOn,
request: JSON.stringify(mockShortcode.request), request: JSON.stringify(mockShortcode.request),
properties: mockShortcode.properties, properties: mockShortcode.embedProperties,
}); });
}); });
@@ -264,7 +264,7 @@ describe('ShortcodeService', () => {
id: mockShortcode.id, id: mockShortcode.id,
createdOn: mockShortcode.createdOn, createdOn: mockShortcode.createdOn,
request: JSON.stringify(mockShortcode.request), request: JSON.stringify(mockShortcode.request),
properties: mockShortcode.properties, properties: mockShortcode.embedProperties,
}, },
); );
}); });
@@ -284,7 +284,7 @@ describe('ShortcodeService', () => {
id: mockEmbed.id, id: mockEmbed.id,
createdOn: mockEmbed.createdOn, createdOn: mockEmbed.createdOn,
request: JSON.stringify(mockEmbed.request), request: JSON.stringify(mockEmbed.request),
properties: JSON.stringify(mockEmbed.properties), properties: JSON.stringify(mockEmbed.embedProperties),
}, },
); );
}); });
@@ -346,7 +346,7 @@ describe('ShortcodeService', () => {
id: mockEmbed.id, id: mockEmbed.id,
createdOn: mockEmbed.createdOn, createdOn: mockEmbed.createdOn,
request: JSON.stringify(mockEmbed.request), request: JSON.stringify(mockEmbed.request),
properties: JSON.stringify(mockEmbed.properties), properties: JSON.stringify(mockEmbed.embedProperties),
}, },
); );
}); });
@@ -404,7 +404,7 @@ describe('ShortcodeService', () => {
test('should successfully update a Shortcodes with valid inputs', async () => { test('should successfully update a Shortcodes with valid inputs', async () => {
mockPrisma.shortcode.update.mockResolvedValueOnce({ mockPrisma.shortcode.update.mockResolvedValueOnce({
...mockEmbed, ...mockEmbed,
properties: '{"foo":"bar"}', embedProperties: '{"foo":"bar"}',
}); });
const result = await shortcodeService.updateShortcode( const result = await shortcodeService.updateShortcode(
@@ -423,7 +423,7 @@ describe('ShortcodeService', () => {
test('should send pubsub message to `shortcode/{uid}/updated` on successful Update of Shortcode', async () => { test('should send pubsub message to `shortcode/{uid}/updated` on successful Update of Shortcode', async () => {
mockPrisma.shortcode.update.mockResolvedValueOnce({ mockPrisma.shortcode.update.mockResolvedValueOnce({
...mockEmbed, ...mockEmbed,
properties: '{"foo":"bar"}', embedProperties: '{"foo":"bar"}',
}); });
const result = await shortcodeService.updateShortcode( const result = await shortcodeService.updateShortcode(

View File

@@ -5,7 +5,6 @@ import * as TO from 'fp-ts/TaskOption';
import * as E from 'fp-ts/Either'; import * as E from 'fp-ts/Either';
import { PrismaService } from 'src/prisma/prisma.service'; import { PrismaService } from 'src/prisma/prisma.service';
import { import {
SHORTCODE_INVALID_JSON,
SHORTCODE_INVALID_PROPERTIES_JSON, SHORTCODE_INVALID_PROPERTIES_JSON,
SHORTCODE_INVALID_REQUEST_JSON, SHORTCODE_INVALID_REQUEST_JSON,
SHORTCODE_NOT_FOUND, SHORTCODE_NOT_FOUND,
@@ -57,8 +56,8 @@ export class ShortcodeService implements UserDataHandler, OnModuleInit {
id: shortcodeInfo.id, id: shortcodeInfo.id,
request: JSON.stringify(shortcodeInfo.request), request: JSON.stringify(shortcodeInfo.request),
properties: properties:
shortcodeInfo.properties != null shortcodeInfo.embedProperties != null
? JSON.stringify(shortcodeInfo.properties) ? JSON.stringify(shortcodeInfo.embedProperties)
: null, : null,
createdOn: shortcodeInfo.createdOn, createdOn: shortcodeInfo.createdOn,
}; };
@@ -137,7 +136,7 @@ export class ShortcodeService implements UserDataHandler, OnModuleInit {
data: { data: {
id: generatedShortCode.right, id: generatedShortCode.right,
request: requestData.right, request: requestData.right,
properties: parsedProperties.right ?? undefined, embedProperties: parsedProperties.right ?? undefined,
creatorUid: userInfo.uid, creatorUid: userInfo.uid,
}, },
}); });
@@ -250,7 +249,7 @@ export class ShortcodeService implements UserDataHandler, OnModuleInit {
}, },
}, },
data: { data: {
properties: parsedProperties.right, embedProperties: parsedProperties.right,
}, },
}); });