mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2026-03-25 05:29:45 +08:00
@@ -1,35 +1,23 @@
|
||||
-- @file plugins/Sqlite/sql/createTable.sql
|
||||
-- @brief sqlite数据库创建表语句
|
||||
-- @since Beta v0.5.5
|
||||
-- @since Beta v0.6.0
|
||||
|
||||
-- @brief 重新创建成就数据表
|
||||
drop table if exists Achievements;
|
||||
-- @brief 创建成就数据表
|
||||
create table if not exists Achievements
|
||||
(
|
||||
id integer primary key,
|
||||
series integer,
|
||||
`order` integer,
|
||||
name text,
|
||||
description text,
|
||||
reward integer,
|
||||
id integer not null,
|
||||
uid integer not null,
|
||||
isCompleted boolean default false,
|
||||
completedTime text,
|
||||
progress integer default 0,
|
||||
version text,
|
||||
updated text
|
||||
updated text,
|
||||
primary key (id, uid)
|
||||
);
|
||||
|
||||
-- @brief 创建成就系列数据表
|
||||
create table if not exists AchievementSeries
|
||||
(
|
||||
id integer primary key,
|
||||
`order` integer,
|
||||
name text,
|
||||
version text,
|
||||
totalCount integer default 0,
|
||||
finCount integer default 0,
|
||||
nameCard text,
|
||||
updated text
|
||||
);
|
||||
-- @brief 重新创建成就系列数据表
|
||||
drop table if exists AchievementSeries;
|
||||
|
||||
-- @brief 创建角色数据表
|
||||
create table if not exists AppCharacters
|
||||
@@ -117,19 +105,19 @@ create table if not exists UserRecord
|
||||
-- @brief 创建角色数据表
|
||||
create table if not exists UserCharacters
|
||||
(
|
||||
uid integer,
|
||||
cid integer,
|
||||
avatar text,
|
||||
weapon text,
|
||||
relics text,
|
||||
constellations text,
|
||||
costumes text,
|
||||
skills text,
|
||||
propSelected text,
|
||||
propBase text,
|
||||
propExtra text,
|
||||
propRecommend text,
|
||||
updated text,
|
||||
uid integer,
|
||||
cid integer,
|
||||
avatar text,
|
||||
weapon text,
|
||||
relics text,
|
||||
constellations text,
|
||||
costumes text,
|
||||
skills text,
|
||||
propSelected text,
|
||||
propBase text,
|
||||
propExtra text,
|
||||
propRecommend text,
|
||||
updated text,
|
||||
primary key (uid, cid)
|
||||
);
|
||||
|
||||
|
||||
@@ -1,40 +1,9 @@
|
||||
-- @file plugins Sqlite sql createTrigger.sql
|
||||
-- @file plugins/Sqlite/sql/createTrigger.sql
|
||||
-- @brief 创建触发器
|
||||
-- @author BTMuli <bt-muli@outlook.com>
|
||||
-- @since Alpha v0.2.0
|
||||
-- @since Beta v0.6.0
|
||||
|
||||
-- @brief 成就表相关
|
||||
create trigger if not exists insertAchievement
|
||||
after insert
|
||||
on Achievements
|
||||
for each row
|
||||
begin
|
||||
update AchievementSeries
|
||||
set totalCount = totalCount + 1,
|
||||
updated = datetime('now', 'localtime')
|
||||
where id = new.series;
|
||||
update AchievementSeries
|
||||
set version = new.version,
|
||||
updated = datetime('now', 'localtime')
|
||||
where id = new.series
|
||||
and new.version > version;
|
||||
end;
|
||||
-- @brief 重新创建成就表插入触发器
|
||||
drop trigger if exists insertAchievement;
|
||||
|
||||
create trigger if not exists updateAchievement
|
||||
after update
|
||||
on Achievements
|
||||
for each row
|
||||
begin
|
||||
update AchievementSeries
|
||||
set updated = datetime('now', 'localtime'),
|
||||
finCount = finCount + 1
|
||||
where id = new.series
|
||||
and old.isCompleted = 0
|
||||
and new.isCompleted = 1;
|
||||
update AchievementSeries
|
||||
set updated = datetime('now', 'localtime'),
|
||||
finCount = finCount - 1
|
||||
where id = new.series
|
||||
and old.isCompleted = 1
|
||||
and new.isCompleted = 0;
|
||||
end;
|
||||
-- @brief 重新创建成就表更新触发器
|
||||
drop trigger if exists updateAchievement;
|
||||
|
||||
@@ -1,26 +1,16 @@
|
||||
/**
|
||||
* @file plugins/Sqlite/sql/initData.ts
|
||||
* @description Sqlite 初始化数据 sql 语句
|
||||
* @since Beta v0.4.5
|
||||
* @since Beta v0.6.0
|
||||
*/
|
||||
|
||||
import { app } from "@tauri-apps/api";
|
||||
|
||||
import {
|
||||
AppAchievementsData,
|
||||
AppAchievementSeriesData,
|
||||
AppNameCardsData,
|
||||
AppCharacterData,
|
||||
} from "../../../data/index.js";
|
||||
import { AppNameCardsData, AppCharacterData } from "../../../data/index.js";
|
||||
import { getBuildTime } from "../../../utils/TGBuild.js";
|
||||
|
||||
import initTableSql from "./initTable.js";
|
||||
import {
|
||||
insertAchievementData,
|
||||
insertAchievementSeriesData,
|
||||
insertNameCardData,
|
||||
insertCharacterData,
|
||||
} from "./insertData.js";
|
||||
import { insertNameCardData, insertCharacterData } from "./insertData.js";
|
||||
|
||||
/**
|
||||
* @description 初始化应用表数据
|
||||
@@ -51,24 +41,6 @@ async function initAppData(): Promise<string[]> {
|
||||
return sqlRes;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 初始化成就系列数据
|
||||
* @since Alpha v0.2.0
|
||||
* @returns {string[]} sql
|
||||
*/
|
||||
function initAchievementSeriesData(): string[] {
|
||||
return AppAchievementSeriesData.map((item) => insertAchievementSeriesData(item));
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 初始化成就数据
|
||||
* @since Alpha v0.2.0
|
||||
* @returns {string[]} sql
|
||||
*/
|
||||
function initAchievementData(): string[] {
|
||||
return AppAchievementsData.map((item) => insertAchievementData(item));
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 初始化应用名片数据
|
||||
* @since Alpha v0.2.0
|
||||
@@ -96,8 +68,6 @@ async function initDataSql(): Promise<string[]> {
|
||||
const sqlRes: string[] = [];
|
||||
sqlRes.push(...initTableSql());
|
||||
sqlRes.push(...(await initAppData()));
|
||||
sqlRes.push(...initAchievementSeriesData());
|
||||
sqlRes.push(...initAchievementData());
|
||||
sqlRes.push(...initNameCardData());
|
||||
sqlRes.push(...initCharacterData());
|
||||
return sqlRes;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* @file plugins/Sqlite/sql/insertData.ts
|
||||
* @description Sqlite 插入数据 sql 语句
|
||||
* @since Beta v0.5.3
|
||||
* @since Beta v0.6.0
|
||||
*/
|
||||
|
||||
import { transCharacterData, transFloorData } from "../utils/transAbyssData.js";
|
||||
@@ -9,48 +9,6 @@ import { timeToSecond } from "../utils/transTime.js";
|
||||
import { transUserRecord } from "../utils/transUserRecord.js";
|
||||
import { transUserRoles } from "../utils/transUserRoles.js";
|
||||
|
||||
/**
|
||||
* @description 插入成就数据
|
||||
* @since Alpha v0.2.0
|
||||
* @param {TGApp.App.Achievement.Item} data 成就数据
|
||||
* @returns {string} sql
|
||||
*/
|
||||
export function insertAchievementData(data: TGApp.App.Achievement.Item): string {
|
||||
return `
|
||||
INSERT INTO Achievements (id, series, "order", name, description, reward, completedTime, version, updated)
|
||||
VALUES (${data.id}, ${data.series}, ${data.order}, '${data.name}', '${data.description}', ${data.reward}, '',
|
||||
'${data.version}', datetime('now', 'localtime'))
|
||||
ON CONFLICT(id) DO UPDATE
|
||||
SET series = ${data.series},
|
||||
"order" = ${data.order},
|
||||
name = '${data.name}',
|
||||
description = '${data.description}',
|
||||
reward = '${data.reward}',
|
||||
version = '${data.version}',
|
||||
updated = datetime('now', 'localtime');
|
||||
`;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 插入成就系列数据
|
||||
* @since Alpha v0.2.0
|
||||
* @param {TGApp.App.Achievement.Series} data 成就系列数据
|
||||
* @returns {string} sql
|
||||
*/
|
||||
export function insertAchievementSeriesData(data: TGApp.App.Achievement.Series): string {
|
||||
return `
|
||||
INSERT INTO AchievementSeries (id, "order", name, version, nameCard, updated)
|
||||
VALUES (${data.id}, ${data.order}, '${data.name}', '${data.version}', '${data.card}',
|
||||
datetime('now', 'localtime'))
|
||||
ON CONFLICT(id) DO UPDATE
|
||||
SET name = '${data.name}',
|
||||
"order" = ${data.order},
|
||||
version = '${data.version}',
|
||||
nameCard = '${data.card}',
|
||||
updated = datetime('now', 'localtime');
|
||||
`;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 插入应用数据
|
||||
* @since Alpha v0.2.0
|
||||
|
||||
@@ -1,72 +0,0 @@
|
||||
/**
|
||||
* @file plugins/Sqlite/sql/updateData.ts
|
||||
* @description 更新数据
|
||||
* @since Beta v0.4.9
|
||||
*/
|
||||
|
||||
import minifySql from "../../../utils/minifySql.js";
|
||||
|
||||
/**
|
||||
* @description 导入UIAF数据-单项
|
||||
* @since Beta v0.4.9
|
||||
* @param {TGApp.Plugins.UIAF.Achievement} data
|
||||
* @returns {string} sql
|
||||
*/
|
||||
export function importUIAFData(data: TGApp.Plugins.UIAF.Achievement): string {
|
||||
let sql;
|
||||
const isCompleted = data.status === 2 || data.status === 3;
|
||||
if (isCompleted) {
|
||||
const completedTime = new Date(data.timestamp * 1000)
|
||||
.toISOString()
|
||||
.replace("T", " ")
|
||||
.slice(0, 19);
|
||||
sql = `
|
||||
UPDATE Achievements
|
||||
SET isCompleted = 1,
|
||||
completedTime = '${completedTime}',
|
||||
progress = ${data.current},
|
||||
updated = datetime('now', 'localtime')
|
||||
WHERE id = ${data.id}
|
||||
AND (isCompleted = 0 OR completedTime != '${completedTime}'
|
||||
OR progress != ${data.current});
|
||||
`;
|
||||
} else {
|
||||
sql = `
|
||||
UPDATE Achievements
|
||||
SET progress = ${data.current},
|
||||
updated = datetime('now', 'localtime')
|
||||
WHERE id = ${data.id}
|
||||
AND progress != ${data.current};
|
||||
`;
|
||||
}
|
||||
return minifySql(sql);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 导入UIGF数据-单项
|
||||
* @since Beta v0.4.7
|
||||
* @param {string} uid - UID
|
||||
* @param {TGApp.Plugins.UIGF.GachaItem} gacha - UIGF数据
|
||||
* @returns {string} sql
|
||||
*/
|
||||
export function importUIGFData(uid: string, gacha: TGApp.Plugins.UIGF.GachaItem): string {
|
||||
const sql = `
|
||||
INSERT INTO GachaRecords (uid, gachaType, itemId, count, time, name, type, rank, id, uigfType, updated)
|
||||
VALUES ('${uid}', '${gacha.gacha_type}', '${gacha.item_id ?? null}', '${gacha.count ?? null}', '${gacha.time}',
|
||||
'${gacha.name}', '${gacha.item_type ?? null}', '${gacha.rank_type ?? null}', '${gacha.id}',
|
||||
'${gacha.uigf_gacha_type}', datetime('now', 'localtime'))
|
||||
ON CONFLICT (id)
|
||||
DO UPDATE
|
||||
SET uid = '${uid}',
|
||||
gachaType = '${gacha.gacha_type}',
|
||||
uigfType = '${gacha.uigf_gacha_type}',
|
||||
time = '${gacha.time}',
|
||||
itemId = '${gacha.item_id ?? null}',
|
||||
count = '${gacha.count ?? null}',
|
||||
name = '${gacha.name}',
|
||||
type = '${gacha.item_type ?? null}',
|
||||
rank = '${gacha.rank_type ?? null}',
|
||||
updated = datetime('now', 'localtime');
|
||||
`;
|
||||
return minifySql(sql);
|
||||
}
|
||||
Reference in New Issue
Block a user