chore: added shared-requests into user deletion spec

This commit is contained in:
Balu Babu
2023-10-26 11:26:06 +05:30
parent a1b952329b
commit 8007191d7a
2 changed files with 38 additions and 3 deletions

View File

@@ -3,9 +3,10 @@ import { SharedRequestService } from './shared-request.service';
import { SharedRequestResolver } from './shared-request.resolver'; import { SharedRequestResolver } from './shared-request.resolver';
import { PubSubModule } from 'src/pubsub/pubsub.module'; import { PubSubModule } from 'src/pubsub/pubsub.module';
import { PrismaModule } from 'src/prisma/prisma.module'; import { PrismaModule } from 'src/prisma/prisma.module';
import { UserModule } from 'src/user/user.module';
@Module({ @Module({
imports: [PrismaModule, PubSubModule], imports: [PrismaModule, PubSubModule, UserModule],
providers: [SharedRequestService, SharedRequestResolver], providers: [SharedRequestService, SharedRequestResolver],
}) })
export class SharedRequestModule {} export class SharedRequestModule {}

View File

@@ -1,8 +1,10 @@
import { Injectable } from '@nestjs/common'; import { Injectable, OnModuleInit } from '@nestjs/common';
import { PrismaService } from 'src/prisma/prisma.service'; import { PrismaService } from 'src/prisma/prisma.service';
import { PubSubService } from 'src/pubsub/pubsub.service'; import { PubSubService } from 'src/pubsub/pubsub.service';
import { Shortcode as DBSharedRequest } from '@prisma/client'; import { Shortcode as DBSharedRequest } from '@prisma/client';
import * as E from 'fp-ts/Either'; import * as E from 'fp-ts/Either';
import * as TO from 'fp-ts/TaskOption';
import * as T from 'fp-ts/Task';
import { SharedRequest } from './shared-requests.model'; import { SharedRequest } from './shared-requests.model';
import { import {
SHARED_REQUEST_INVALID_PROPERTIES_JSON, SHARED_REQUEST_INVALID_PROPERTIES_JSON,
@@ -12,17 +14,49 @@ import {
import { stringToJson } from 'src/utils'; import { stringToJson } from 'src/utils';
import { AuthUser } from 'src/types/AuthUser'; import { AuthUser } from 'src/types/AuthUser';
import { PaginationArgs } from 'src/types/input-types.args'; import { PaginationArgs } from 'src/types/input-types.args';
import { UserDataHandler } from 'src/user/user.data.handler';
import { UserService } from 'src/user/user.service';
const SHORT_CODE_LENGTH = 12; const SHORT_CODE_LENGTH = 12;
const SHORT_CODE_CHARS = const SHORT_CODE_CHARS =
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
@Injectable() @Injectable()
export class SharedRequestService { export class SharedRequestService implements UserDataHandler, OnModuleInit {
constructor( constructor(
private readonly prisma: PrismaService, private readonly prisma: PrismaService,
private readonly pubsub: PubSubService, private readonly pubsub: PubSubService,
private readonly userService: UserService,
) {} ) {}
onModuleInit() {
this.userService.registerUserDataHandler(this);
}
canAllowUserDeletion(user: AuthUser): TO.TaskOption<string> {
return TO.none;
}
onUserDelete(user: AuthUser): T.Task<void> {
return async () => {
await this.deleteUserSharedRequests(user.uid);
};
}
/**
* Delete all the Users SharedRequests
* @param uid User Uid
* @returns number of all deleted user SharedRequests
*/
async deleteUserSharedRequests(uid: string) {
const deletedShortCodes = await this.prisma.shortcode.deleteMany({
where: {
creatorUid: uid,
},
});
return deletedShortCodes.count;
}
/** /**
* Converts a Prisma SharedRequest type into the SharedRequest model * Converts a Prisma SharedRequest type into the SharedRequest model
* *