mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-04-22 08:13:52 +02:00
206 lines
6.7 KiB
JavaScript
206 lines
6.7 KiB
JavaScript
import sqliteService from '../sqlite.js';
|
|
import { dbVars } from '../database';
|
|
|
|
const avatarFavorites = {
|
|
addAvatarToCache(entry) {
|
|
sqliteService.executeNonQuery(
|
|
`INSERT OR REPLACE INTO cache_avatar (id, added_at, author_id, author_name, created_at, description, image_url, name, release_status, thumbnail_image_url, updated_at, version) VALUES (@id, @added_at, @author_id, @author_name, @created_at, @description, @image_url, @name, @release_status, @thumbnail_image_url, @updated_at, @version)`,
|
|
{
|
|
'@id': entry.id,
|
|
'@added_at': new Date().toJSON(),
|
|
'@author_id': entry.authorId,
|
|
'@author_name': entry.authorName,
|
|
'@created_at': entry.created_at,
|
|
'@description': entry.description,
|
|
'@image_url': entry.imageUrl,
|
|
'@name': entry.name,
|
|
'@release_status': entry.releaseStatus,
|
|
'@thumbnail_image_url': entry.thumbnailImageUrl,
|
|
'@updated_at': entry.updated_at,
|
|
'@version': entry.version
|
|
}
|
|
);
|
|
},
|
|
|
|
addAvatarToHistory(avatarId) {
|
|
sqliteService.executeNonQuery(
|
|
`INSERT INTO ${dbVars.userPrefix}_avatar_history (avatar_id, created_at, time)
|
|
VALUES (@avatar_id, @created_at, 0)
|
|
ON CONFLICT(avatar_id) DO UPDATE SET created_at = @created_at`,
|
|
{
|
|
'@avatar_id': avatarId,
|
|
'@created_at': new Date().toJSON()
|
|
}
|
|
);
|
|
},
|
|
|
|
async getAvatarTimeSpent(avatarId) {
|
|
var ref = {
|
|
timeSpent: 0,
|
|
avatarId
|
|
};
|
|
await sqliteService.execute(
|
|
(row) => {
|
|
ref.timeSpent = row[0];
|
|
},
|
|
`SELECT time FROM ${dbVars.userPrefix}_avatar_history WHERE avatar_id = @avatarId`,
|
|
{
|
|
'@avatarId': avatarId
|
|
}
|
|
);
|
|
|
|
return ref;
|
|
},
|
|
|
|
addAvatarTimeSpent(avatarId, timeSpent) {
|
|
sqliteService.executeNonQuery(
|
|
`UPDATE ${dbVars.userPrefix}_avatar_history SET time = time + @timeSpent WHERE avatar_id = @avatarId`,
|
|
{
|
|
'@avatarId': avatarId,
|
|
'@timeSpent': timeSpent
|
|
}
|
|
);
|
|
},
|
|
|
|
async getAvatarHistory(currentUserId, limit = 100) {
|
|
var data = [];
|
|
await sqliteService.execute((dbRow) => {
|
|
var row = {
|
|
id: dbRow[0],
|
|
authorId: dbRow[5],
|
|
authorName: dbRow[6],
|
|
created_at: dbRow[7],
|
|
description: dbRow[8],
|
|
imageUrl: dbRow[9],
|
|
name: dbRow[10],
|
|
releaseStatus: dbRow[11],
|
|
thumbnailImageUrl: dbRow[12],
|
|
updated_at: dbRow[13],
|
|
version: dbRow[14]
|
|
};
|
|
data.push(row);
|
|
}, `SELECT * FROM ${dbVars.userPrefix}_avatar_history INNER JOIN cache_avatar ON cache_avatar.id = ${dbVars.userPrefix}_avatar_history.avatar_id WHERE author_id != '${currentUserId}' ORDER BY ${dbVars.userPrefix}_avatar_history.created_at DESC LIMIT ${limit}`);
|
|
return data;
|
|
},
|
|
|
|
async getCachedAvatarById(id) {
|
|
var data = null;
|
|
await sqliteService.execute(
|
|
(dbRow) => {
|
|
data = {
|
|
id: dbRow[0],
|
|
// added_at: dbRow[1],
|
|
authorId: dbRow[2],
|
|
authorName: dbRow[3],
|
|
created_at: dbRow[4],
|
|
description: dbRow[5],
|
|
imageUrl: dbRow[6],
|
|
name: dbRow[7],
|
|
releaseStatus: dbRow[8],
|
|
thumbnailImageUrl: dbRow[9],
|
|
updated_at: dbRow[10],
|
|
version: dbRow[11]
|
|
};
|
|
},
|
|
`SELECT * FROM cache_avatar WHERE id = @id`,
|
|
{
|
|
'@id': id
|
|
}
|
|
);
|
|
return data;
|
|
},
|
|
|
|
clearAvatarHistory() {
|
|
sqliteService.executeNonQuery(
|
|
`DELETE FROM ${dbVars.userPrefix}_avatar_history`
|
|
);
|
|
sqliteService.executeNonQuery('DELETE FROM cache_avatar');
|
|
},
|
|
|
|
addAvatarToFavorites(avatarId, groupName) {
|
|
sqliteService.executeNonQuery(
|
|
'INSERT OR REPLACE INTO favorite_avatar (avatar_id, group_name, created_at) VALUES (@avatar_id, @group_name, @created_at)',
|
|
{
|
|
'@avatar_id': avatarId,
|
|
'@group_name': groupName,
|
|
'@created_at': new Date().toJSON()
|
|
}
|
|
);
|
|
},
|
|
|
|
renameAvatarFavoriteGroup(newGroupName, groupName) {
|
|
sqliteService.executeNonQuery(
|
|
`UPDATE favorite_avatar SET group_name = @new_group_name WHERE group_name = @group_name`,
|
|
{
|
|
'@new_group_name': newGroupName,
|
|
'@group_name': groupName
|
|
}
|
|
);
|
|
},
|
|
|
|
deleteAvatarFavoriteGroup(groupName) {
|
|
sqliteService.executeNonQuery(
|
|
`DELETE FROM favorite_avatar WHERE group_name = @group_name`,
|
|
{
|
|
'@group_name': groupName
|
|
}
|
|
);
|
|
},
|
|
|
|
removeAvatarFromFavorites(avatarId, groupName) {
|
|
sqliteService.executeNonQuery(
|
|
`DELETE FROM favorite_avatar WHERE avatar_id = @avatar_id AND group_name = @group_name`,
|
|
{
|
|
'@avatar_id': avatarId,
|
|
'@group_name': groupName
|
|
}
|
|
);
|
|
},
|
|
|
|
async getAvatarFavorites() {
|
|
var data = [];
|
|
await sqliteService.execute((dbRow) => {
|
|
var row = {
|
|
created_at: dbRow[1],
|
|
avatarId: dbRow[2],
|
|
groupName: dbRow[3]
|
|
};
|
|
data.push(row);
|
|
}, 'SELECT * FROM favorite_avatar');
|
|
return data;
|
|
},
|
|
|
|
removeAvatarFromCache(avatarId) {
|
|
sqliteService.executeNonQuery(
|
|
`DELETE FROM cache_avatar WHERE id = @avatar_id`,
|
|
{
|
|
'@avatar_id': avatarId
|
|
}
|
|
);
|
|
},
|
|
|
|
async getAvatarCache() {
|
|
var data = [];
|
|
await sqliteService.execute((dbRow) => {
|
|
var row = {
|
|
id: dbRow[0],
|
|
// added_at: dbRow[1],
|
|
authorId: dbRow[2],
|
|
authorName: dbRow[3],
|
|
created_at: dbRow[4],
|
|
description: dbRow[5],
|
|
imageUrl: dbRow[6],
|
|
name: dbRow[7],
|
|
releaseStatus: dbRow[8],
|
|
thumbnailImageUrl: dbRow[9],
|
|
updated_at: dbRow[10],
|
|
version: dbRow[11]
|
|
};
|
|
data.push(row);
|
|
}, 'SELECT * FROM cache_avatar');
|
|
return data;
|
|
}
|
|
};
|
|
|
|
export { avatarFavorites };
|