chore: added shared-requests into user deletion spec
This commit is contained in:
@@ -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 {}
|
||||||
|
|||||||
@@ -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
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user