Skip to content

Commit 1b0fb29

Browse files
committed
storage limit check
1 parent aac948f commit 1b0fb29

File tree

3 files changed

+40
-2
lines changed

3 files changed

+40
-2
lines changed
+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/** @file storage.middleware.js */
2+
const Note = require('../models/Note')
3+
const Media = require('../models/Media')
4+
require('dotenv').config()
5+
const STORAGE_LIMIT = process.env.STORAGE_LIMIT || 5024000
6+
7+
/**
8+
* Функция-Middleware для проверки занятого пространства
9+
* @param {*} req
10+
* @param {*} res
11+
* @param {*} next
12+
*/
13+
module.exports = async (req, res, next) => {
14+
//проверка работы сервера
15+
if (req.method === 'OPTIONS') {
16+
return next()
17+
}
18+
19+
try {
20+
/**Нахождение пользовательских заметок в бд */
21+
const notes = await Note.find({ owner: req.user.userId })
22+
/**Нахождение пользовательских media в бд */
23+
const media = await Media.find({ owner: req.user.userId })
24+
/**Вычисление обьема данных */
25+
const dataLength = JSON.stringify([...notes, ...media]).length
26+
27+
const leftPercent = ~~(((STORAGE_LIMIT - dataLength) / STORAGE_LIMIT) * 100)
28+
//console.log("data left: ", leftPercent, "%")
29+
if (!(leftPercent > 0)) return res.status(409).json({ message: "Привышен лимит данных" })
30+
31+
next()
32+
} catch (e) {
33+
res.status(500).json({ message: 'Что-то пошло не так, попробуйте снова' })
34+
}
35+
36+
}

server/routes/media.routes.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,14 @@ const { Router } = require('express')
66
const Media = require('../models/Media')
77
const Note = require('../models/Note')
88
const auth = require('../middleware/auth.middleware')
9+
const storage = require('../middleware/storage.middleware')
910
const router = Router()
1011

1112
/**
1213
* Добавление и редактирование media
1314
* /api/media/set
1415
*/
15-
router.post('/set', auth, async (req, res) => {
16+
router.post('/set', auth, storage, async (req, res) => {
1617
try {
1718
/**получение данных о media и запись в бд */
1819
const media = tryParce(req.body.media)

server/routes/notes.routes.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ const { Router } = require('express')
66
const Note = require('../models/Note')
77
const Media = require('../models/Media')
88
const auth = require('../middleware/auth.middleware')
9+
const storage = require('../middleware/storage.middleware')
910
const router = Router()
1011

1112
const { checkNote } = require('../validation/NoteCheck')
@@ -14,7 +15,7 @@ const { checkNote } = require('../validation/NoteCheck')
1415
* Добавление и редактирование заметки
1516
* /api/notes/set
1617
*/
17-
router.post('/set', auth, async (req, res) => {
18+
router.post('/set', auth, storage, async (req, res) => {
1819
try {
1920
/**получение данных о заметке и запись в бд */
2021
const note = tryParce(req.body.note)

0 commit comments

Comments
 (0)