feat: add minecraftStats to player model and update related API endpoints

This commit is contained in:
Lars Behrends
2025-12-29 09:27:06 +01:00
parent abebf8f7a2
commit 5fe6724663
4 changed files with 80 additions and 19 deletions

View File

@@ -152,9 +152,11 @@ app.get('/api/players', (req, res) => {
// Parse JSON fields
const parsed = rows.map(r => ({
...r,
tags: JSON.parse(r.tags),
stats: JSON.parse(r.stats),
inventory: JSON.parse(r.inventory),
tags: JSON.parse(r.tags || '[]'),
stats: JSON.parse(r.minecraftStats || '{}'),
//stats: JSON.parse(r.stats || '{}'),
//minecraftStats: r.minecraftStats ? JSON.parse(r.minecraftStats) : undefined,
inventory: JSON.parse(r.inventory || '[]'),
isOnline: !!r.isOnline
}));
res.json(parsed);
@@ -474,15 +476,16 @@ app.post('/api/admin/npc-citizen', (req, res) => {
role: role || 'Bürger',
organizationId: organizationId || null
}),
minecraftStats: null,
inventory: JSON.stringify([]),
storyMarkdown: storyMarkdown || `# ${username}\n\nEin NPC-Bürger im Obsidian-Tal.`,
discordId: null
};
db.run(`INSERT INTO players (uuid, username, isOnline, isNpc, tags, stats, inventory, storyMarkdown, discordId)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,
db.run(`INSERT INTO players (uuid, username, isOnline, isNpc, tags, stats, minecraftStats, inventory, storyMarkdown, discordId)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
[npcData.uuid, npcData.username, npcData.isOnline, npcData.isNpc, npcData.tags,
npcData.stats, npcData.inventory, npcData.storyMarkdown, npcData.discordId],
npcData.stats, npcData.minecraftStats, npcData.inventory, npcData.storyMarkdown, npcData.discordId],
function(err) {
if (err) {
console.error('Error creating NPC citizen:', err);
@@ -1600,7 +1603,8 @@ app.post('/api/data', (req, res) => { const { eventType, player, uuid, timestamp
isNpc: 0,
isAdmin: 0,
tags: JSON.stringify([]),
stats: JSON.stringify({
stats: JSON.stringify({}),
minecraftStats: JSON.stringify({
char,
statistics,
advancements,
@@ -1620,8 +1624,8 @@ app.post('/api/data', (req, res) => { const { eventType, player, uuid, timestamp
if (row) {
// Update existing player
db.run(`UPDATE players SET username = ?, isOnline = ?, stats = ?, storyMarkdown = ? WHERE uuid = ?`,
[playerData.username, playerData.isOnline, playerData.stats, playerData.storyMarkdown, uuid],
db.run(`UPDATE players SET username = ?, isOnline = ?, minecraftStats = ? WHERE uuid = ?`,
[playerData.username, playerData.isOnline, playerData.minecraftStats, uuid],
function(err) {
if (err) {
console.error('Error updating player:', err);
@@ -1637,10 +1641,10 @@ app.post('/api/data', (req, res) => { const { eventType, player, uuid, timestamp
);
} else {
// Insert new player
db.run(`INSERT INTO players (uuid, username, isOnline, isNpc, isAdmin, tags, stats, inventory, storyMarkdown, discordId)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
db.run(`INSERT INTO players (uuid, username, isOnline, isNpc, isAdmin, tags, stats, minecraftStats, inventory, storyMarkdown, discordId)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
[playerData.uuid, playerData.username, playerData.isOnline, playerData.isNpc, playerData.isAdmin,
playerData.tags, playerData.stats, playerData.inventory, playerData.storyMarkdown, playerData.discordId],
playerData.tags, playerData.stats, playerData.minecraftStats, playerData.inventory, playerData.storyMarkdown, playerData.discordId],
function(err) {
if (err) {
console.error('Error inserting player:', err);