improve sweeping logic

This commit is contained in:
pa
2025-12-20 04:06:02 +09:00
committed by Natsumi
parent f4e1c745e8
commit d23f33d053
4 changed files with 52 additions and 25 deletions

View File

@@ -22,7 +22,7 @@ const feed = {
groupName: dbRow[8]
};
feedDatabase.push(row);
}, `SELECT * FROM ${dbVars.userPrefix}_feed_gps WHERE created_at >= date('${dateOffset}') ORDER BY id DESC`);
}, `SELECT * FROM ${dbVars.userPrefix}_feed_gps WHERE created_at >= date('${dateOffset}') ORDER BY id DESC LIMIT ${dbVars.maxTableSize}`);
await sqliteService.execute((dbRow) => {
var row = {
rowId: dbRow[0],
@@ -36,7 +36,7 @@ const feed = {
previousStatusDescription: dbRow[7]
};
feedDatabase.push(row);
}, `SELECT * FROM ${dbVars.userPrefix}_feed_status WHERE created_at >= date('${dateOffset}') ORDER BY id DESC`);
}, `SELECT * FROM ${dbVars.userPrefix}_feed_status WHERE created_at >= date('${dateOffset}') ORDER BY id DESC LIMIT ${dbVars.maxTableSize}`);
await sqliteService.execute((dbRow) => {
var row = {
rowId: dbRow[0],
@@ -48,7 +48,7 @@ const feed = {
previousBio: dbRow[5]
};
feedDatabase.push(row);
}, `SELECT * FROM ${dbVars.userPrefix}_feed_bio WHERE created_at >= date('${dateOffset}') ORDER BY id DESC`);
}, `SELECT * FROM ${dbVars.userPrefix}_feed_bio WHERE created_at >= date('${dateOffset}') ORDER BY id DESC LIMIT ${dbVars.maxTableSize}`);
await sqliteService.execute((dbRow) => {
var row = {
rowId: dbRow[0],
@@ -64,7 +64,7 @@ const feed = {
previousCurrentAvatarThumbnailImageUrl: dbRow[9]
};
feedDatabase.push(row);
}, `SELECT * FROM ${dbVars.userPrefix}_feed_avatar WHERE created_at >= date('${dateOffset}') ORDER BY id DESC`);
}, `SELECT * FROM ${dbVars.userPrefix}_feed_avatar WHERE created_at >= date('${dateOffset}') ORDER BY id DESC LIMIT ${dbVars.maxTableSize}`);
await sqliteService.execute((dbRow) => {
var row = {
rowId: dbRow[0],
@@ -78,7 +78,7 @@ const feed = {
groupName: dbRow[8]
};
feedDatabase.push(row);
}, `SELECT * FROM ${dbVars.userPrefix}_feed_online_offline WHERE created_at >= date('${dateOffset}') ORDER BY id DESC`);
}, `SELECT * FROM ${dbVars.userPrefix}_feed_online_offline WHERE created_at >= date('${dateOffset}') ORDER BY id DESC LIMIT ${dbVars.maxTableSize}`);
var compareByCreatedAt = function (a, b) {
var A = a.created_at;
var B = b.created_at;
@@ -91,6 +91,9 @@ const feed = {
return 0;
};
feedDatabase.sort(compareByCreatedAt);
if (feedDatabase.length > dbVars.maxTableSize) {
feedDatabase.splice(0, feedDatabase.length - dbVars.maxTableSize);
}
return feedDatabase;
},

View File

@@ -103,6 +103,12 @@ const gameLog = {
return 0;
};
gamelogDatabase.sort(compareByCreatedAt);
if (gamelogDatabase.length > dbVars.maxTableSize) {
gamelogDatabase.splice(
0,
gamelogDatabase.length - dbVars.maxTableSize
);
}
return gamelogDatabase;
},

View File

@@ -173,9 +173,7 @@ export const useFeedStore = defineStore('Feed', () => {
function addFeed(feed) {
notificationStore.queueFeedNoty(feed);
feedSessionTable.value.push(feed);
if (feedSessionTable.value.length > vrcxStore.maxTableSize + 50) {
feedSessionTable.value.splice(0, 50);
}
sweepFeedSessionTable();
sharedFeedStore.updateSharedFeed(false);
if (
feedTable.value.filter.length > 0 &&
@@ -197,29 +195,48 @@ export const useFeedStore = defineStore('Feed', () => {
UiStore.notifyMenu('feed');
}
function sweepFeed() {
let limit;
const { data } = feedTable.value;
const j = data.length;
if (j > vrcxStore.maxTableSize) {
data.splice(0, j - vrcxStore.maxTableSize);
function sweepFeedSessionTable() {
const data = feedSessionTable.value;
const k = data.length;
if (!k) {
return;
}
// 24 hour limit
const date = new Date();
date.setDate(date.getDate() - 1); // 24 hour limit
limit = date.toJSON();
let i = 0;
const k = feedSessionTable.value.length;
while (i < k && feedSessionTable.value[i].created_at < limit) {
++i;
date.setDate(date.getDate() - 1);
const limit = date.toJSON();
if (data[0].created_at < limit) {
let i = 0;
while (i < k && data[i].created_at < limit) {
++i;
}
if (i === k) {
feedSessionTable.value = [];
return;
}
if (i) {
data.splice(0, i);
}
}
if (i === k) {
feedSessionTable.value = [];
} else if (i) {
feedSessionTable.value.splice(0, i);
const maxLen = Math.floor(vrcxStore.maxTableSize * 1.5);
if (maxLen > 0 && data.length > maxLen + 100) {
data.splice(0, 100);
}
}
function sweepFeed() {
const { data } = feedTable.value;
const j = data.length;
if (j > vrcxStore.maxTableSize + 50) {
data.splice(0, 50);
}
sweepFeedSessionTable();
}
async function initFeedTable() {
feedTable.value.loading = true;

View File

@@ -430,7 +430,7 @@ export const useGameLogStore = defineStore('GameLog', () => {
const maxLen = Math.floor(vrcxStore.maxTableSize * 1.5);
if (maxLen > 0 && data.length > maxLen + 100) {
data.splice(0, data.length - maxLen);
data.splice(0, 100);
}
}
@@ -1369,6 +1369,7 @@ export const useGameLogStore = defineStore('GameLog', () => {
async function getGameLogTable() {
await database.initTables();
gameLogSessionTable.value = await database.getGamelogDatabase();
sweepGameLogSessionTable();
const dateTill = await database.getLastDateGameLogDatabase();
updateGameLog(dateTill);
}