UNPKG

forge-sql-orm

Version:

Drizzle ORM integration for Atlassian @forge/sql. Provides a custom driver, schema migration, two levels of caching (local and global via @forge/kvs), optimistic locking, and query analysis.

60 lines 2.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.dropTableSchemaMigrations = dropTableSchemaMigrations; const sql_1 = require("@forge/sql"); const sqlUtils_1 = require("../utils/sqlUtils"); const index_1 = require("./index"); const SystemTables_1 = require("../core/SystemTables"); /** * ⚠️ DEVELOPMENT ONLY WEB TRIGGER ⚠️ * * This web trigger is designed for development environments only and will permanently delete all data in the specified tables. * It generates and executes SQL statements to drop tables and their associated constraints. * * @warning This trigger should NEVER be used in production environments because: * - It permanently deletes all data in the specified tables * - The operation cannot be undone * - It may affect application functionality * - It could lead to data loss and system instability * * @note This function is automatically disabled in production environments and will return a 500 error if called. * * @returns {Promise<TriggerResponse<string>>} A response containing: * - On success: 200 status with warning message about permanent deletion * - On failure: 500 status with error message (including when called in production) * * @example * ```typescript * // Example usage in development only * await dropTableSchemaMigrations(); * // ⚠️ Warning: This will permanently delete all data in users and orders tables * ``` */ async function dropTableSchemaMigrations() { const productionCheck = (0, sqlUtils_1.checkProductionEnvironment)("dropTableSchemaMigrations"); if (productionCheck) { return productionCheck; } try { const tables = await (0, SystemTables_1.getTables)(); // Generate drop statements const dropStatements = (0, sqlUtils_1.generateDropTableStatements)(tables, { sequence: false, table: true }); // Execute each statement for (const statement of dropStatements) { // eslint-disable-next-line no-console console.debug(`execute DDL: ${statement}`); await sql_1.sql.executeDDL(statement); } return (0, index_1.getHttpResponse)(200, "⚠️ All data in these tables has been permanently deleted. This operation cannot be undone."); } catch (error) { const errorMessage = error?.debug?.sqlMessage ?? error?.debug?.message ?? error.message ?? "Unknown error occurred"; // eslint-disable-next-line no-console console.error(errorMessage); return (0, index_1.getHttpResponse)(500, errorMessage); } } //# sourceMappingURL=dropTablesMigrationWebTrigger.js.map