fix: fix.env.example
This commit is contained in:
@ -1,50 +1,50 @@
|
||||
import {
|
||||
returnErrorResponse,
|
||||
returnWriteResponse,
|
||||
} from "../../../helpers/callback/httpResponse";
|
||||
import { Prisma } from "@prisma/client";
|
||||
import { Context } from "elysia";
|
||||
import { createUserService } from "../services/createUser.service";
|
||||
import { mainErrorHandler } from "../../../helpers/error/handler";
|
||||
import { createUserSchema } from "../schemas/createUser.schema";
|
||||
|
||||
/**
|
||||
* @function createUser
|
||||
* @description Creates a new user in the database.
|
||||
*
|
||||
* @param {Context & { body: Prisma.UserCreateInput }} ctx - The context object containing the request body.
|
||||
* @param {Prisma.UserCreateInput} ctx.body - The user data to be created.
|
||||
*
|
||||
* @returns {Promise<Object>} A response object indicating success or failure.
|
||||
* @throws {Object} An error response object if validation fails or an error occurs during user creation.
|
||||
*
|
||||
* @example
|
||||
* Request route: POST /users
|
||||
* Request body:
|
||||
* {
|
||||
* "username": "john_doe",
|
||||
* "email": "john@example.com",
|
||||
* "password": "password123"
|
||||
* }
|
||||
*/
|
||||
export const createUser = async (
|
||||
ctx: Context & { body: Prisma.UserCreateInput }
|
||||
) => {
|
||||
// Validate the user input using a validation schema
|
||||
const { error } = createUserSchema.validate(ctx.body);
|
||||
if (error)
|
||||
return returnErrorResponse(ctx.set, 400, "Invalid user input", error);
|
||||
|
||||
// Create the user in the database using the service
|
||||
try {
|
||||
const newUser = await createUserService(ctx.body);
|
||||
return returnWriteResponse(
|
||||
ctx.set,
|
||||
201,
|
||||
"User created successfully",
|
||||
newUser
|
||||
);
|
||||
} catch (error) {
|
||||
return mainErrorHandler(ctx.set, error);
|
||||
}
|
||||
};
|
||||
import {
|
||||
returnErrorResponse,
|
||||
returnWriteResponse,
|
||||
} from "../../../helpers/callback/httpResponse";
|
||||
import { Prisma } from "@prisma/client";
|
||||
import { Context } from "elysia";
|
||||
import { createUserService } from "../services/createUser.service";
|
||||
import { mainErrorHandler } from "../../../helpers/error/handler";
|
||||
import { createUserSchema } from "../schemas/createUser.schema";
|
||||
|
||||
/**
|
||||
* @function createUser
|
||||
* @description Creates a new user in the database.
|
||||
*
|
||||
* @param {Context & { body: Prisma.UserCreateInput }} ctx - The context object containing the request body.
|
||||
* @param {Prisma.UserCreateInput} ctx.body - The user data to be created.
|
||||
*
|
||||
* @returns {Promise<Object>} A response object indicating success or failure.
|
||||
* @throws {Object} An error response object if validation fails or an error occurs during user creation.
|
||||
*
|
||||
* @example
|
||||
* Request route: POST /users
|
||||
* Request body:
|
||||
* {
|
||||
* "username": "john_doe",
|
||||
* "email": "john@example.com",
|
||||
* "password": "password123"
|
||||
* }
|
||||
*/
|
||||
export const createUser = async (
|
||||
ctx: Context & { body: Prisma.UserCreateInput }
|
||||
) => {
|
||||
// Validate the user input using a validation schema
|
||||
const { error } = createUserSchema.validate(ctx.body);
|
||||
if (error)
|
||||
return returnErrorResponse(ctx.set, 400, "Invalid user input", error);
|
||||
|
||||
// Create the user in the database using the service
|
||||
try {
|
||||
const newUser = await createUserService(ctx.body);
|
||||
return returnWriteResponse(
|
||||
ctx.set,
|
||||
201,
|
||||
"User created successfully",
|
||||
newUser
|
||||
);
|
||||
} catch (error) {
|
||||
return mainErrorHandler(ctx.set, error);
|
||||
}
|
||||
};
|
||||
|
||||
@ -1,21 +1,21 @@
|
||||
import {
|
||||
returnErrorResponse,
|
||||
returnReadResponse,
|
||||
} from "../../../helpers/callback/httpResponse";
|
||||
import { Context } from "elysia";
|
||||
import { getAllUsersService } from "../services/getAllUser.service";
|
||||
import { mainErrorHandler } from "../../../helpers/error/handler";
|
||||
|
||||
export const getAllUser = async (ctx: Context) => {
|
||||
try {
|
||||
const allUser = await getAllUsersService();
|
||||
return returnReadResponse(
|
||||
ctx.set,
|
||||
200,
|
||||
"All user ranks successfully",
|
||||
allUser
|
||||
);
|
||||
} catch (error) {
|
||||
return mainErrorHandler(ctx.set, error);
|
||||
}
|
||||
};
|
||||
import {
|
||||
returnErrorResponse,
|
||||
returnReadResponse,
|
||||
} from "../../../helpers/callback/httpResponse";
|
||||
import { Context } from "elysia";
|
||||
import { getAllUsersService } from "../services/getAllUser.service";
|
||||
import { mainErrorHandler } from "../../../helpers/error/handler";
|
||||
|
||||
export const getAllUser = async (ctx: Context) => {
|
||||
try {
|
||||
const allUser = await getAllUsersService();
|
||||
return returnReadResponse(
|
||||
ctx.set,
|
||||
200,
|
||||
"All user ranks successfully",
|
||||
allUser
|
||||
);
|
||||
} catch (error) {
|
||||
return mainErrorHandler(ctx.set, error);
|
||||
}
|
||||
};
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import Elysia from "elysia";
|
||||
import { getAllUser } from "./controller/getAllUser.controller";
|
||||
import { createUser } from "./controller/createUser.controller";
|
||||
|
||||
export const userModule = new Elysia({ prefix: "/users" })
|
||||
.get("/", getAllUser)
|
||||
.post("/", createUser);
|
||||
import Elysia from "elysia";
|
||||
import { getAllUser } from "./controller/getAllUser.controller";
|
||||
import { createUser } from "./controller/createUser.controller";
|
||||
|
||||
export const userModule = new Elysia({ prefix: "/users" })
|
||||
.get("/", getAllUser)
|
||||
.post("/", createUser);
|
||||
|
||||
@ -1,17 +1,17 @@
|
||||
import { Prisma } from "@prisma/client";
|
||||
import { userModel } from "../user.model";
|
||||
|
||||
export const createUserRepo = async (data: Prisma.UserCreateInput) => {
|
||||
try {
|
||||
const userData = await userModel.create({
|
||||
data,
|
||||
omit: {
|
||||
password: true,
|
||||
},
|
||||
});
|
||||
|
||||
return userData;
|
||||
} catch (error) {
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
import { Prisma } from "@prisma/client";
|
||||
import { userModel } from "../user.model";
|
||||
|
||||
export const createUserRepo = async (data: Prisma.UserCreateInput) => {
|
||||
try {
|
||||
const userData = await userModel.create({
|
||||
data,
|
||||
omit: {
|
||||
password: true,
|
||||
},
|
||||
});
|
||||
|
||||
return userData;
|
||||
} catch (error) {
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
|
||||
@ -1,39 +1,39 @@
|
||||
import { AppError } from "../../../helpers/error/instances/app";
|
||||
import { userModel } from "../user.model";
|
||||
|
||||
export const findUserByEmailOrUsernameRepo = async (identifier: string) => {
|
||||
try {
|
||||
const userData =
|
||||
(await userModel.findUnique({
|
||||
where: { email: identifier },
|
||||
include: {
|
||||
roles: {
|
||||
omit: {
|
||||
createdBy: true,
|
||||
createdAt: true,
|
||||
updatedAt: true,
|
||||
deletedAt: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
})) ||
|
||||
(await userModel.findUnique({
|
||||
where: { username: identifier },
|
||||
include: {
|
||||
roles: {
|
||||
omit: {
|
||||
createdBy: true,
|
||||
createdAt: true,
|
||||
updatedAt: true,
|
||||
deletedAt: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
}));
|
||||
|
||||
if (!userData) return false;
|
||||
return userData;
|
||||
} catch (error) {
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
import { AppError } from "../../../helpers/error/instances/app";
|
||||
import { userModel } from "../user.model";
|
||||
|
||||
export const findUserByEmailOrUsernameRepo = async (identifier: string) => {
|
||||
try {
|
||||
const userData =
|
||||
(await userModel.findUnique({
|
||||
where: { email: identifier },
|
||||
include: {
|
||||
roles: {
|
||||
omit: {
|
||||
createdBy: true,
|
||||
createdAt: true,
|
||||
updatedAt: true,
|
||||
deletedAt: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
})) ||
|
||||
(await userModel.findUnique({
|
||||
where: { username: identifier },
|
||||
include: {
|
||||
roles: {
|
||||
omit: {
|
||||
createdBy: true,
|
||||
createdAt: true,
|
||||
updatedAt: true,
|
||||
deletedAt: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
}));
|
||||
|
||||
if (!userData) return false;
|
||||
return userData;
|
||||
} catch (error) {
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
|
||||
@ -1,15 +1,15 @@
|
||||
import { userModel } from "../user.model";
|
||||
|
||||
export const getAllUserRepo = async () => {
|
||||
try {
|
||||
const data = await userModel.findMany({
|
||||
where: {
|
||||
deletedAt: null,
|
||||
},
|
||||
});
|
||||
|
||||
return data;
|
||||
} catch (error) {
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
import { userModel } from "../user.model";
|
||||
|
||||
export const getAllUserRepo = async () => {
|
||||
try {
|
||||
const data = await userModel.findMany({
|
||||
where: {
|
||||
deletedAt: null,
|
||||
},
|
||||
});
|
||||
|
||||
return data;
|
||||
} catch (error) {
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
|
||||
@ -1,15 +1,15 @@
|
||||
import Joi from "joi";
|
||||
|
||||
export const createUserSchema = Joi.object({
|
||||
name: Joi.string().min(4).max(255).required(),
|
||||
username: Joi.string().min(4).max(255).required(),
|
||||
email: Joi.string().email().required(),
|
||||
password: Joi.string().min(8).max(255).required(),
|
||||
birthdate: Joi.date(),
|
||||
gender: Joi.string().valid("male", "female"),
|
||||
phoneCC: Joi.string().min(2).max(2),
|
||||
phoneNumber: Joi.string().min(7).max(15),
|
||||
bioProfile: Joi.string().max(300),
|
||||
profilePicture: Joi.string().uri(),
|
||||
commentPicture: Joi.string().uri(),
|
||||
});
|
||||
import Joi from "joi";
|
||||
|
||||
export const createUserSchema = Joi.object({
|
||||
name: Joi.string().min(4).max(255).required(),
|
||||
username: Joi.string().min(4).max(255).required(),
|
||||
email: Joi.string().email().required(),
|
||||
password: Joi.string().min(8).max(255).required(),
|
||||
birthdate: Joi.date(),
|
||||
gender: Joi.string().valid("male", "female"),
|
||||
phoneCC: Joi.string().min(2).max(2),
|
||||
phoneNumber: Joi.string().min(7).max(15),
|
||||
bioProfile: Joi.string().max(300),
|
||||
profilePicture: Joi.string().uri(),
|
||||
commentPicture: Joi.string().uri(),
|
||||
});
|
||||
|
||||
@ -1,18 +1,18 @@
|
||||
import { Prisma } from "@prisma/client";
|
||||
import { hashPassword } from "../../../helpers/security/password/hash";
|
||||
import { createUserRepo } from "../repositories/createUser.repository";
|
||||
|
||||
export const createUserService = async (userData: Prisma.UserCreateInput) => {
|
||||
const { password, ...rest } = userData; // Destructure the password and the rest of the user data
|
||||
const hashedPassword = await hashPassword(password); // Hash the password before saving to the database
|
||||
|
||||
try {
|
||||
const newUser = await createUserRepo({
|
||||
...rest,
|
||||
password: hashedPassword,
|
||||
});
|
||||
return newUser;
|
||||
} catch (error) {
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
import { Prisma } from "@prisma/client";
|
||||
import { hashPassword } from "../../../helpers/security/password/hash";
|
||||
import { createUserRepo } from "../repositories/createUser.repository";
|
||||
|
||||
export const createUserService = async (userData: Prisma.UserCreateInput) => {
|
||||
const { password, ...rest } = userData; // Destructure the password and the rest of the user data
|
||||
const hashedPassword = await hashPassword(password); // Hash the password before saving to the database
|
||||
|
||||
try {
|
||||
const newUser = await createUserRepo({
|
||||
...rest,
|
||||
password: hashedPassword,
|
||||
});
|
||||
return newUser;
|
||||
} catch (error) {
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
import { ErrorForwarder } from "../../../helpers/error/instances/forwarder";
|
||||
import { findUserByEmailOrUsernameRepo } from "../repositories/findUserByEmailOrUsername.repository";
|
||||
|
||||
export const findUserByEmailOrUsernameService = async (identifier: string) => {
|
||||
try {
|
||||
const userData = await findUserByEmailOrUsernameRepo(identifier);
|
||||
return userData;
|
||||
} catch (error) {
|
||||
ErrorForwarder(error);
|
||||
}
|
||||
};
|
||||
import { ErrorForwarder } from "../../../helpers/error/instances/forwarder";
|
||||
import { findUserByEmailOrUsernameRepo } from "../repositories/findUserByEmailOrUsername.repository";
|
||||
|
||||
export const findUserByEmailOrUsernameService = async (identifier: string) => {
|
||||
try {
|
||||
const userData = await findUserByEmailOrUsernameRepo(identifier);
|
||||
return userData;
|
||||
} catch (error) {
|
||||
ErrorForwarder(error);
|
||||
}
|
||||
};
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
import { getAllUserRepo } from "../repositories/getAllUser.repository";
|
||||
|
||||
export const getAllUsersService = async () => {
|
||||
try {
|
||||
const allUser = await getAllUserRepo();
|
||||
return allUser;
|
||||
} catch (error) {
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
import { getAllUserRepo } from "../repositories/getAllUser.repository";
|
||||
|
||||
export const getAllUsersService = async () => {
|
||||
try {
|
||||
const allUser = await getAllUserRepo();
|
||||
return allUser;
|
||||
} catch (error) {
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
|
||||
@ -1,3 +1,3 @@
|
||||
import { prisma } from "../../utils/databases/prisma/connection";
|
||||
|
||||
export const userModel = prisma.user;
|
||||
import { prisma } from "../../utils/databases/prisma/connection";
|
||||
|
||||
export const userModel = prisma.user;
|
||||
|
||||
Reference in New Issue
Block a user