nexusql 0.8.1 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -258,4 +258,9 @@ interface InitOptions {
258
258
  */
259
259
  declare function init(options?: InitOptions): Promise<void>;
260
260
 
261
- export { Database, type DbUrlParts, MigrationRunner, type NexusqlConfig, buildDbUrl, createMigrationFile, dbmlToSql, filterSchemaMigrations, gen, generateConfigTemplate, getDatabaseUrl, getMostRecentMigration, init, listMigrations, loadConfig, markApplied, migrate, parseAndEncodeDbUrl, parseMigrationFile, runMigra, status, up, updateMigrationFile };
261
+ /**
262
+ * Test database connection.
263
+ */
264
+ declare function testConnection(): Promise<void>;
265
+
266
+ export { Database, type DbUrlParts, MigrationRunner, type NexusqlConfig, buildDbUrl, createMigrationFile, dbmlToSql, filterSchemaMigrations, gen, generateConfigTemplate, getDatabaseUrl, getMostRecentMigration, init, listMigrations, loadConfig, markApplied, migrate, parseAndEncodeDbUrl, parseMigrationFile, runMigra, status, testConnection, up, updateMigrationFile };
package/dist/index.js CHANGED
@@ -3992,6 +3992,40 @@ async function init(options = {}) {
3992
3992
  console.log(' 3. Run "nexusql gen" to generate migration SQL');
3993
3993
  console.log(' 4. Run "nexusql migrate" to create and apply migrations\n');
3994
3994
  }
3995
+
3996
+ // src/commands/test-connection.ts
3997
+ async function testConnection() {
3998
+ console.log(source_default.bold("Testing database connection...\n"));
3999
+ try {
4000
+ const config = await loadConfig();
4001
+ const rawUrl = getDatabaseUrl(config);
4002
+ const parsed = parseAndEncodeDbUrl(rawUrl);
4003
+ console.log(source_default.cyan("Connection details:"));
4004
+ console.log(source_default.dim(" Protocol:"), parsed.protocol);
4005
+ console.log(source_default.dim(" User:"), parsed.user);
4006
+ console.log(source_default.dim(" Host:"), parsed.host);
4007
+ console.log(source_default.dim(" Port:"), parsed.port);
4008
+ console.log(source_default.dim(" Database:"), parsed.database);
4009
+ console.log(source_default.dim(" Password:"), "***" + decodeURIComponent(parsed.password).slice(-4));
4010
+ console.log();
4011
+ const db = new Database(rawUrl);
4012
+ const result = await db.query("SELECT current_user, current_database(), version()");
4013
+ console.log(source_default.green("\u2713 Connection successful!\n"));
4014
+ console.log(source_default.cyan("Server info:"));
4015
+ console.log(source_default.dim(" Current user:"), result.rows[0].current_user);
4016
+ console.log(source_default.dim(" Current database:"), result.rows[0].current_database);
4017
+ console.log(source_default.dim(" PostgreSQL version:"), result.rows[0].version.split(",")[0]);
4018
+ } catch (error) {
4019
+ console.log(source_default.red("\u2717 Connection failed!\n"));
4020
+ console.error(source_default.red("Error:"), error.message);
4021
+ console.log(source_default.yellow("\nTroubleshooting tips:"));
4022
+ console.log(" \u2022 Check DATABASE_URL in your .env file");
4023
+ console.log(" \u2022 Ensure special characters in password are NOT URL-encoded");
4024
+ console.log(" \u2022 Verify the database server is running");
4025
+ console.log(" \u2022 Check host, port, username, and database name");
4026
+ process.exit(1);
4027
+ }
4028
+ }
3995
4029
  export {
3996
4030
  Database,
3997
4031
  MigrationRunner,
@@ -4012,6 +4046,7 @@ export {
4012
4046
  parseMigrationFile,
4013
4047
  runMigra,
4014
4048
  status,
4049
+ testConnection,
4015
4050
  up,
4016
4051
  updateMigrationFile
4017
4052
  };