From 499321a8428434d70cc624c9dac9800be267b1ca Mon Sep 17 00:00:00 2001 From: "ethan.chen" Date: Fri, 13 Jun 2025 14:42:57 +0800 Subject: [PATCH] chore: add .gitignore, remove VSCode settings, and optimize database queries --- .gitignore | 3 +++ .vscode/extensions.json | 5 ----- .vscode/settings.json | 6 ------ db/index.ts | 9 ++------- db/media.db | Bin 94208 -> 0 bytes routes/media.ts | 23 +++++++++++++---------- routes/user.ts | 4 ++-- 7 files changed, 20 insertions(+), 30 deletions(-) create mode 100644 .gitignore delete mode 100644 .vscode/extensions.json delete mode 100644 .vscode/settings.json delete mode 100644 db/media.db diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e3568c1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.vscode +.DS_Store +**/*.db diff --git a/.vscode/extensions.json b/.vscode/extensions.json deleted file mode 100644 index c4eb3fe..0000000 --- a/.vscode/extensions.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "recommendations": [ - "denoland.vscode-deno" - ] -} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index a2bb77c..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "deno.enablePaths": [ - "./" - ], - "editor.inlayHints.enabled": "off" -} \ No newline at end of file diff --git a/db/index.ts b/db/index.ts index dc4314c..2225144 100644 --- a/db/index.ts +++ b/db/index.ts @@ -1,21 +1,16 @@ /* * @Date: 2025-06-12 16:48:44 * @LastEditors: 陈子健 - * @LastEditTime: 2025-06-12 17:31:37 + * @LastEditTime: 2025-06-13 14:23:03 * @FilePath: /my-score/honoback/db/index.ts */ import { DatabaseSync } from "node:sqlite" import { join, dirname } from 'node:path' import { fileURLToPath } from 'node:url' -import { readFileSync } from 'node:fs' const __dirname = dirname(fileURLToPath(import.meta.url)) // 初始化数据库连接 const db = new DatabaseSync(join(__dirname, 'media.db')) -// 执行schema.sql中的SQL语句 -const schema = readFileSync(join(__dirname, 'schema.sql'), 'utf-8') -db.exec(schema) - -export { db } \ No newline at end of file +export { db } diff --git a/db/media.db b/db/media.db deleted file mode 100644 index 5f56da4868a5977d0cc8f0468fe2ef864226465d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94208 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 diff --git a/routes/media.ts b/routes/media.ts index d680d5b..e258ad3 100644 --- a/routes/media.ts +++ b/routes/media.ts @@ -5,9 +5,9 @@ import type { JwtVariables } from 'hono/jwt' const media = new Hono<{ Variables: JwtVariables }>() // 获取所有媒体记录 -media.get('/list', async (c) => { +media.get('/list', (c) => { try { - const mediaList = await db.prepare('SELECT * FROM media').all() + const mediaList = db.prepare('SELECT * FROM media').all() return c.json({ code: 0, data: mediaList, @@ -24,12 +24,12 @@ media.post('/create', async (c) => { const data = await c.req.json() const { title, type, rating, notes, platform, date } = data - const result = await db.prepare(` + const result = db.prepare(` INSERT INTO media (title, type, rating, notes, platform, date, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, datetime('now'), datetime('now')) `).run(title, type, rating, notes, platform, date) - const newMedia = await db.prepare('SELECT * FROM media WHERE id = ?').get(result.lastInsertRowid) + const newMedia = db.prepare('SELECT * FROM media WHERE id = ?').get(result.lastInsertRowid) return c.json({ code: 0, @@ -48,13 +48,13 @@ media.put('/updateById/:id', async (c) => { const data = await c.req.json() const { title, type, rating, notes, platform, date } = data - await db.prepare(` + db.prepare(` UPDATE media SET title = ?, type = ?, rating = ?, notes = ?, platform = ?, date = ?, updated_at = datetime('now') WHERE id = ? `).run(title, type, rating, notes, platform, date, id) - const updatedMedia = await db.prepare('SELECT * FROM media WHERE id = ?').get(id) + const updatedMedia = db.prepare('SELECT * FROM media WHERE id = ?').get(id) if (!updatedMedia) { return c.json({ code: 1, data: {}, message: 'Media not found' }, 404) @@ -74,7 +74,7 @@ media.put('/updateById/:id', async (c) => { media.delete('/deleteById/:id', async (c) => { try { const id = c.req.param('id') - await db.prepare('DELETE FROM media WHERE id = ?').run(id) + db.prepare('DELETE FROM media WHERE id = ?').run(id) return c.json({ code: 0, data: {}, message: 'Deleted successfully' }) } catch (error: any) { return c.json({ code: 2, data: {}, message: error.message }, 500) @@ -126,12 +126,15 @@ media.get('/page', async (c) => { params.push(pageSize.toString(), offset.toString()) // 获取总数 - const countQuery = query.replace('SELECT *', 'SELECT COUNT(*) as total') - const totalResult = await db.prepare(countQuery).get(...params.slice(0, -2)) + const countQuery = query + .replace('SELECT *', 'SELECT COUNT(*) as total') + .replace(/ORDER BY.*$/, '') // 移除 ORDER BY 子句 + .replace(/LIMIT.*$/, '') // 移除 LIMIT 和 OFFSET 子句 + const totalResult = db.prepare(countQuery).get(...params.slice(0, -2)) const total = totalResult?.total || 0 // 获取分页数据 - const mediaList = await db.prepare(query).all(...params) + const mediaList = db.prepare(query).all(...params) return c.json({ code: 0, diff --git a/routes/user.ts b/routes/user.ts index 0763c8f..678050e 100644 --- a/routes/user.ts +++ b/routes/user.ts @@ -1,7 +1,7 @@ /* * @Date: 2025-06-11 17:57:58 * @LastEditors: 陈子健 - * @LastEditTime: 2025-06-13 13:50:14 + * @LastEditTime: 2025-06-13 14:23:37 * @FilePath: /my-score/honoback/routes/user.ts */ import { Hono } from 'hono' @@ -19,7 +19,7 @@ user.post('/login', async (c) => { const { username, password } = await c.req.json() // 从数据库验证用户 - const user = await db.prepare('SELECT * FROM users WHERE username = ? AND password = ?') + const user = db.prepare('SELECT * FROM users WHERE username = ? AND password = ?') .get(username, password) if (user) {