| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- 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
- }
|