| | const { getGitVersion } = require("../../endpoints/utils"); |
| | const { Telemetry } = require("../../models/telemetry"); |
| |
|
| | function checkColumnTemplate(tablename = null, column = null) { |
| | if (!tablename || !column) |
| | throw new Error(`Migration Error`, { tablename, column }); |
| | return `SELECT COUNT(*) AS _exists FROM pragma_table_info('${tablename}') WHERE name='${column}'`; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | async function checkForMigrations(model, db) { |
| | if (model.migrations().length === 0) return; |
| | const toMigrate = []; |
| | for (const { colName, execCmd, doif } of model.migrations()) { |
| | const { _exists } = await db.get( |
| | checkColumnTemplate(model.tablename, colName) |
| | ); |
| | const colExists = _exists !== 0; |
| | if (colExists !== doif) continue; |
| |
|
| | toMigrate.push(execCmd); |
| | } |
| |
|
| | if (toMigrate.length === 0) return; |
| |
|
| | console.log(`Running ${toMigrate.length} migrations`, toMigrate); |
| | await db.exec(toMigrate.join(";\n")); |
| | return; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | async function validateTablePragmas(force = false) { |
| | try { |
| | if (process.env.NODE_ENV !== "development" && force === false) { |
| | console.log( |
| | `\x1b[34m[MIGRATIONS STUBBED]\x1b[0m Please ping /migrate once server starts to run migrations` |
| | ); |
| | return; |
| | } |
| | const { SystemSettings } = require("../../models/systemSettings"); |
| | const { User } = require("../../models/user"); |
| | const { Workspace } = require("../../models/workspace"); |
| | const { WorkspaceUser } = require("../../models/workspaceUsers"); |
| | const { Document } = require("../../models/documents"); |
| | const { DocumentVectors } = require("../../models/vectors"); |
| | const { WorkspaceChats } = require("../../models/workspaceChats"); |
| | const { Invite } = require("../../models/invite"); |
| | const { WelcomeMessages } = require("../../models/welcomeMessages"); |
| | const { ApiKey } = require("../../models/apiKeys"); |
| |
|
| | await SystemSettings.migrateTable(); |
| | await User.migrateTable(); |
| | await Workspace.migrateTable(); |
| | await WorkspaceUser.migrateTable(); |
| | await Document.migrateTable(); |
| | await DocumentVectors.migrateTable(); |
| | await WorkspaceChats.migrateTable(); |
| | await Invite.migrateTable(); |
| | await WelcomeMessages.migrateTable(); |
| | await ApiKey.migrateTable(); |
| | } catch (e) { |
| | console.error(`validateTablePragmas: Migrations failed`, e); |
| | } |
| | return; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | async function setupTelemetry() { |
| | if (process.env.DISABLE_TELEMETRY === "true") { |
| | console.log( |
| | `\x1b[31m[TELEMETRY DISABLED]\x1b[0m Telemetry is marked as disabled - no events will send. Telemetry helps Mintplex Labs Inc improve AnythingLLM.` |
| | ); |
| | return true; |
| | } |
| |
|
| | if (Telemetry.isDev()) { |
| | console.log( |
| | `\x1b[33m[TELEMETRY STUBBED]\x1b[0m Anonymous Telemetry stubbed in development.` |
| | ); |
| | return; |
| | } |
| |
|
| | console.log( |
| | `\x1b[32m[TELEMETRY ENABLED]\x1b[0m Anonymous Telemetry enabled. Telemetry helps Mintplex Labs Inc improve AnythingLLM.` |
| | ); |
| | await Telemetry.findOrCreateId(); |
| | await Telemetry.sendTelemetry("server_boot", { |
| | commit: getGitVersion(), |
| | }); |
| | return; |
| | } |
| |
|
| | module.exports = { |
| | checkForMigrations, |
| | validateTablePragmas, |
| | setupTelemetry, |
| | }; |
| |
|