Local world favorites

This commit is contained in:
Natsumi
2022-10-01 02:16:25 +13:00
parent ce25e3f18d
commit b65b0c1b98
3 changed files with 490 additions and 28 deletions

View File

@@ -59,6 +59,12 @@ class Database {
await sqliteService.executeNonQuery(
`CREATE TABLE IF NOT EXISTS cache_avatar (id TEXT PRIMARY KEY, added_at TEXT, author_id TEXT, author_name TEXT, created_at TEXT, description TEXT, image_url TEXT, name TEXT, release_status TEXT, thumbnail_image_url TEXT, updated_at TEXT, version INTEGER)`
);
await sqliteService.executeNonQuery(
`CREATE TABLE IF NOT EXISTS cache_world (id TEXT PRIMARY KEY, added_at TEXT, author_id TEXT, author_name TEXT, created_at TEXT, description TEXT, image_url TEXT, name TEXT, release_status TEXT, thumbnail_image_url TEXT, updated_at TEXT, version INTEGER)`
);
await sqliteService.executeNonQuery(
`CREATE TABLE IF NOT EXISTS favorite_world (id INTEGER PRIMARY KEY, created_at TEXT, world_id TEXT, group_name TEXT)`
);
}
async getFeedDatabase() {
@@ -1523,6 +1529,110 @@ class Database {
sqliteService.executeNonQuery('DELETE FROM cache_avatar');
}
addWorldToCache(entry) {
sqliteService.executeNonQuery(
`INSERT OR REPLACE INTO cache_world (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
}
);
}
addWorldToFavorites(worldId, groupName) {
sqliteService.executeNonQuery(
'INSERT OR REPLACE INTO favorite_world (world_id, group_name, created_at) VALUES (@world_id, @group_name, @created_at)',
{
'@world_id': worldId,
'@group_name': groupName,
'@created_at': new Date().toJSON()
}
);
}
renameWorldFavoriteGroup(newGroupName, groupName) {
sqliteService.executeNonQuery(
`UPDATE favorite_world SET group_name = @new_group_name WHERE group_name = @group_name`,
{
'@new_group_name': newGroupName,
'@group_name': groupName
}
);
}
deleteWorldFavoriteGroup(groupName) {
sqliteService.executeNonQuery(
`DELETE FROM favorite_world WHERE group_name = @group_name`,
{
'@group_name': groupName
}
);
}
removeWorldFromFavorites(worldId, groupName) {
sqliteService.executeNonQuery(
`DELETE FROM favorite_world WHERE world_id = @world_id AND group_name = @group_name`,
{
'@world_id': worldId,
'@group_name': groupName
}
);
}
removeWorldFromCache(worldId) {
sqliteService.executeNonQuery(
`DELETE FROM cache_world WHERE id = @world_id`,
{
'@world_id': worldId
}
);
}
async getWorldFavorites() {
var data = [];
await sqliteService.execute((dbRow) => {
var row = {
created_at: dbRow[1],
worldId: dbRow[2],
groupName: dbRow[3]
};
data.push(row);
}, 'SELECT * FROM favorite_world');
return data;
}
async getWorldCache() {
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_world');
return data;
}
async fixGameLogTraveling() {
var travelingList = [];
await sqliteService.execute((dbRow) => {