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('classroom_no', 'like', `%${search}%`) } const total = await query.clone().count() const data = await query.select('*') .limit(pageSize).offset(offset) data.forEach((val) => { val['status'] = Number(val['status']) }) 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) } data['status'] = Number(data['status']) 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_no, training_date, status, code } = body if (!classroom_no || !training_date || !status || !code) { return c.json({ error: '教室号、股票代码、训练日期和状态为必填项' }, 400) } // 创建课堂数据 const [id] = await apiClient.database.table('classroom_data').insert({ classroom_no, training_date, status, holding_stock: body.holding_stock || null, holding_cash: body.holding_cash || null, price: body.price || null, code: body.code || null, spare: body.spare || null, submit_user: body.submit_user || null, created_at: apiClient.database.fn.now(), updated_at: apiClient.database.fn.now() }) 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 { classroom_no, training_date, status } = body if (!classroom_no || !training_date || !status) { 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({ classroom_no, training_date, status, holding_stock: body.holding_stock || null, holding_cash: body.holding_cash || null, price: body.price || null, code: body.code || null, spare: body.spare || null, submit_user: body.submit_user || null, updated_at: apiClient.database.fn.now() }) 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 }