Spaces:
Paused
Paused
| ; | |
| 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 | |