Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 1b0fb29

Browse files
storage limit check
1 parent aac948f commit 1b0fb29

File tree

3 files changed

+40
-2
lines changed

3 files changed

+40
-2
lines changed

‎server/middleware/storage.middleware.js

Lines changed: 36 additions & 0 deletions
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

Lines changed: 2 additions & 1 deletion
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

Lines changed: 2 additions & 1 deletion
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)

AltStyle によって変換されたページ (->オリジナル) /