import { Hono } from 'hono' import type { Variables, WithAuth } from "./middlewares.ts"; export function createDateNotesRoutes(withAuth: WithAuth) { const dateNotesRoutes = new Hono<{ Variables: Variables }>() // 创建日期笔记 dateNotesRoutes.post('/', withAuth, async (c) => { try { const apiClient = c.get('apiClient') const { date, title, content } = await c.req.json() if (!date || !title || !content) { return c.json({ error: '缺少必要参数' }, 400) } const user = c.get('user') if (!user) return c.json({ error: '未授权访问' }, 401) const [noteId] = await apiClient.database.table('date_notes').insert({ date, title, content, user_id: user.id, created_at: apiClient.database.fn.now(), updated_at: apiClient.database.fn.now() }) return c.json({ message: '日期笔记创建成功', data: { id: noteId } }, 201) } catch (error) { console.error('创建日期笔记失败:', error) return c.json({ error: '创建日期笔记失败' }, 500) } }) // 获取日期笔记列表(支持日期范围查询) dateNotesRoutes.get('/', withAuth, async (c) => { try { const apiClient = c.get('apiClient') const page = Number(c.req.query('page')) || 1 const pageSize = Number(c.req.query('pageSize')) || 20 const startDate = c.req.query('startDate') const endDate = c.req.query('endDate') const user = c.get('user') if (!user) return c.json({ error: '未授权访问' }, 401) const query = apiClient.database.table('date_notes') .where('user_id', user.id) .orderBy('date', 'desc') .limit(pageSize) .offset((page - 1) * pageSize) // 日期范围查询 if (startDate) query.where('date', '>=', startDate) if (endDate) query.where('date', '<=', endDate) const countQuery = query.clone() const notes = await query // 获取总数用于分页 const total = await countQuery.count() const totalCount = Number(total) const totalPages = Math.ceil(totalCount / pageSize) return c.json({ data: notes, pagination: { total: totalCount, current: page, pageSize, totalPages } }) } catch (error) { console.error('获取日期笔记列表失败:', error) return c.json({ error: '获取日期笔记列表失败' }, 500) } }) // 获取单个日期笔记详情 dateNotesRoutes.get('/:id', withAuth, async (c) => { try { const apiClient = c.get('apiClient') const noteId = c.req.param('id') const user = c.get('user') if (!user) return c.json({ error: '未授权访问' }, 401) const note = await apiClient.database.table('date_notes') .where('id', noteId) .where('user_id', user.id) .first() if (!note) { return c.json({ error: '日期笔记不存在或无权访问' }, 404) } return c.json({ message: '获取日期笔记成功', data: note }) } catch (error) { console.error('获取日期笔记详情失败:', error) return c.json({ error: '获取日期笔记详情失败' }, 500) } }) // 更新日期笔记 dateNotesRoutes.put('/:id', withAuth, async (c) => { try { const apiClient = c.get('apiClient') const { date, title, content } = await c.req.json() if (!date || !title || !content) { return c.json({ error: '缺少必要参数' }, 400) } const user = c.get('user') if (!user) return c.json({ error: '未授权访问' }, 401) const noteId = c.req.param('id') await apiClient.database.table('date_notes') .where('id', noteId) .where('user_id', user.id) .update({ date, title, content, updated_at: apiClient.database.fn.now() }) return c.json({ message: '日期笔记更新成功' }) } catch (error) { console.error('更新日期笔记失败:', error) return c.json({ error: '更新日期笔记失败' }, 500) } }) // 删除日期笔记 dateNotesRoutes.delete('/:id', withAuth, async (c) => { try { const apiClient = c.get('apiClient') const user = c.get('user') if (!user) return c.json({ error: '未授权访问' }, 401) const noteId = c.req.param('id') await apiClient.database.table('date_notes') .where('id', noteId) .where('user_id', user.id) .delete() return c.json({ message: '日期笔记已删除' }) } catch (error) { console.error('删除日期笔记失败:', error) return c.json({ error: '删除日期笔记失败' }, 500) } }) return dateNotesRoutes }