feat: 添加头文件信息,添加图床工具。

This commit is contained in:
539943419 committed 2025-01-22 01:16:25 +08:00
1 parent f8fba79d55
commit fda826a272
12 files changed
+515 -13

No files matched your search

+63 -7
View File
@@ -1,5 +1,6 @@
import mkfileIfNotExist from "./mkfileIfNotExist"
import db from 'better-sqlite3'
import DB from 'better-sqlite3'
import fs from 'fs'
let checked = false
@@ -14,6 +15,7 @@ function checkUserData() {
const dirList = [
'./userData/',
'./userData/db/',
'./userData/imgBed/',
]
dirList.forEach(mkdirIfNotExist)
@@ -24,9 +26,14 @@ function checkUserData() {
}
function createDB() {
const userDB = new db('./userData/db/user.db');
const postsDB = new db('./userData/db/posts.db');
createUserDB();
createPostsDB();
createImgBedDB();
}
const createUserDB = () => {
const userDB = new DB('./userData/db/user.db');
userDB.exec(`
CREATE TABLE IF NOT EXISTS user (
id INTEGER PRIMARY KEY AUTOINCREMENT,
@@ -36,7 +43,11 @@ function createDB() {
lastLoginTime INTEGER NOT NULL
);
`);
userDB.close();
}
const createPostsDB = () => {
const postsDB = new DB('./userData/db/posts.db');
postsDB.exec(`
CREATE TABLE IF NOT EXISTS posts (
id INTEGER PRIMARY KEY AUTOINCREMENT,
@@ -49,14 +60,12 @@ function createDB() {
FOREIGN KEY(tag_id) REFERENCES tags(id)
);
`);
postsDB.exec(`
CREATE TABLE IF NOT EXISTS postContent (
id INTEGER PRIMARY KEY AUTOINCREMENT,
content TEXT NOT NULL
);
`);
postsDB.exec(`
CREATE TABLE IF NOT EXISTS tags (
id INTEGER PRIMARY KEY AUTOINCREMENT,
@@ -77,9 +86,56 @@ function createDB() {
tag15 TEXT
);
`);
postsDB.close();
userDB.close();
}
const createImgBedDB = () => {
const imgBedDB = new DB('./userData/db/imgBed.db');
imgBedDB.exec(`
CREATE TABLE IF NOT EXISTS imgBed (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
hash TEXT NOT NULL,
size INTEGER NOT NULL,
expire INTEGER NOT NULL
);
`);
imgBedDB.close();
setInterval(cleanExpiredFiles_imgBed, 1000 * 30 * 60 );
// cleanExpiredFiles_imgBed()
}
const cleanExpiredFiles_imgBed = async () => {
try {
const db = new DB('./userData/db/imgBed.db');
const currentTime = Date.now();
// 从数据库中查询过期文件的哈希
const expiredFiles = db.prepare(`
SELECT hash FROM imgBed WHERE expire <?
`).all(currentTime) as {
hash: string;
}[];
db.close();
for (const file of expiredFiles) {
const hash = file.hash;
const filePath = useRuntimeConfig().public.userDataPath + `/imgBed/${hash}`;
// 检查文件是否存在
if (fs.existsSync(filePath)) {
// 删除文件
fs.unlinkSync(filePath);
}
}
// 从数据库中删除过期文件的记录
const db2 = new DB('./userData/db/imgBed.db');
db2.prepare(`
DELETE FROM imgBed WHERE expire <?
`).run(currentTime);
db2.close();
} catch (error) {
console.error('Error cleaning expired files:', error);
}
};
export default checkUserData