fix: remove intFields hack and update db.parseIntFields to only parseInt if field value is a number

This commit is contained in:
Julian Lam
2024-03-06 11:45:29 -05:00
parent cda25bb646
commit f368a1a87f
5 changed files with 10 additions and 26 deletions

View File

@@ -11,11 +11,14 @@ if (!databaseName) {
} }
const primaryDB = require(`./${databaseName}`); const primaryDB = require(`./${databaseName}`);
const utils = require('../utils');
primaryDB.parseIntFields = function (data, intFields, requestedFields) { primaryDB.parseIntFields = function (data, intFields, requestedFields) {
intFields.forEach((field) => { intFields.forEach((field) => {
if (!requestedFields || !requestedFields.length || requestedFields.includes(field)) { if (!requestedFields || !requestedFields.length || requestedFields.includes(field)) {
data[field] = parseInt(data[field], 10) || 0; data[field] = utils.isNumber(data[field]) ?
parseInt(data[field], 10) || 0 :
data[field];
} }
}); });
}; };

View File

@@ -59,19 +59,8 @@ module.exports = function (Posts) {
}; };
function modifyPost(post, fields) { function modifyPost(post, fields) {
const _intFields = [...intFields];
if (post) { if (post) {
['pid', 'uid', 'tid'].forEach((prop) => { db.parseIntFields(post, intFields, fields);
if (
post.hasOwnProperty(prop) &&
(activitypub.helpers.isUri(post[prop]) || validator.isUUID(String(post[prop])))
) {
_intFields.splice(_intFields.indexOf(prop), 1);
}
});
db.parseIntFields(post, _intFields, fields);
if (post.hasOwnProperty('upvotes') && post.hasOwnProperty('downvotes')) { if (post.hasOwnProperty('upvotes') && post.hasOwnProperty('downvotes')) {
post.votes = post.upvotes - post.downvotes; post.votes = post.upvotes - post.downvotes;
} }

View File

@@ -95,13 +95,7 @@ function modifyTopic(topic, fields) {
return; return;
} }
const _intFields = [...intFields]; db.parseIntFields(topic, intFields, fields);
if (validator.isUUID(String(topic.tid))) {
_intFields.splice(_intFields.indexOf('uid'), 1);
_intFields.splice(_intFields.indexOf('tid'), 1);
_intFields.splice(_intFields.indexOf('mainPid'), 1);
}
db.parseIntFields(topic, _intFields, fields);
if (topic.hasOwnProperty('title')) { if (topic.hasOwnProperty('title')) {
topic.titleRaw = topic.title; topic.titleRaw = topic.title;

View File

@@ -246,9 +246,12 @@ module.exports = function (Topics) {
}; };
Topics.addPostToTopic = async function (tid, postData) { Topics.addPostToTopic = async function (tid, postData) {
console.log('now in addPostToTopic', tid, postData);
const mainPid = await Topics.getTopicField(tid, 'mainPid'); const mainPid = await Topics.getTopicField(tid, 'mainPid');
console.log(mainPid);
if (!mainPid) { if (!mainPid) {
await Topics.setTopicField(tid, 'mainPid', postData.pid); await Topics.setTopicField(tid, 'mainPid', postData.pid);
console.log('what');
} else { } else {
const upvotes = parseInt(postData.upvotes, 10) || 0; const upvotes = parseInt(postData.upvotes, 10) || 0;
const downvotes = parseInt(postData.downvotes, 10) || 0; const downvotes = parseInt(postData.downvotes, 10) || 0;

View File

@@ -205,12 +205,7 @@ module.exports = function (User) {
return; return;
} }
const _intFields = [...intFields]; db.parseIntFields(user, intFields, requestedFields);
if (activitypub.helpers.isUri(user.uid)) {
_intFields.splice(_intFields.indexOf('uid'), 1);
}
db.parseIntFields(user, _intFields, requestedFields);
if (user.hasOwnProperty('username')) { if (user.hasOwnProperty('username')) {
parseDisplayName(user, uidToSettings); parseDisplayName(user, uidToSettings);