Spaces:
Sleeping
Sleeping
; | |
var __defProp = Object.defineProperty; | |
var __getOwnPropDesc = Object.getOwnPropertyDescriptor; | |
var __getOwnPropNames = Object.getOwnPropertyNames; | |
var __hasOwnProp = Object.prototype.hasOwnProperty; | |
var __export = (target, all) => { | |
for (var name in all) | |
__defProp(target, name, { get: all[name], enumerable: true }); | |
}; | |
var __copyProps = (to, from, except, desc) => { | |
if (from && typeof from === "object" || typeof from === "function") { | |
for (let key of __getOwnPropNames(from)) | |
if (!__hasOwnProp.call(to, key) && key !== except) | |
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | |
} | |
return to; | |
}; | |
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); | |
var database_exports = {}; | |
__export(database_exports, { | |
onDatabaseStart: () => onDatabaseStart, | |
statements: () => statements, | |
transactions: () => transactions | |
}); | |
module.exports = __toCommonJS(database_exports); | |
var import_lib = require("../../lib"); | |
var import__ = require("."); | |
const statements = { | |
send: "INSERT INTO offline_pms (sender, receiver, message, time) VALUES (?, ?, ?, ?)", | |
clear: "DELETE FROM offline_pms WHERE receiver = ?", | |
fetch: "SELECT * FROM offline_pms WHERE receiver = ?", | |
fetchNew: "SELECT * FROM offline_pms WHERE receiver = ? AND seen IS NULL", | |
clearDated: "DELETE FROM offline_pms WHERE ? - time >= ?", | |
checkSentCount: "SELECT count(*) as count FROM offline_pms WHERE sender = ? AND receiver = ?", | |
setSeen: "UPDATE offline_pms SET seen = ? WHERE receiver = ? AND seen IS NULL", | |
clearSeen: "DELETE FROM offline_pms WHERE ? - seen >= ?", | |
getSettings: "SELECT * FROM pm_settings WHERE userid = ?", | |
setBlock: "REPLACE INTO pm_settings (userid, view_only) VALUES (?, ?)", | |
deleteSettings: "DELETE FROM pm_settings WHERE userid = ?" | |
}; | |
class StatementMap { | |
constructor(env) { | |
this.env = env; | |
} | |
run(name, args) { | |
return this.getStatement(name).run(args); | |
} | |
all(name, args) { | |
return this.getStatement(name).all(args); | |
} | |
get(name, args) { | |
return this.getStatement(name).get(args); | |
} | |
getStatement(name) { | |
const source = statements[name]; | |
return this.env.statements.get(source); | |
} | |
} | |
const transactions = { | |
send: (args, env) => { | |
const statementList = new StatementMap(env); | |
const [sender, receiver, message] = args; | |
const count = statementList.get("checkSentCount", [sender, receiver])?.count; | |
if (count && count > import__.MAX_PENDING) { | |
return { error: `You have already sent the maximum ${import__.MAX_PENDING} offline PMs to that user.` }; | |
} | |
return statementList.run("send", [sender, receiver, message, Date.now()]); | |
}, | |
listNew: (args, env) => { | |
const list = new StatementMap(env); | |
const [receiver] = args; | |
const pms = list.all("fetchNew", [receiver]); | |
list.run("setSeen", [Date.now(), receiver]); | |
return pms; | |
} | |
}; | |
function onDatabaseStart(database) { | |
let version; | |
try { | |
version = database.prepare("SELECT * FROM db_info").get().version; | |
} catch { | |
const schemaContent = (0, import_lib.FS)("databases/schemas/pms.sql").readSync(); | |
database.exec(schemaContent); | |
} | |
const migrations = (0, import_lib.FS)("databases/migrations/pms").readdirIfExistsSync(); | |
if (version !== migrations.length) { | |
for (const migration of migrations) { | |
const num = /(\d+)\.sql$/.exec(migration)?.[1]; | |
if (!num || version >= num) | |
continue; | |
database.exec("BEGIN TRANSACTION"); | |
try { | |
database.exec((0, import_lib.FS)(`databases/migrations/pms/${migration}`).readSync()); | |
} catch (e) { | |
console.log(`Error in PM migration ${migration} - ${e.message}`); | |
console.log(e.stack); | |
database.exec("ROLLBACK"); | |
continue; | |
} | |
database.exec("COMMIT"); | |
} | |
} | |
} | |
//# sourceMappingURL=database.js.map | |