import { Hono } from 'hono' import type { Variables, WithAuth } from "./middlewares.ts"; export function createClassroomDataRoutes(withAuth: WithAuth) { const classroomDataRoutes = new Hono<{ Variables: Variables }>() // 获取课堂数据列表 classroomDataRoutes.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')) || 10 const offset = (page - 1) * pageSize const search = c.req.query('search') || '' const classroomId = c.req.query('classroomId') let query = apiClient.database.table('classroom_data') .orderBy('id', 'desc') if (search) { query = query.where('title', 'like', `%${search}%`) } if (classroomId) { query = query.where('classroom_id', classroomId) } const total = await query.clone().count() const data = await query.select('*') .limit(pageSize).offset(offset) return c.json({ data, pagination: { total: Number(total), current: page, pageSize } }) } catch (error) { console.error('获取课堂数据列表失败:', error) return c.json({ error: '获取课堂数据列表失败' }, 500) } }) // 获取单个课堂数据详情 classroomDataRoutes.get('/:id', withAuth, async (c) => { try { const id = Number(c.req.param('id')) if (!id || isNaN(id)) { return c.json({ error: '无效的课堂数据ID' }, 400) } const apiClient = c.get('apiClient') const data = await apiClient.database.table('classroom_data') .where('id', id) .first() if (!data) { return c.json({ error: '课堂数据不存在' }, 404) } return c.json({ data, message: '获取课堂数据详情成功' }) } catch (error) { console.error('获取课堂数据详情失败:', error) return c.json({ error: '获取课堂数据详情失败' }, 500) } }) // 创建课堂数据 classroomDataRoutes.post('/', withAuth, async (c) => { try { const apiClient = c.get('apiClient') const body = await c.req.json() // 验证必填字段 const { classroom_id, title, content } = body if (!classroom_id || !title || !content) { return c.json({ error: '缺少必要的课堂数据信息' }, 400) } // 创建课堂数据 const [id] = await apiClient.database.table('classroom_data').insert({ classroom_id, title, content, created_at: new Date(), updated_at: new Date() }) const newData = await apiClient.database.table('classroom_data') .where('id', id) .first() return c.json({ data: newData, message: '创建课堂数据成功' }) } catch (error) { console.error('创建课堂数据失败:', error) return c.json({ error: '创建课堂数据失败' }, 500) } }) // 更新课堂数据 classroomDataRoutes.put('/:id', withAuth, async (c) => { try { const id = Number(c.req.param('id')) if (!id || isNaN(id)) { return c.json({ error: '无效的课堂数据ID' }, 400) } const apiClient = c.get('apiClient') const body = await c.req.json() // 验证必填字段 const { title, content } = body if (!title || !content) { return c.json({ error: '缺少必要的课堂数据信息' }, 400) } // 检查数据是否存在 const existingData = await apiClient.database.table('classroom_data') .where('id', id) .first() if (!existingData) { return c.json({ error: '课堂数据不存在' }, 404) } // 更新数据 await apiClient.database.table('classroom_data') .where('id', id) .update({ title, content, updated_at: new Date() }) const updatedData = await apiClient.database.table('classroom_data') .where('id', id) .first() return c.json({ data: updatedData, message: '更新课堂数据成功' }) } catch (error) { console.error('更新课堂数据失败:', error) return c.json({ error: '更新课堂数据失败' }, 500) } }) // 删除课堂数据 classroomDataRoutes.delete('/:id', withAuth, async (c) => { try { const id = Number(c.req.param('id')) if (!id || isNaN(id)) { return c.json({ error: '无效的课堂数据ID' }, 400) } const apiClient = c.get('apiClient') // 检查数据是否存在 const existingData = await apiClient.database.table('classroom_data') .where('id', id) .first() if (!existingData) { return c.json({ error: '课堂数据不存在' }, 404) } // 删除数据 await apiClient.database.table('classroom_data') .where('id', id) .delete() return c.json({ message: '删除课堂数据成功', id }) } catch (error) { console.error('删除课堂数据失败:', error) return c.json({ error: '删除课堂数据失败' }, 500) } }) return classroomDataRoutes }