From 6308af85f03f7f4203690feb4815ddab3941bce5 Mon Sep 17 00:00:00 2001 From: Matt Kirby <MattJKirby@outlook.com> Date: Sat, 15 Apr 2023 01:28:25 +0100 Subject: [PATCH] Added request datastore --- .../src/Datastores/RequestDataStore.ts | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 backend-services/friend-service/src/Datastores/RequestDataStore.ts diff --git a/backend-services/friend-service/src/Datastores/RequestDataStore.ts b/backend-services/friend-service/src/Datastores/RequestDataStore.ts new file mode 100644 index 00000000..839e9ddf --- /dev/null +++ b/backend-services/friend-service/src/Datastores/RequestDataStore.ts @@ -0,0 +1,56 @@ +import RequestSchema from '../Database/Schemas/RequestSchema'; +import { FriendRequest } from '../Types/Request'; +import { DataStore } from './DataStore'; + +/** + * Contains actions pertaining to storing and accessing Requests + */ +class RequestDataStore extends DataStore<any>{ + + public newRequest = async (sourceUserId: string, targetUserId: string): Promise<FriendRequest> => { + return await this.Model.create({ + SourceUser: sourceUserId, + TargetUser: targetUserId + }); + }; + + /** + * Store action for getting requests for a user + * @param itemCount + * @returns + */ + public getRequests = async (userId: string): Promise<FriendRequest[]> => { + return await this.Model.find({TargetUser: userId}).sort({$natural: -1}) + } + + /** + * Find and delete a request if it exists. + * @param requestId + * @returns + */ + public handleRequestById = async (requestId: string): Promise<FriendRequest> => { + const result = await this.Model.findByIdAndDelete(requestId) + + if (result === null){ + throw new Error ("Invalid request id!") + } + return result; + } + + /** + * Get a request by its id + * @param requestId + * @returns + */ + public GetRequestById = async (requestId: string): Promise<FriendRequest> => { + const result = await this.Model.findById(requestId) + + if(result === null){ + throw new Error ("Invalid request id!") + } + + return result; + } +} + +export default new RequestDataStore('Request', RequestSchema) \ No newline at end of file -- GitLab