Commit 1b3ed035 authored by nanahira's avatar nanahira

update sqls

parent 84253e8e
Pipeline #880 passed with stages
in 6 minutes and 30 seconds
......@@ -54,6 +54,7 @@ export class SMBReader {
}
async run() {
this.log.info(`Started.`);
const db = await this.db.getConnection();
try {
this.log.info(`Reading file list...`);
let filelist = (await this.smb.readdir(this.config.pathPrefix)).filter(m => m.match(/^chat_.*\.html$/));
......@@ -71,18 +72,19 @@ export class SMBReader {
for (let file of files) {
const filePath = this.getFilePath(file.name);
try {
const testIndex: any[] = await this.db.query("select * from `filesRead` where filename = ?", [file.name]);
const testIndex: any[] = await db.query("select * from `filesRead` where filename = ?", [file.name]);
if (testIndex.length) {
this.log.debug(`File ${filePath} has already been read. Skipping.`);
continue;
}
await db.query("begin");
this.log.info(`Reading file ${filePath}...`);
const fileMetadata = await this.db.query("insert into `filesRead` set ?", {
const fileMetadata = await db.query("insert into `filesRead` set ?", {
filename: file.name,
date: file.date.format("YYYY-MM-DD HH:mm:ss")
});
const insertedFileID: number = fileMetadata.insertId;
const previousFilenameArray: any[] = await this.db.query("select filename from `filesRead` where fileid = ?", [insertedFileID - 1]);
const previousFilenameArray: any[] = await db.query("select filename from `filesRead` where fileid = ?", [insertedFileID - 1]);
let currentMessages = readChatBuffer((await this.smb.readFile(filePath)) as Buffer);
if (previousFilenameArray.length && files.find(f => f.name === previousFilenameArray[0].filename)) { // compare with old file
const previousFilePath = this.getFilePath(previousFilenameArray[0].filename);
......@@ -102,12 +104,12 @@ export class SMBReader {
}
for (let message of currentMessages) {
this.log.debug(`Recording message from file ${insertedFileID} ${filePath}:`, JSON.stringify(message));
await this.db.query("insert into `messages` set ?", {
await db.query("insert into `messages` set ?", {
fileid: insertedFileID,
...message
});
}
const deleteFilenameArray: any[] = await this.db.query("select filename from `filesRead` where fileid = ?", [insertedFileID - 2]);
const deleteFilenameArray: any[] = await db.query("select filename from `filesRead` where fileid = ?", [insertedFileID - 2]);
if (deleteFilenameArray.length && files.find(f => f.name === deleteFilenameArray[0].filename)) { // delete file with id - 2 because useless
const deleteFilePath = this.getFilePath(deleteFilenameArray[0].filename);
try {
......@@ -117,13 +119,16 @@ export class SMBReader {
this.log.debug(`Failed deleting file ${deleteFilePath}:`, e.toString());
}
}
await db.query("commit");
} catch (e) {
await db.query("rollback");
this.log.warn(`Errored reading file ${filePath}:`, e.toString());
}
}
} catch (e) {
this.log.warn(`Read error:`, e.toString());
}
db.release();
this.log.info(`Finished.`);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment