diff --git a/packages/app/src/components/LimitAlert/index.jsx b/packages/app/src/components/LimitAlert/index.jsx new file mode 100644 index 00000000..177c5a0d --- /dev/null +++ b/packages/app/src/components/LimitAlert/index.jsx @@ -0,0 +1,57 @@ +import { Alert } from "antd" + +const FetchLimit = async (limit_id) => { + if (!limit_id) { + throw new Error("limit_id is required") + } + + const response = await app.cores.api.customRequest({ + method: "GET", + url: `/global_server_limits/${limit_id}`, + }) + + return response.data +} + +const Limit = (props) => { + const { limit_id } = props + + if (!limit_id) { + console.error("limit_id is required") + return null + } + + const [L_Limit, R_Limit, E_Limit, M_Limit] = app.cores.api.useRequest(FetchLimit, limit_id) + + if (E_Limit) { + console.log(`Failed to fetch limit ${limit_id} >`, E_Limit) + + return null + } + + if (L_Limit) { + return null + } + + const componentProps = { + type: "warning", + closable: true, + ...R_Limit?.data?.componentProps ?? {}, + } + + return +} + +export default (props) => { + const { limit_id } = props + + if (Array.isArray(limit_id)) { + return limit_id.map((limit_id) => ) + } + + return +} \ No newline at end of file diff --git a/packages/server/src/controllers/PublicController/endpoints/globalServerLimits.js b/packages/server/src/controllers/PublicController/endpoints/globalServerLimits.js new file mode 100644 index 00000000..5d9a58bf --- /dev/null +++ b/packages/server/src/controllers/PublicController/endpoints/globalServerLimits.js @@ -0,0 +1,27 @@ +import { ServerLimit } from "@models" + +export default { + method: "GET", + route: "/global_server_limits/:limitkey", + fn: async (req, res) => { + const { limitkey } = req.params + + const serverLimit = await ServerLimit.findOne({ + key: limitkey, + active: true, + }) + .catch(err => { + return res.status(500).json({ + error: err.message + }) + }) + + if (!serverLimit) { + return res.status(404).json({ + error: "Server limit not found or inactive" + }) + } + + return res.json(serverLimit) + } +} \ No newline at end of file diff --git a/packages/server/src/models/serverLimit/index.js b/packages/server/src/models/serverLimit/index.js new file mode 100644 index 00000000..44c27697 --- /dev/null +++ b/packages/server/src/models/serverLimit/index.js @@ -0,0 +1,24 @@ +import { Schema } from "mongoose" + +export default { + name: "ServerLimit", + collection: "serverLimits", + schema: { + key: { + type: String, + required: true, + }, + value: { + type: Schema.Types.Mixed, + required: true, + }, + active: { + type: Boolean, + default: true, + }, + data: { + type: Object, + required: false, + } + } +} \ No newline at end of file