Node redis (#13500)

* refactor: start migrating to node-redis

* few more zset fixes

* fix: db.scan

* fix: list methods

* fix set methods

* fix: hash methods

* use hasOwn, remove cloning

* sorted set fixes

* fix: so data is converted to strings before saving

otherwise node-redis throws below error
TypeError: "arguments[2]" must be of type "string | Buffer", got number instead.

* chore: remove comments

* fix: zrank string param

* use new close

* chore: up dbsearch

* test: add log

* test: more log

* test: log failing test

* test: catch errors in formatApiResponse

add await so exception goes to catch

* tetst: add log

* fix: dont set null/undefined values

* test: more fixes
This commit is contained in:
Barış Uşaklı
2025-06-18 13:04:57 -04:00
committed by GitHub
parent 3f7d415744
commit 14043ab0fd
21 changed files with 307 additions and 305 deletions

View File

@@ -449,7 +449,8 @@ describe('Inbox resolution', () => {
await activitypub.actors.assert(id);
const inboxes = await activitypub.resolveInboxes([id]);
console.log('inboxes', inboxes);
console.log('actor', actor);
assert(inboxes && Array.isArray(inboxes));
assert.strictEqual(inboxes.length, 1);
assert.strictEqual(inboxes[0], actor.inbox);

View File

@@ -650,7 +650,7 @@ describe('Notes', () => {
it('should upvote an asserted remote post', async () => {
const { id } = helpers.mocks.note();
await activitypub.notes.assert(0, [id], { skipChecks: true });
await activitypub.notes.assert(0, id, { skipChecks: true });
const { activity: like } = helpers.mocks.like({
object: id,
});
@@ -672,7 +672,7 @@ describe('Notes', () => {
it('should update a note\'s content', async () => {
const { id: actor } = helpers.mocks.person();
const { id, note } = helpers.mocks.note({ attributedTo: actor });
await activitypub.notes.assert(0, [id], { skipChecks: true });
await activitypub.notes.assert(0, id, { skipChecks: true });
note.content = utils.generateUUID();
const { activity: update } = helpers.mocks.update({ object: note });
const { activity } = helpers.mocks.announce({ object: update });

View File

@@ -501,7 +501,9 @@ NUMERIC)-- WsPn&query[cid]=-1&parentCid=0&selectedCids[]=-1&privilege=topics:rea
['byScoreWithScoresKeys1', 1, 'value1'],
['byScoreWithScoresKeys2', 2, 'value2'],
]);
const data = await db.getSortedSetRevRangeByScoreWithScores(['byScoreWithScoresKeys1', 'byScoreWithScoresKeys2'], 0, -1, 5, -5);
const data = await db.getSortedSetRevRangeByScoreWithScores([
'byScoreWithScoresKeys1', 'byScoreWithScoresKeys2',
], 0, -1, 5, -5);
assert.deepStrictEqual(data, [{ value: 'value2', score: 2 }, { value: 'value1', score: 1 }]);
});
});
@@ -1144,23 +1146,17 @@ NUMERIC)-- WsPn&query[cid]=-1&parentCid=0&selectedCids[]=-1&privilege=topics:rea
assert.strictEqual(await db.exists('sorted3'), false);
});
it('should remove multiple values from multiple keys', (done) => {
db.sortedSetAdd('multiTest1', [1, 2, 3, 4], ['one', 'two', 'three', 'four'], (err) => {
assert.ifError(err);
db.sortedSetAdd('multiTest2', [3, 4, 5, 6], ['three', 'four', 'five', 'six'], (err) => {
assert.ifError(err);
db.sortedSetRemove(['multiTest1', 'multiTest2'], ['two', 'three', 'four', 'five', 'doesnt exist'], (err) => {
assert.ifError(err);
db.getSortedSetsMembers(['multiTest1', 'multiTest2'], (err, members) => {
assert.ifError(err);
assert.equal(members[0].length, 1);
assert.equal(members[1].length, 1);
assert.deepEqual(members, [['one'], ['six']]);
done();
});
});
});
});
it('should remove multiple values from multiple keys', async () => {
await db.sortedSetAdd('multiTest1', [1, 2, 3, 4], ['one', 'two', 'three', 'four']);
await db.sortedSetAdd('multiTest2', [3, 4, 5, 6], ['three', 'four', 'five', 'six']);
await db.sortedSetRemove(['multiTest1', 'multiTest2'], ['two', 'three', 'four', 'five', 'doesnt exist']);
const members = await db.getSortedSetsMembers(['multiTest1', 'multiTest2']);
assert.equal(members[0].length, 1);
assert.equal(members[1].length, 1);
assert.deepEqual(members, [['one'], ['six']]);
});
it('should remove value from multiple keys', async () => {
@@ -1171,24 +1167,15 @@ NUMERIC)-- WsPn&query[cid]=-1&parentCid=0&selectedCids[]=-1&privilege=topics:rea
assert.deepStrictEqual(await db.getSortedSetRange('multiTest4', 0, -1), ['four', 'five', 'six']);
});
it('should remove multiple values from multiple keys', (done) => {
db.sortedSetAdd('multiTest5', [1], ['one'], (err) => {
assert.ifError(err);
db.sortedSetAdd('multiTest6', [2], ['two'], (err) => {
assert.ifError(err);
db.sortedSetAdd('multiTest7', [3], [333], (err) => {
assert.ifError(err);
db.sortedSetRemove(['multiTest5', 'multiTest6', 'multiTest7'], ['one', 'two', 333], (err) => {
assert.ifError(err);
db.getSortedSetsMembers(['multiTest5', 'multiTest6', 'multiTest7'], (err, members) => {
assert.ifError(err);
assert.deepEqual(members, [[], [], []]);
done();
});
});
});
});
});
it('should remove multiple values from multiple keys', async () => {
await db.sortedSetAdd('multiTest5', [1], ['one']);
await db.sortedSetAdd('multiTest6', [2], ['two']);
await db.sortedSetAdd('multiTest7', [3], [333]);
await db.sortedSetRemove(['multiTest5', 'multiTest6', 'multiTest7'], ['one', 'two', 333]);
const members = await db.getSortedSetsMembers(['multiTest5', 'multiTest6', 'multiTest7']);
assert.deepEqual(members, [[], [], []]);
});
it('should not remove anything if values is empty array', (done) => {
@@ -1379,7 +1366,10 @@ NUMERIC)-- WsPn&query[cid]=-1&parentCid=0&selectedCids[]=-1&privilege=topics:rea
weights: [1, 0.5],
}, (err, data) => {
assert.ifError(err);
assert.deepEqual([{ value: 'value2', score: 4 }, { value: 'value3', score: 5.5 }], data);
assert.deepEqual([
{ value: 'value2', score: 4 },
{ value: 'value3', score: 5.5 },
], data);
done();
});
});

View File

@@ -171,7 +171,6 @@ before(async function () {
require('../../src/user').startJobs();
await webserver.listen();
// Iterate over all of the test suites/contexts
this.test.parent.suites.forEach((suite) => {
// Attach an afterAll listener that resets the defaults