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 { ...@@ -54,6 +54,7 @@ export class SMBReader {
} }
async run() { async run() {
this.log.info(`Started.`); this.log.info(`Started.`);
const db = await this.db.getConnection();
try { try {
this.log.info(`Reading file list...`); this.log.info(`Reading file list...`);
let filelist = (await this.smb.readdir(this.config.pathPrefix)).filter(m => m.match(/^chat_.*\.html$/)); let filelist = (await this.smb.readdir(this.config.pathPrefix)).filter(m => m.match(/^chat_.*\.html$/));
...@@ -71,18 +72,19 @@ export class SMBReader { ...@@ -71,18 +72,19 @@ export class SMBReader {
for (let file of files) { for (let file of files) {
const filePath = this.getFilePath(file.name); const filePath = this.getFilePath(file.name);
try { 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) { if (testIndex.length) {
this.log.debug(`File ${filePath} has already been read. Skipping.`); this.log.debug(`File ${filePath} has already been read. Skipping.`);
continue; continue;
} }
await db.query("begin");
this.log.info(`Reading file ${filePath}...`); 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, filename: file.name,
date: file.date.format("YYYY-MM-DD HH:mm:ss") date: file.date.format("YYYY-MM-DD HH:mm:ss")
}); });
const insertedFileID: number = fileMetadata.insertId; 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); 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 if (previousFilenameArray.length && files.find(f => f.name === previousFilenameArray[0].filename)) { // compare with old file
const previousFilePath = this.getFilePath(previousFilenameArray[0].filename); const previousFilePath = this.getFilePath(previousFilenameArray[0].filename);
...@@ -102,12 +104,12 @@ export class SMBReader { ...@@ -102,12 +104,12 @@ export class SMBReader {
} }
for (let message of currentMessages) { for (let message of currentMessages) {
this.log.debug(`Recording message from file ${insertedFileID} ${filePath}:`, JSON.stringify(message)); 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, fileid: insertedFileID,
...message ...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 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); const deleteFilePath = this.getFilePath(deleteFilenameArray[0].filename);
try { try {
...@@ -117,13 +119,16 @@ export class SMBReader { ...@@ -117,13 +119,16 @@ export class SMBReader {
this.log.debug(`Failed deleting file ${deleteFilePath}:`, e.toString()); this.log.debug(`Failed deleting file ${deleteFilePath}:`, e.toString());
} }
} }
await db.query("commit");
} catch (e) { } catch (e) {
await db.query("rollback");
this.log.warn(`Errored reading file ${filePath}:`, e.toString()); this.log.warn(`Errored reading file ${filePath}:`, e.toString());
} }
} }
} catch (e) { } catch (e) {
this.log.warn(`Read error:`, e.toString()); this.log.warn(`Read error:`, e.toString());
} }
db.release();
this.log.info(`Finished.`); 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