diff --git a/libs/db.js b/libs/db.js index 085dd1b..54cc632 100644 --- a/libs/db.js +++ b/libs/db.js @@ -33,9 +33,13 @@ const insertTimeRange = db.prepare( ); const getTimeRanges = db.prepare(`SELECT * FROM time_ranges`); const deleteTimeRange = db.prepare(`DELETE FROM time_ranges WHERE id = ?`); +const update = db.prepare( + `UPDATE time_ranges SET name = ?, range = ?, username = ? WHERE id = ?` +); const updateUsername = db.prepare( `UPDATE time_ranges SET username = ? WHERE id = ?` ); + const countUser = db.prepare( `SELECT COUNT(*) as count FROM time_ranges WHERE username = ?` ); @@ -88,6 +92,7 @@ export { insertTimeRange, getTimeRanges, deleteTimeRange, + update, updateUsername, updateUsernameWithLimit, getLimit, diff --git a/pages/api/time/ranges/[id].js b/pages/api/time/ranges/[id].js index c03ee9d..0552cb6 100644 --- a/pages/api/time/ranges/[id].js +++ b/pages/api/time/ranges/[id].js @@ -2,6 +2,7 @@ import { deleteTimeRange, getLimit, authenticate, + update, updateUsername, updateUsernameWithLimit, } from "../../../../libs/db"; @@ -34,26 +35,28 @@ export default function handler(req, res) { // update username } else if (req.method === "PUT") { - // check if id is valid - // check if username is valid const { username } = req.body; - if (username === undefined) { - res.status(400).json({ - error: `缺少参数 username`, - }); - return; - } // admin update username const { token } = req.body; if (authenticate(token)) { - updateUsername.run(username, id); + const { name, username, id, range } = req.body; + const result = update.run(name, range, username, id); res.status(200).json({ success: true, }); return; } + // check if id is valid + // check if username is valid + if (username === undefined) { + res.status(400).json({ + error: `缺少参数 username`, + }); + return; + } + try { const limit = getLimit(); updateUsernameWithLimit(username, id, limit); diff --git a/pages/time.js b/pages/time.js index f4aa2db..edad8c3 100644 --- a/pages/time.js +++ b/pages/time.js @@ -5,6 +5,10 @@ import { Snackbar, Button, Stack, + Dialog, + DialogTitle, + DialogContent, + DialogActions, Typography, TextField, TableContainer, @@ -32,18 +36,17 @@ export default function Time(props) { const [token, setToken] = useState(""); const [stats, setStats] = useState({}); + const [modifyTime, setModifyTime] = useState({}); + const router = useRouter(); - const updateUsernameByAdmin = (id, username) => { - fetch(`${prefix}/api/time/ranges/${id}`, { + const modifyRange = () => { + fetch(`${prefix}/api/time/ranges/${modifyTime.id}`, { method: "PUT", headers: { "Content-Type": "application/json", }, - body: JSON.stringify({ - username, - token, - }), + body: JSON.stringify({ token, ...modifyTime }), }) .then((res) => res.json()) .then((res) => { @@ -51,6 +54,7 @@ export default function Time(props) { setSnackbarError(true); setSnackbarErrorMessage(res.error); } else { + setModifyTime({}); setSnackbarSuccess(true); refreshRanges(); } @@ -356,9 +360,10 @@ export default function Time(props) { <> + + + ); }