fix: conflicts
This commit is contained in:
commit
8bf35360cc
@ -1,189 +1,189 @@
|
||||
import { Types } from "mongoose";
|
||||
|
||||
import { TariffModel } from "@/models/tariff.model";
|
||||
|
||||
import { validateEmptyFields } from "@/utils/validate-empty-fields";
|
||||
import { determinePaginationParameters } from "@/utils/determine-pagination-parameters";
|
||||
import { validateTariff } from "./helpers";
|
||||
|
||||
import type { FastifyReply } from "fastify";
|
||||
import type { Tariff } from "@/types/models/tariff.type";
|
||||
import type {
|
||||
CreateTariffRequest,
|
||||
GetTariffRequest,
|
||||
ReplaceTariffRequest,
|
||||
RemoveTariffRequest,
|
||||
GetTariffsResponse,
|
||||
GetTariffsRequest,
|
||||
} from "./types";
|
||||
|
||||
export const getTariffs = async (request: GetTariffsRequest): Promise<GetTariffsResponse> => {
|
||||
const { page, limit } = determinePaginationParameters(request?.query ?? {});
|
||||
|
||||
const tariffsCount = await TariffModel.countDocuments();
|
||||
|
||||
const totalPages = Math.ceil(tariffsCount / limit);
|
||||
const offset = (page - 1) * limit;
|
||||
|
||||
const tariffs = await TariffModel.find({}).sort({ createdAt: "desc" }).skip(offset).limit(limit).lean();
|
||||
|
||||
return { tariffs, totalPages };
|
||||
};
|
||||
|
||||
export const getTariff = async (request: GetTariffRequest, reply: FastifyReply) => {
|
||||
const [requestParams, error] = validateEmptyFields(request.params ?? {}, ["id"]);
|
||||
|
||||
if (error) {
|
||||
void reply.status(400);
|
||||
return error;
|
||||
}
|
||||
|
||||
if (!Types.ObjectId.isValid(requestParams.id)) {
|
||||
void reply.status(400);
|
||||
return new Error("invalid id");
|
||||
}
|
||||
|
||||
const tariff = await TariffModel.findById(requestParams.id).lean();
|
||||
|
||||
if (!tariff) {
|
||||
void reply.status(404);
|
||||
return new Error("tariff not found");
|
||||
}
|
||||
|
||||
return tariff;
|
||||
};
|
||||
|
||||
export const createTariff = async (request: CreateTariffRequest, reply: FastifyReply): Promise<Tariff> => {
|
||||
const [requestBody, error] = validateTariff(request.body);
|
||||
|
||||
if (error) {
|
||||
void reply.status(400);
|
||||
throw error;
|
||||
}
|
||||
|
||||
for (const privilege of requestBody.privilegies) {
|
||||
if (!Types.ObjectId.isValid(privilege.privilegeId)) {
|
||||
void reply.status(404);
|
||||
throw new Error(`privilege id <${privilege.privilegeId}> invalid`);
|
||||
}
|
||||
}
|
||||
|
||||
const newTariff = new TariffModel({
|
||||
name: requestBody.name,
|
||||
price: requestBody.price,
|
||||
isCustom: requestBody.isCustom,
|
||||
privilegies: requestBody.privilegies,
|
||||
});
|
||||
|
||||
await newTariff.save();
|
||||
|
||||
return newTariff;
|
||||
};
|
||||
|
||||
export const replaceTariff = async (request: ReplaceTariffRequest, reply: FastifyReply) => {
|
||||
const [requestBody, error] = validateTariff(request.body ?? {});
|
||||
|
||||
if (error) {
|
||||
void reply.status(400);
|
||||
return error;
|
||||
}
|
||||
|
||||
if (!Types.ObjectId.isValid(request.params?.id || "")) {
|
||||
void reply.status(400);
|
||||
return new Error("invalid id");
|
||||
}
|
||||
|
||||
const tariff = await TariffModel.findById(request.params?.id);
|
||||
|
||||
if (!tariff) {
|
||||
void reply.status(404);
|
||||
return new Error("tariff not found");
|
||||
}
|
||||
|
||||
for (const privilege of requestBody.privilegies) {
|
||||
if (!Types.ObjectId.isValid(privilege.privilegeId)) {
|
||||
void reply.status(404);
|
||||
return new Error(`privilege id <${privilege.privilegeId}> invalid`);
|
||||
}
|
||||
}
|
||||
|
||||
await tariff.replaceOne({
|
||||
name: requestBody.name,
|
||||
price: requestBody.price,
|
||||
isCustom: requestBody.isCustom,
|
||||
privilegies: requestBody.privilegies,
|
||||
});
|
||||
|
||||
return tariff;
|
||||
};
|
||||
|
||||
export const removeTariff = async (request: RemoveTariffRequest, reply: FastifyReply) => {
|
||||
const [{ id }, error] = validateEmptyFields(request.body ?? {}, ["id"]);
|
||||
|
||||
if (error) {
|
||||
void reply.status(400);
|
||||
return error;
|
||||
}
|
||||
|
||||
if (!Types.ObjectId.isValid(id)) {
|
||||
void reply.status(400);
|
||||
return new Error("invalid id");
|
||||
}
|
||||
|
||||
const tariff = await TariffModel.findByIdAndUpdate(id, {
|
||||
$set: { isDeleted: true, deletedAt: new Date() },
|
||||
}).lean();
|
||||
|
||||
if (!tariff) {
|
||||
void reply.status(404);
|
||||
return new Error("tariff not found");
|
||||
}
|
||||
|
||||
return tariff;
|
||||
};
|
||||
|
||||
export const deleteTariff = async (request: RemoveTariffRequest, reply: FastifyReply) => {
|
||||
const [{ id }, error] = validateEmptyFields(request.body ?? {}, ["id"]);
|
||||
|
||||
if (error) {
|
||||
void reply.status(400);
|
||||
return error;
|
||||
}
|
||||
|
||||
if (!Types.ObjectId.isValid(id)) {
|
||||
void reply.status(400);
|
||||
return new Error("invalid id");
|
||||
}
|
||||
|
||||
const tariff = await TariffModel.findByIdAndDelete(id).lean();
|
||||
|
||||
if (!tariff) {
|
||||
void reply.status(404);
|
||||
return new Error("tariff not found");
|
||||
}
|
||||
|
||||
return tariff;
|
||||
};
|
||||
|
||||
export const restoreTariff = async (request: RemoveTariffRequest, reply: FastifyReply) => {
|
||||
const [{ id }, error] = validateEmptyFields(request.body ?? {}, ["id"]);
|
||||
|
||||
if (error) {
|
||||
void reply.status(400);
|
||||
return error;
|
||||
}
|
||||
|
||||
if (!Types.ObjectId.isValid(id)) {
|
||||
void reply.status(400);
|
||||
return new Error("invalid id");
|
||||
}
|
||||
|
||||
const tariff = await TariffModel.findByIdAndUpdate(id, { $set: { isDeleted: false } }).lean();
|
||||
|
||||
if (!tariff) {
|
||||
void reply.status(404);
|
||||
return new Error("tariff not found");
|
||||
}
|
||||
|
||||
return tariff;
|
||||
};
|
||||
import { Types } from "mongoose";
|
||||
|
||||
import { TariffModel } from "@/models/tariff.model";
|
||||
|
||||
import { validateEmptyFields } from "@/utils/validate-empty-fields";
|
||||
import { determinePaginationParameters } from "@/utils/determine-pagination-parameters";
|
||||
import { validateTariff } from "./helpers";
|
||||
|
||||
import type { FastifyReply } from "fastify";
|
||||
import type { Tariff } from "@/types/models/tariff.type";
|
||||
import type {
|
||||
CreateTariffRequest,
|
||||
GetTariffRequest,
|
||||
ReplaceTariffRequest,
|
||||
RemoveTariffRequest,
|
||||
GetTariffsResponse,
|
||||
GetTariffsRequest,
|
||||
} from "./types";
|
||||
|
||||
export const getTariffs = async (request: GetTariffsRequest): Promise<GetTariffsResponse> => {
|
||||
const { page, limit } = determinePaginationParameters(request?.query ?? {});
|
||||
|
||||
const tariffsCount = await TariffModel.countDocuments();
|
||||
|
||||
const totalPages = Math.ceil(tariffsCount / limit);
|
||||
const offset = (page - 1) * limit;
|
||||
|
||||
const tariffs = await TariffModel.find({}).sort({ createdAt: "desc" }).skip(offset).limit(limit).lean();
|
||||
|
||||
return { tariffs, totalPages };
|
||||
};
|
||||
|
||||
export const getTariff = async (request: GetTariffRequest, reply: FastifyReply) => {
|
||||
const [requestParams, error] = validateEmptyFields(request.params ?? {}, ["id"]);
|
||||
|
||||
if (error) {
|
||||
void reply.status(400);
|
||||
return error;
|
||||
}
|
||||
|
||||
if (!Types.ObjectId.isValid(requestParams.id)) {
|
||||
void reply.status(400);
|
||||
return new Error("invalid id");
|
||||
}
|
||||
|
||||
const tariff = await TariffModel.findById(requestParams.id).lean();
|
||||
|
||||
if (!tariff) {
|
||||
void reply.status(404);
|
||||
return new Error("tariff not found");
|
||||
}
|
||||
|
||||
return tariff;
|
||||
};
|
||||
|
||||
export const createTariff = async (request: CreateTariffRequest, reply: FastifyReply): Promise<Tariff> => {
|
||||
const [requestBody, error] = validateTariff(request.body);
|
||||
|
||||
if (error) {
|
||||
void reply.status(400);
|
||||
throw error;
|
||||
}
|
||||
|
||||
for (const privilege of requestBody.privilegies) {
|
||||
if (!Types.ObjectId.isValid(privilege.privilegeId)) {
|
||||
void reply.status(404);
|
||||
throw new Error(`privilege id <${privilege.privilegeId}> invalid`);
|
||||
}
|
||||
}
|
||||
|
||||
const newTariff = new TariffModel({
|
||||
name: requestBody.name,
|
||||
price: requestBody.price,
|
||||
isCustom: requestBody.isCustom,
|
||||
privilegies: requestBody.privilegies,
|
||||
});
|
||||
|
||||
await newTariff.save();
|
||||
|
||||
return newTariff;
|
||||
};
|
||||
|
||||
export const replaceTariff = async (request: ReplaceTariffRequest, reply: FastifyReply) => {
|
||||
const [requestBody, error] = validateTariff(request.body ?? {});
|
||||
|
||||
if (error) {
|
||||
void reply.status(400);
|
||||
return error;
|
||||
}
|
||||
|
||||
if (!Types.ObjectId.isValid(request.params?.id || "")) {
|
||||
void reply.status(400);
|
||||
return new Error("invalid id");
|
||||
}
|
||||
|
||||
const tariff = await TariffModel.findById(request.params?.id);
|
||||
|
||||
if (!tariff) {
|
||||
void reply.status(404);
|
||||
return new Error("tariff not found");
|
||||
}
|
||||
|
||||
for (const privilege of requestBody.privilegies) {
|
||||
if (!Types.ObjectId.isValid(privilege.privilegeId)) {
|
||||
void reply.status(404);
|
||||
return new Error(`privilege id <${privilege.privilegeId}> invalid`);
|
||||
}
|
||||
}
|
||||
|
||||
await tariff.replaceOne({
|
||||
name: requestBody.name,
|
||||
price: requestBody.price,
|
||||
isCustom: requestBody.isCustom,
|
||||
privilegies: requestBody.privilegies,
|
||||
});
|
||||
|
||||
return tariff;
|
||||
};
|
||||
|
||||
export const removeTariff = async (request: RemoveTariffRequest, reply: FastifyReply) => {
|
||||
const [{ id }, error] = validateEmptyFields(request.body ?? {}, ["id"]);
|
||||
|
||||
if (error) {
|
||||
void reply.status(400);
|
||||
return error;
|
||||
}
|
||||
|
||||
if (!Types.ObjectId.isValid(id)) {
|
||||
void reply.status(400);
|
||||
return new Error("invalid id");
|
||||
}
|
||||
|
||||
const tariff = await TariffModel.findByIdAndUpdate(id, {
|
||||
$set: { isDeleted: true, deletedAt: new Date() },
|
||||
}).lean();
|
||||
|
||||
if (!tariff) {
|
||||
void reply.status(404);
|
||||
return new Error("tariff not found");
|
||||
}
|
||||
|
||||
return tariff;
|
||||
};
|
||||
|
||||
export const deleteTariff = async (request: RemoveTariffRequest, reply: FastifyReply) => {
|
||||
const [{ id }, error] = validateEmptyFields(request.body ?? {}, ["id"]);
|
||||
|
||||
if (error) {
|
||||
void reply.status(400);
|
||||
return error;
|
||||
}
|
||||
|
||||
if (!Types.ObjectId.isValid(id)) {
|
||||
void reply.status(400);
|
||||
return new Error("invalid id");
|
||||
}
|
||||
|
||||
const tariff = await TariffModel.findByIdAndDelete(id).lean();
|
||||
|
||||
if (!tariff) {
|
||||
void reply.status(404);
|
||||
return new Error("tariff not found");
|
||||
}
|
||||
|
||||
return tariff;
|
||||
};
|
||||
|
||||
export const restoreTariff = async (request: RemoveTariffRequest, reply: FastifyReply) => {
|
||||
const [{ id }, error] = validateEmptyFields(request.body ?? {}, ["id"]);
|
||||
|
||||
if (error) {
|
||||
void reply.status(400);
|
||||
return error;
|
||||
}
|
||||
|
||||
if (!Types.ObjectId.isValid(id)) {
|
||||
void reply.status(400);
|
||||
return new Error("invalid id");
|
||||
}
|
||||
|
||||
const tariff = await TariffModel.findByIdAndUpdate(id, { $set: { isDeleted: false } }).lean();
|
||||
|
||||
if (!tariff) {
|
||||
void reply.status(404);
|
||||
return new Error("tariff not found");
|
||||
}
|
||||
|
||||
return tariff;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user