Requested limit to be fulfilled if possible
This commit is contained in:
parent
e4b1e3225e
commit
3d93458d8b
10 changed files with 172 additions and 28 deletions
|
@ -93,13 +93,27 @@ export default define(meta, paramDef, async (ps, user) => {
|
||||||
}
|
}
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
const timeline = await query.take(ps.limit).getMany();
|
|
||||||
|
|
||||||
process.nextTick(() => {
|
process.nextTick(() => {
|
||||||
if (user) {
|
if (user) {
|
||||||
activeUsersChart.read(user);
|
activeUsersChart.read(user);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return await Notes.packMany(timeline, user);
|
// We fetch more than requested because some may be filtered out, and if there's less than
|
||||||
|
// requested, the pagination stops.
|
||||||
|
const found = [];
|
||||||
|
const take = Math.floor(ps.limit * 1.5);
|
||||||
|
let skip = 0;
|
||||||
|
while (found.length < ps.limit) {
|
||||||
|
const notes = await query.take(take).skip(skip).getMany();
|
||||||
|
found.push(...await Notes.packMany(notes, user))
|
||||||
|
skip += take;
|
||||||
|
if (notes.length < take) break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (found.length > ps.limit) {
|
||||||
|
found.length = ps.limit;
|
||||||
|
}
|
||||||
|
|
||||||
|
return found;
|
||||||
});
|
});
|
||||||
|
|
|
@ -151,11 +151,25 @@ export default define(meta, paramDef, async (ps, user) => {
|
||||||
}
|
}
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
const timeline = await query.take(ps.limit).getMany();
|
|
||||||
|
|
||||||
process.nextTick(() => {
|
process.nextTick(() => {
|
||||||
activeUsersChart.read(user);
|
activeUsersChart.read(user);
|
||||||
});
|
});
|
||||||
|
|
||||||
return await Notes.packMany(timeline, user);
|
// We fetch more than requested because some may be filtered out, and if there's less than
|
||||||
|
// requested, the pagination stops.
|
||||||
|
const found = [];
|
||||||
|
const take = Math.floor(ps.limit * 1.5);
|
||||||
|
let skip = 0;
|
||||||
|
while (found.length < ps.limit) {
|
||||||
|
const notes = await query.take(take).skip(skip).getMany();
|
||||||
|
found.push(...await Notes.packMany(notes, user))
|
||||||
|
skip += take;
|
||||||
|
if (notes.length < take) break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (found.length > ps.limit) {
|
||||||
|
found.length = ps.limit;
|
||||||
|
}
|
||||||
|
|
||||||
|
return found;
|
||||||
});
|
});
|
||||||
|
|
|
@ -123,13 +123,27 @@ export default define(meta, paramDef, async (ps, user) => {
|
||||||
}
|
}
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
const timeline = await query.take(ps.limit).getMany();
|
|
||||||
|
|
||||||
process.nextTick(() => {
|
process.nextTick(() => {
|
||||||
if (user) {
|
if (user) {
|
||||||
activeUsersChart.read(user);
|
activeUsersChart.read(user);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return await Notes.packMany(timeline, user);
|
// We fetch more than requested because some may be filtered out, and if there's less than
|
||||||
|
// requested, the pagination stops.
|
||||||
|
const found = [];
|
||||||
|
const take = Math.floor(ps.limit * 1.5);
|
||||||
|
let skip = 0;
|
||||||
|
while (found.length < ps.limit) {
|
||||||
|
const notes = await query.take(take).skip(skip).getMany();
|
||||||
|
found.push(...await Notes.packMany(notes, user))
|
||||||
|
skip += take;
|
||||||
|
if (notes.length < take) break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (found.length > ps.limit) {
|
||||||
|
found.length = ps.limit;
|
||||||
|
}
|
||||||
|
|
||||||
|
return found;
|
||||||
});
|
});
|
||||||
|
|
|
@ -86,9 +86,24 @@ export default define(meta, paramDef, async (ps, user) => {
|
||||||
query.setParameters(followingQuery.getParameters());
|
query.setParameters(followingQuery.getParameters());
|
||||||
}
|
}
|
||||||
|
|
||||||
const mentions = await query.take(ps.limit).getMany();
|
|
||||||
|
|
||||||
read(user.id, mentions);
|
// We fetch more than requested because some may be filtered out, and if there's less than
|
||||||
|
// requested, the pagination stops.
|
||||||
|
const found = [];
|
||||||
|
const take = Math.floor(ps.limit * 1.5);
|
||||||
|
let skip = 0;
|
||||||
|
while (found.length < ps.limit) {
|
||||||
|
const notes = await query.take(take).skip(skip).getMany();
|
||||||
|
found.push(...await Notes.packMany(notes, user))
|
||||||
|
skip += take;
|
||||||
|
if (notes.length < take) break;
|
||||||
|
}
|
||||||
|
|
||||||
return await Notes.packMany(mentions, user);
|
if (found.length > ps.limit) {
|
||||||
|
found.length = ps.limit;
|
||||||
|
}
|
||||||
|
|
||||||
|
read(user.id, found);
|
||||||
|
|
||||||
|
return found;
|
||||||
});
|
});
|
||||||
|
|
|
@ -126,13 +126,27 @@ export default define(meta, paramDef, async (ps, user) => {
|
||||||
}
|
}
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
const timeline = await query.take(ps.limit).getMany();
|
|
||||||
|
|
||||||
process.nextTick(() => {
|
process.nextTick(() => {
|
||||||
if (user) {
|
if (user) {
|
||||||
activeUsersChart.read(user);
|
activeUsersChart.read(user);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return await Notes.packMany(timeline, user);
|
// We fetch more than requested because some may be filtered out, and if there's less than
|
||||||
|
// requested, the pagination stops.
|
||||||
|
const found = [];
|
||||||
|
const take = Math.floor(ps.limit * 1.5);
|
||||||
|
let skip = 0;
|
||||||
|
while (found.length < ps.limit) {
|
||||||
|
const notes = await query.take(take).skip(skip).getMany();
|
||||||
|
found.push(...await Notes.packMany(notes, user))
|
||||||
|
skip += take;
|
||||||
|
if (notes.length < take) break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (found.length > ps.limit) {
|
||||||
|
found.length = ps.limit;
|
||||||
|
}
|
||||||
|
|
||||||
|
return found;
|
||||||
});
|
});
|
||||||
|
|
|
@ -74,7 +74,21 @@ export default define(meta, paramDef, async (ps, user) => {
|
||||||
if (user) generateMutedUserQuery(query, user);
|
if (user) generateMutedUserQuery(query, user);
|
||||||
if (user) generateBlockedUserQuery(query, user);
|
if (user) generateBlockedUserQuery(query, user);
|
||||||
|
|
||||||
const renotes = await query.take(ps.limit).getMany();
|
// We fetch more than requested because some may be filtered out, and if there's less than
|
||||||
|
// requested, the pagination stops.
|
||||||
|
const found = [];
|
||||||
|
const take = Math.floor(ps.limit * 1.5);
|
||||||
|
let skip = 0;
|
||||||
|
while (found.length < ps.limit) {
|
||||||
|
const notes = await query.take(take).skip(skip).getMany();
|
||||||
|
found.push(...await Notes.packMany(notes, user))
|
||||||
|
skip += take;
|
||||||
|
if (notes.length < take) break;
|
||||||
|
}
|
||||||
|
|
||||||
return await Notes.packMany(renotes, user);
|
if (found.length > ps.limit) {
|
||||||
|
found.length = ps.limit;
|
||||||
|
}
|
||||||
|
|
||||||
|
return found;
|
||||||
});
|
});
|
||||||
|
|
|
@ -58,7 +58,21 @@ export default define(meta, paramDef, async (ps, user) => {
|
||||||
if (user) generateMutedUserQuery(query, user);
|
if (user) generateMutedUserQuery(query, user);
|
||||||
if (user) generateBlockedUserQuery(query, user);
|
if (user) generateBlockedUserQuery(query, user);
|
||||||
|
|
||||||
const timeline = await query.take(ps.limit).getMany();
|
// We fetch more than requested because some may be filtered out, and if there's less than
|
||||||
|
// requested, the pagination stops.
|
||||||
|
const found = [];
|
||||||
|
const take = Math.floor(ps.limit * 1.5);
|
||||||
|
let skip = 0;
|
||||||
|
while (found.length < ps.limit) {
|
||||||
|
const notes = await query.take(take).skip(skip).getMany();
|
||||||
|
found.push(...await Notes.packMany(notes, user))
|
||||||
|
skip += take;
|
||||||
|
if (notes.length < take) break;
|
||||||
|
}
|
||||||
|
|
||||||
return await Notes.packMany(timeline, user);
|
if (found.length > ps.limit) {
|
||||||
|
found.length = ps.limit;
|
||||||
|
}
|
||||||
|
|
||||||
|
return found;
|
||||||
});
|
});
|
||||||
|
|
|
@ -145,8 +145,21 @@ export default define(meta, paramDef, async (ps, me) => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Search notes
|
// We fetch more than requested because some may be filtered out, and if there's less than
|
||||||
const notes = await query.take(ps.limit).getMany();
|
// requested, the pagination stops.
|
||||||
|
const found = [];
|
||||||
|
const take = Math.floor(ps.limit * 1.5);
|
||||||
|
let skip = 0;
|
||||||
|
while (found.length < ps.limit) {
|
||||||
|
const notes = await query.take(take).skip(skip).getMany();
|
||||||
|
found.push(...await Notes.packMany(notes, me))
|
||||||
|
skip += take;
|
||||||
|
if (notes.length < take) break;
|
||||||
|
}
|
||||||
|
|
||||||
return await Notes.packMany(notes, me);
|
if (found.length > ps.limit) {
|
||||||
|
found.length = ps.limit;
|
||||||
|
}
|
||||||
|
|
||||||
|
return found;
|
||||||
});
|
});
|
||||||
|
|
|
@ -143,11 +143,25 @@ export default define(meta, paramDef, async (ps, user) => {
|
||||||
}
|
}
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
const timeline = await query.take(ps.limit).getMany();
|
|
||||||
|
|
||||||
process.nextTick(() => {
|
process.nextTick(() => {
|
||||||
activeUsersChart.read(user);
|
activeUsersChart.read(user);
|
||||||
});
|
});
|
||||||
|
|
||||||
return await Notes.packMany(timeline, user);
|
// We fetch more than requested because some may be filtered out, and if there's less than
|
||||||
|
// requested, the pagination stops.
|
||||||
|
const found = [];
|
||||||
|
const take = Math.floor(ps.limit * 1.5);
|
||||||
|
let skip = 0;
|
||||||
|
while (found.length < ps.limit) {
|
||||||
|
const notes = await query.take(take).skip(skip).getMany();
|
||||||
|
found.push(...await Notes.packMany(notes, user))
|
||||||
|
skip += take;
|
||||||
|
if (notes.length < take) break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (found.length > ps.limit) {
|
||||||
|
found.length = ps.limit;
|
||||||
|
}
|
||||||
|
|
||||||
|
return found;
|
||||||
});
|
});
|
||||||
|
|
|
@ -138,9 +138,27 @@ export default define(meta, paramDef, async (ps, user) => {
|
||||||
}
|
}
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
const timeline = await query.take(ps.limit).getMany();
|
process.nextTick(() => {
|
||||||
|
if (user) {
|
||||||
activeUsersChart.read(user);
|
activeUsersChart.read(user);
|
||||||
|
}
|
||||||
return await Notes.packMany(timeline, user);
|
});
|
||||||
|
|
||||||
|
// We fetch more than requested because some may be filtered out, and if there's less than
|
||||||
|
// requested, the pagination stops.
|
||||||
|
const found = [];
|
||||||
|
const take = Math.floor(ps.limit * 1.5);
|
||||||
|
let skip = 0;
|
||||||
|
while (found.length < ps.limit) {
|
||||||
|
const notes = await query.take(take).skip(skip).getMany();
|
||||||
|
found.push(...await Notes.packMany(notes, user))
|
||||||
|
skip += take;
|
||||||
|
if (notes.length < take) break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (found.length > ps.limit) {
|
||||||
|
found.length = ps.limit;
|
||||||
|
}
|
||||||
|
|
||||||
|
return found;
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in a new issue