Persist learn progress per user

This commit is contained in:
Remi
2025-09-18 23:28:02 +02:00
committed by itsrubberduck
parent b6785e9f05
commit 6dbfe07d2b
6 changed files with 231 additions and 3 deletions

View File

@@ -0,0 +1,24 @@
import { requireUserSession } from '../../utils/auth'
import { LearnProfile } from '../../models/LearnProfile'
import { createDefaultLearnConfig, createDefaultLearnState } from '~~/shared/learn/config'
export default defineEventHandler(async (event) => {
const user = await requireUserSession(event)
const profile = await LearnProfile.findOne({ user: user._id })
if (!profile) {
return createDefaultLearnState()
}
const config = { ...createDefaultLearnConfig(), ...(profile.config || {}) }
const progress =
profile.progress && typeof profile.progress === 'object'
? JSON.parse(JSON.stringify(profile.progress))
: {}
return {
xp: typeof profile.xp === 'number' ? profile.xp : 0,
progress,
config,
}
})