Initial
This commit is contained in:
44
server/services/profile.js
Normal file
44
server/services/profile.js
Normal file
@@ -0,0 +1,44 @@
|
||||
const { json, now, one, parseJson, run } = require('../db');
|
||||
const { publicUser } = require('../middleware/auth');
|
||||
|
||||
const defaultPreferences = {
|
||||
theme: 'mixedAssetsDark'
|
||||
};
|
||||
|
||||
function getPreferences(userId) {
|
||||
const row = one('SELECT preferences_json FROM user_preferences WHERE user_id = ?', [userId]);
|
||||
return {
|
||||
...defaultPreferences,
|
||||
...parseJson(row?.preferences_json, {})
|
||||
};
|
||||
}
|
||||
|
||||
function getProfile(user) {
|
||||
return {
|
||||
user: publicUser(user),
|
||||
preferences: getPreferences(user.id)
|
||||
};
|
||||
}
|
||||
|
||||
function savePreferences(userId, preferences) {
|
||||
const merged = {
|
||||
...getPreferences(userId),
|
||||
...(preferences || {})
|
||||
};
|
||||
run(
|
||||
`INSERT INTO user_preferences (user_id, preferences_json, updated_at)
|
||||
VALUES (?, ?, ?)
|
||||
ON CONFLICT(user_id) DO UPDATE SET
|
||||
preferences_json = excluded.preferences_json,
|
||||
updated_at = excluded.updated_at`,
|
||||
[userId, json(merged), now()]
|
||||
);
|
||||
return merged;
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
defaultPreferences,
|
||||
getProfile,
|
||||
getPreferences,
|
||||
savePreferences
|
||||
};
|
||||
Reference in New Issue
Block a user