import { app } from '@/app.ts'; import { User } from '@/models/user.ts'; app .route({ path: 'user', key: 'getUpdateInfo', middleware: ['auth'], }) .define(async (ctx) => { const tokenUser = ctx.state?.tokenUser || {}; const user = await User.findByPk(tokenUser.id); if (!user) { ctx.throw(500, 'user not found'); } ctx.body = { nickname: user.nickname, avatar: user.avatar, data: user.data, }; }) .addTo(app); app .route('user', 'updateInfo', { middleware: ['auth'], }) .define(async (ctx) => { const { nickname, avatar, data } = ctx.query.data || {}; const tokenUser = ctx.state?.tokenUser || {}; const { id, uid } = tokenUser; const user = await User.findByPk(id); let updateData: any = {}; if (!user) { ctx.throw(500, 'user not found'); } if (nickname) { updateData.nickname = nickname; } if (avatar) { updateData.avatar = avatar; } await user.update( { ...updateData, data: { ...user.data, ...data, }, }, { fields: ['nickname', 'avatar', 'data'], }, ); user.setTokenUser(tokenUser); ctx.body = await user.getInfo(); }) .addTo(app);