Merge branch 'dev' into 'staging'
Dev See merge request pena-services/hub_admin_backend_service!31
This commit is contained in:
commit
a9f5d62266
@ -1,4 +1,4 @@
|
||||
FROM node:19.1-alpine as dev
|
||||
FROM node:19.1-alpine AS dev
|
||||
|
||||
RUN apk update && rm -rf /var/cache/apk/*
|
||||
|
||||
@ -17,7 +17,7 @@ RUN ls
|
||||
|
||||
RUN yarn build
|
||||
|
||||
FROM node:19.1-alpine as production
|
||||
FROM node:19.1-alpine AS production
|
||||
|
||||
RUN apk update && rm -rf /var/cache/apk/*
|
||||
|
||||
|
@ -10,11 +10,11 @@ services:
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
- DB_HOST=admin-mongo
|
||||
- DB_HOST=mongo
|
||||
- DB_PORT=27017
|
||||
- ENVIRONMENT=staging
|
||||
- HTTP_HOST=0.0.0.0
|
||||
- HTTP_PORT=8005
|
||||
- HTTP_PORT=8001
|
||||
- AUTH_SERVICE_HOST=http://auth
|
||||
- AUTH_SERVICE_PORT=8000
|
||||
- DB_USERNAME=test
|
||||
@ -22,20 +22,9 @@ services:
|
||||
- DB_NAME=admin
|
||||
networks:
|
||||
- dev
|
||||
depends_on:
|
||||
- admin-mongo
|
||||
ports:
|
||||
- 8005:8005
|
||||
- 8001:8001
|
||||
|
||||
admin-mongo:
|
||||
image: "mongo:6.0.3"
|
||||
environment:
|
||||
MONGO_INITDB_ROOT_USERNAME: test
|
||||
MONGO_INITDB_ROOT_PASSWORD: test
|
||||
ports:
|
||||
- 27017:27017
|
||||
networks:
|
||||
- dev
|
||||
|
||||
networks:
|
||||
dev:
|
||||
|
@ -23,7 +23,6 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@fastify/cookie": "^8.3.0",
|
||||
"@fastify/cors": "^8.2.0",
|
||||
"@fastify/jwt": "^6.3.3",
|
||||
"@fastify/swagger": "^8.2.1",
|
||||
"@fastify/swagger-ui": "^1.3.0",
|
||||
|
@ -1,4 +1,3 @@
|
||||
import cors from "@fastify/cors";
|
||||
import cookie from "@fastify/cookie";
|
||||
import jwt from "@fastify/jwt";
|
||||
import swagger from "@fastify/swagger";
|
||||
@ -12,7 +11,6 @@ import type { FastifyInstance } from "fastify";
|
||||
import type { PluginsOptions } from "@/types/configuration/plugins-options";
|
||||
|
||||
export const registerFastifyPlugins = (fastify: FastifyInstance, options: PluginsOptions) => {
|
||||
fastify.register(cors, options.cors);
|
||||
fastify.register(cookie, options.cookie);
|
||||
fastify.register(jwt, options.jwt);
|
||||
fastify.register(swagger, DEFAULT.swaggerOptions);
|
||||
|
@ -9,12 +9,13 @@ import { validateTariff } from "./helpers";
|
||||
import type { FastifyReply } from "fastify";
|
||||
|
||||
import type { Privilege } from "@/types/models/privilege.type";
|
||||
import type { Eloquent } from "@/types/models/eloquent.type";
|
||||
import type { CreateTariffRequest, GetTariffRequest, ReplaceTariffRequest, RemoveTariffRequest } from "./types";
|
||||
|
||||
export const getTariffs = async () => TariffModel.find({}).lean();
|
||||
|
||||
export const getTariff = async (request: GetTariffRequest, reply: FastifyReply) => {
|
||||
const [requestParams, error] = validateEmptyFields(request.params || {}, ["id"]);
|
||||
const [requestParams, error] = validateEmptyFields(request.params ?? {}, ["id"]);
|
||||
|
||||
if (error) {
|
||||
reply.status(400);
|
||||
@ -52,24 +53,22 @@ export const createTariff = async (request: CreateTariffRequest, reply: FastifyR
|
||||
}
|
||||
|
||||
const privilegies = await PrivilegeModel.find({ privilegeId: requestBody.privilegieIDArray }).lean();
|
||||
|
||||
const privilegiesMap = requestBody.privilegieIDArray.reduce<Record<string, Privilege>>((accamulator, privilegeId) => {
|
||||
const findedPrivilege = privilegies.find((privilege) => privilege.privilegeId === privilegeId);
|
||||
|
||||
if (!findedPrivilege) {
|
||||
return accamulator;
|
||||
}
|
||||
|
||||
accamulator[privilegeId] = findedPrivilege;
|
||||
|
||||
return accamulator;
|
||||
}, {});
|
||||
const cleanPrivilegies = privilegies.map<Omit<Privilege, keyof Eloquent>>((privilege) => ({
|
||||
name: privilege.name,
|
||||
privilegeId: privilege.name,
|
||||
serviceKey: privilege.serviceKey,
|
||||
description: privilege.description,
|
||||
amount: privilege.amount,
|
||||
type: privilege.type,
|
||||
value: privilege.value,
|
||||
price: privilege.price,
|
||||
}));
|
||||
|
||||
const newTariff = new TariffModel({
|
||||
name: requestBody.name,
|
||||
price: requestBody.price,
|
||||
isCustom: requestBody.isCustom,
|
||||
privilegies: privilegiesMap,
|
||||
privilegies: cleanPrivilegies,
|
||||
});
|
||||
|
||||
await newTariff.save();
|
||||
@ -78,7 +77,7 @@ export const createTariff = async (request: CreateTariffRequest, reply: FastifyR
|
||||
};
|
||||
|
||||
export const replaceTariff = async (request: ReplaceTariffRequest, reply: FastifyReply) => {
|
||||
const [requestBody, error] = validateTariff(request.body || {});
|
||||
const [requestBody, error] = validateTariff(request.body ?? {});
|
||||
|
||||
if (error) {
|
||||
reply.status(400);
|
||||
@ -105,31 +104,29 @@ export const replaceTariff = async (request: ReplaceTariffRequest, reply: Fastif
|
||||
}
|
||||
|
||||
const privilegies = await PrivilegeModel.find({ privilegeId: requestBody.privilegieIDArray }).lean();
|
||||
|
||||
const privilegiesMap = requestBody.privilegieIDArray.reduce<Record<string, Privilege>>((accamulator, privilegeId) => {
|
||||
const findedPrivilege = privilegies.find((privilege) => privilege.privilegeId === privilegeId);
|
||||
|
||||
if (!findedPrivilege) {
|
||||
return accamulator;
|
||||
}
|
||||
|
||||
accamulator[privilegeId] = findedPrivilege;
|
||||
|
||||
return accamulator;
|
||||
}, {});
|
||||
const cleanPrivilegies = privilegies.map<Omit<Privilege, keyof Eloquent>>((privilege) => ({
|
||||
name: privilege.name,
|
||||
privilegeId: privilege.name,
|
||||
serviceKey: privilege.serviceKey,
|
||||
description: privilege.description,
|
||||
amount: privilege.amount,
|
||||
type: privilege.type,
|
||||
value: privilege.value,
|
||||
price: privilege.price,
|
||||
}));
|
||||
|
||||
await tariff.replaceOne({
|
||||
name: requestBody.name,
|
||||
price: requestBody.price,
|
||||
isCustom: requestBody.isCustom,
|
||||
privilegies: privilegiesMap,
|
||||
privilegies: cleanPrivilegies,
|
||||
});
|
||||
|
||||
return tariff;
|
||||
};
|
||||
|
||||
export const removeTariff = async (request: RemoveTariffRequest, reply: FastifyReply) => {
|
||||
const [{ id }, error] = validateEmptyFields(request.body || {}, ["id"]);
|
||||
const [{ id }, error] = validateEmptyFields(request.body ?? {}, ["id"]);
|
||||
|
||||
if (error) {
|
||||
reply.status(400);
|
||||
@ -154,7 +151,7 @@ export const removeTariff = async (request: RemoveTariffRequest, reply: FastifyR
|
||||
};
|
||||
|
||||
export const deleteTariff = async (request: RemoveTariffRequest, reply: FastifyReply) => {
|
||||
const [{ id }, error] = validateEmptyFields(request.body || {}, ["id"]);
|
||||
const [{ id }, error] = validateEmptyFields(request.body ?? {}, ["id"]);
|
||||
|
||||
if (error) {
|
||||
reply.status(400);
|
||||
@ -177,7 +174,7 @@ export const deleteTariff = async (request: RemoveTariffRequest, reply: FastifyR
|
||||
};
|
||||
|
||||
export const restoreTariff = async (request: RemoveTariffRequest, reply: FastifyReply) => {
|
||||
const [{ id }, error] = validateEmptyFields(request.body || {}, ["id"]);
|
||||
const [{ id }, error] = validateEmptyFields(request.body ?? {}, ["id"]);
|
||||
|
||||
if (error) {
|
||||
reply.status(400);
|
||||
|
@ -11,10 +11,6 @@ const server = new Server({
|
||||
serverOptions: CONFIGURATION.http,
|
||||
databaseOptions: CONFIGURATION.db,
|
||||
pluginsOptions: {
|
||||
cors: {
|
||||
methods: ["GET", "PUT", "POST", "PATCH", "DELETE"],
|
||||
origin: "*",
|
||||
},
|
||||
jwt: {
|
||||
secret: {
|
||||
public: CONFIGURATION.service.publicAccessSecretKey,
|
||||
|
@ -14,6 +14,11 @@ const schema: SchemaDefinition<Privilege> = {
|
||||
required: true,
|
||||
index: true,
|
||||
},
|
||||
amount: {
|
||||
type: Number,
|
||||
require: false,
|
||||
default: 1,
|
||||
},
|
||||
serviceKey: {
|
||||
type: String,
|
||||
required: true,
|
||||
|
@ -19,9 +19,8 @@ const schema: SchemaDefinition<Tariff> = {
|
||||
default: false,
|
||||
},
|
||||
privilegies: {
|
||||
type: Map,
|
||||
of: PrivilegeSchema,
|
||||
default: {},
|
||||
type: [PrivilegeSchema],
|
||||
default: [],
|
||||
},
|
||||
...eloquentSchema,
|
||||
};
|
||||
|
@ -36,8 +36,8 @@ export const tariff: SwaggerMessage = {
|
||||
price: { type: "number" },
|
||||
isCustom: { type: "boolean" },
|
||||
privilegies: {
|
||||
type: "object",
|
||||
additionalProperties: privilege,
|
||||
type: "array",
|
||||
items: privilege,
|
||||
},
|
||||
isDeleted: { type: "boolean" },
|
||||
createdAt: {
|
||||
@ -58,8 +58,8 @@ export const tariff: SwaggerMessage = {
|
||||
name: "Использование сервисов",
|
||||
price: 14000,
|
||||
isCustom: false,
|
||||
privilegies: {
|
||||
"507f1f77bcf86cd799439011": {
|
||||
privilegies: [
|
||||
{
|
||||
name: "507f1f77bcf86cd799439011",
|
||||
privilegeId: "507f1f77bcf86cd799439011",
|
||||
serviceKey: "docx-templater-service",
|
||||
@ -68,7 +68,7 @@ export const tariff: SwaggerMessage = {
|
||||
value: "200",
|
||||
price: 12300,
|
||||
},
|
||||
},
|
||||
],
|
||||
isDeleted: false,
|
||||
createdAt: "2017-07-21T17:32:28Z",
|
||||
updatedAt: "2017-07-21T17:32:28Z",
|
||||
@ -77,8 +77,8 @@ export const tariff: SwaggerMessage = {
|
||||
name: "user",
|
||||
price: 14000,
|
||||
isCustom: false,
|
||||
privilegies: {
|
||||
"507f1f77bcf86cd799439011": {
|
||||
privilegies: [
|
||||
{
|
||||
name: "507f1f77bcf86cd799439011",
|
||||
privilegeId: "507f1f77bcf86cd799439011",
|
||||
serviceKey: "docx-templater-service",
|
||||
@ -87,7 +87,7 @@ export const tariff: SwaggerMessage = {
|
||||
value: "200",
|
||||
price: 12300,
|
||||
},
|
||||
},
|
||||
],
|
||||
isDeleted: true,
|
||||
createdAt: "2017-07-21T17:32:28Z",
|
||||
updatedAt: "2019-04-14T15:32:15Z",
|
||||
|
@ -1,9 +1,7 @@
|
||||
import type { FastifyCorsOptions } from "@fastify/cors";
|
||||
import type { FastifyCookieOptions } from "@fastify/cookie";
|
||||
import type { FastifyJWTOptions } from "@fastify/jwt";
|
||||
|
||||
export type PluginsOptions = {
|
||||
cors?: FastifyCorsOptions;
|
||||
cookie?: FastifyCookieOptions;
|
||||
jwt?: FastifyJWTOptions;
|
||||
};
|
||||
import type { FastifyCookieOptions } from "@fastify/cookie";
|
||||
import type { FastifyJWTOptions } from "@fastify/jwt";
|
||||
|
||||
export type PluginsOptions = {
|
||||
cookie?: FastifyCookieOptions;
|
||||
jwt?: FastifyJWTOptions;
|
||||
};
|
||||
|
@ -5,6 +5,7 @@ export type Privilege = Eloquent & {
|
||||
privilegeId: string;
|
||||
serviceKey: string;
|
||||
description: string;
|
||||
amount: number;
|
||||
type: "count" | "day" | "full";
|
||||
value: string;
|
||||
price: number;
|
||||
|
@ -5,5 +5,5 @@ export type Tariff = Eloquent & {
|
||||
name: string;
|
||||
price: number;
|
||||
isCustom: boolean;
|
||||
privilegies: Record<string, Omit<Privilege, keyof Eloquent>>;
|
||||
privilegies: Array<Omit<Privilege, keyof Eloquent>>;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user