chore: added teacher comments to all service methods

This commit is contained in:
Balu Babu
2023-01-23 06:04:23 +05:30
parent b2acd5511c
commit 93479320ee
7 changed files with 125 additions and 10 deletions

View File

@@ -9,6 +9,12 @@ import { USER_NOT_FOUND } from 'src/errors';
export class UserService {
constructor(private prisma: PrismaService) {}
/**
* Find User with given email id
*
* @param {string} email User's email
* @returns {Promise<O.None | O.Some<User>>} Option of found User
*/
async findUserByEmail(email: string) {
try {
const user = await this.prisma.user.findUniqueOrThrow({
@@ -22,6 +28,12 @@ export class UserService {
}
}
/**
* Find User with given ID
*
* @param {string} userUid User ID
* @returns {Promise<O.None | O.Some<User>>} Option of found User
*/
async findUserById(userUid: string) {
try {
const user = await this.prisma.user.findUniqueOrThrow({
@@ -35,6 +47,12 @@ export class UserService {
}
}
/**
* Create a new User when logged in via a Magic Link
*
* @param {string} email User's Email
* @returns {Promise<User>} Created User
*/
async createUserMagic(email: string) {
const createdUser = await this.prisma.user.create({
data: {
@@ -51,6 +69,14 @@ export class UserService {
return createdUser;
}
/**
* Create a new User when logged in via a SSO provider
*
* @param {string} accessToken User's access token generated by providers
* @param {string} refreshToken User's refresh token generated by providers
* @param {any} profile Data received from SSO provider on the users account
* @returns {Promise<User>} Created User
*/
async createUserSSO(accessToken: string, refreshToken: string, profile) {
const createdUser = await this.prisma.user.create({
data: {
@@ -71,6 +97,15 @@ export class UserService {
return createdUser;
}
/**
* Create a new Account for a given User
*
* @param {AuthUser} user User object
* @param {string} accessToken User's access token generated by providers
* @param {string} refreshToken User's refresh token generated by providers
* @param {any} profile Data received from SSO provider on the users account
* @returns {Promise<Account>} Created Account
*/
async createProviderAccount(
user: AuthUser,
accessToken: string,
@@ -94,6 +129,13 @@ export class UserService {
return createdProvider;
}
/**
* Update User displayName and photoURL
*
* @param {AuthUser} user User object
* @param {any} profile Data received from SSO provider on the users account
* @returns {Promise<E.Right<User> | E.Left<"user/not_found">>} Updated user object
*/
async updateUserDetails(user: AuthUser, profile) {
try {
const updatedUser = await this.prisma.user.update({