spindb 0.46.5 → 0.47.1

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.
Files changed (129) hide show
  1. package/dist/cli/commands/info.js +12 -2
  2. package/dist/cli/commands/info.js.map +1 -1
  3. package/dist/cli/commands/link.js +6 -0
  4. package/dist/cli/commands/link.js.map +1 -1
  5. package/dist/cli/commands/list.js +4 -1
  6. package/dist/cli/commands/list.js.map +1 -1
  7. package/dist/cli/commands/menu/container-handlers.js +25 -7
  8. package/dist/cli/commands/menu/container-handlers.js.map +1 -1
  9. package/dist/config/backup-formats.js +11 -11
  10. package/dist/config/backup-formats.js.map +1 -1
  11. package/dist/config/version.js +1 -1
  12. package/dist/core/credential-manager.js +34 -11
  13. package/dist/core/credential-manager.js.map +1 -1
  14. package/dist/core/query-parser.js +55 -1
  15. package/dist/core/query-parser.js.map +1 -1
  16. package/dist/core/remote-container.js +11 -0
  17. package/dist/core/remote-container.js.map +1 -1
  18. package/dist/engines/clickhouse/backup.js +42 -10
  19. package/dist/engines/clickhouse/backup.js.map +1 -1
  20. package/dist/engines/clickhouse/restore.js +41 -10
  21. package/dist/engines/clickhouse/restore.js.map +1 -1
  22. package/dist/engines/cockroachdb/backup.js +18 -22
  23. package/dist/engines/cockroachdb/backup.js.map +1 -1
  24. package/dist/engines/cockroachdb/cli-utils.js +66 -0
  25. package/dist/engines/cockroachdb/cli-utils.js.map +1 -1
  26. package/dist/engines/cockroachdb/index.js +199 -116
  27. package/dist/engines/cockroachdb/index.js.map +1 -1
  28. package/dist/engines/cockroachdb/restore.js +19 -26
  29. package/dist/engines/cockroachdb/restore.js.map +1 -1
  30. package/dist/engines/couchdb/backup.js +13 -4
  31. package/dist/engines/couchdb/backup.js.map +1 -1
  32. package/dist/engines/couchdb/index.js +93 -25
  33. package/dist/engines/couchdb/index.js.map +1 -1
  34. package/dist/engines/couchdb/restore.js +15 -4
  35. package/dist/engines/couchdb/restore.js.map +1 -1
  36. package/dist/engines/ferretdb/backup.js +88 -91
  37. package/dist/engines/ferretdb/backup.js.map +1 -1
  38. package/dist/engines/ferretdb/index.js +182 -227
  39. package/dist/engines/ferretdb/index.js.map +1 -1
  40. package/dist/engines/ferretdb/restore.js +223 -20
  41. package/dist/engines/ferretdb/restore.js.map +1 -1
  42. package/dist/engines/influxdb/api-client.js +1 -1
  43. package/dist/engines/influxdb/api-client.js.map +1 -1
  44. package/dist/engines/influxdb/backup.js +25 -5
  45. package/dist/engines/influxdb/backup.js.map +1 -1
  46. package/dist/engines/influxdb/index.js +165 -43
  47. package/dist/engines/influxdb/index.js.map +1 -1
  48. package/dist/engines/influxdb/restore.js +22 -2
  49. package/dist/engines/influxdb/restore.js.map +1 -1
  50. package/dist/engines/mariadb/backup.js +24 -15
  51. package/dist/engines/mariadb/backup.js.map +1 -1
  52. package/dist/engines/mariadb/env.js +11 -0
  53. package/dist/engines/mariadb/env.js.map +1 -0
  54. package/dist/engines/mariadb/index.js +192 -113
  55. package/dist/engines/mariadb/index.js.map +1 -1
  56. package/dist/engines/mariadb/restore.js +28 -5
  57. package/dist/engines/mariadb/restore.js.map +1 -1
  58. package/dist/engines/meilisearch/backup.js +8 -4
  59. package/dist/engines/meilisearch/backup.js.map +1 -1
  60. package/dist/engines/meilisearch/index.js +55 -58
  61. package/dist/engines/meilisearch/index.js.map +1 -1
  62. package/dist/engines/mongo-uri.js +11 -0
  63. package/dist/engines/mongo-uri.js.map +1 -0
  64. package/dist/engines/mongodb/backup.js +62 -13
  65. package/dist/engines/mongodb/backup.js.map +1 -1
  66. package/dist/engines/mongodb/index.js +170 -108
  67. package/dist/engines/mongodb/index.js.map +1 -1
  68. package/dist/engines/mongodb/restore.js +21 -1
  69. package/dist/engines/mongodb/restore.js.map +1 -1
  70. package/dist/engines/mysql/backup.js +24 -7
  71. package/dist/engines/mysql/backup.js.map +1 -1
  72. package/dist/engines/mysql/index.js +154 -89
  73. package/dist/engines/mysql/index.js.map +1 -1
  74. package/dist/engines/mysql/restore.js +14 -4
  75. package/dist/engines/mysql/restore.js.map +1 -1
  76. package/dist/engines/postgresql/backup.js +9 -2
  77. package/dist/engines/postgresql/backup.js.map +1 -1
  78. package/dist/engines/postgresql/index.js +45 -17
  79. package/dist/engines/postgresql/index.js.map +1 -1
  80. package/dist/engines/postgresql/restore.js +7 -3
  81. package/dist/engines/postgresql/restore.js.map +1 -1
  82. package/dist/engines/qdrant/backup.js +5 -1
  83. package/dist/engines/qdrant/backup.js.map +1 -1
  84. package/dist/engines/qdrant/index.js +31 -2
  85. package/dist/engines/qdrant/index.js.map +1 -1
  86. package/dist/engines/qdrant/restore.js +5 -3
  87. package/dist/engines/qdrant/restore.js.map +1 -1
  88. package/dist/engines/questdb/auth.js +26 -0
  89. package/dist/engines/questdb/auth.js.map +1 -0
  90. package/dist/engines/questdb/backup.js +10 -8
  91. package/dist/engines/questdb/backup.js.map +1 -1
  92. package/dist/engines/questdb/index.js +16 -8
  93. package/dist/engines/questdb/index.js.map +1 -1
  94. package/dist/engines/questdb/restore.js +7 -5
  95. package/dist/engines/questdb/restore.js.map +1 -1
  96. package/dist/engines/redis/backup.js +45 -16
  97. package/dist/engines/redis/backup.js.map +1 -1
  98. package/dist/engines/redis/cli-common.js +62 -0
  99. package/dist/engines/redis/cli-common.js.map +1 -0
  100. package/dist/engines/redis/index.js +31 -8
  101. package/dist/engines/redis/index.js.map +1 -1
  102. package/dist/engines/redis/restore.js +59 -9
  103. package/dist/engines/redis/restore.js.map +1 -1
  104. package/dist/engines/surrealdb/auth.js +98 -0
  105. package/dist/engines/surrealdb/auth.js.map +1 -0
  106. package/dist/engines/surrealdb/backup.js +72 -9
  107. package/dist/engines/surrealdb/backup.js.map +1 -1
  108. package/dist/engines/surrealdb/index.js +84 -144
  109. package/dist/engines/surrealdb/index.js.map +1 -1
  110. package/dist/engines/surrealdb/restore.js +32 -31
  111. package/dist/engines/surrealdb/restore.js.map +1 -1
  112. package/dist/engines/typedb/backup.js +9 -1
  113. package/dist/engines/typedb/backup.js.map +1 -1
  114. package/dist/engines/typedb/cli-utils.js +3 -3
  115. package/dist/engines/typedb/cli-utils.js.map +1 -1
  116. package/dist/engines/typedb/index.js +9 -2
  117. package/dist/engines/typedb/index.js.map +1 -1
  118. package/dist/engines/typedb/restore.js +19 -7
  119. package/dist/engines/typedb/restore.js.map +1 -1
  120. package/dist/engines/valkey/backup.js +37 -13
  121. package/dist/engines/valkey/backup.js.map +1 -1
  122. package/dist/engines/valkey/index.js +207 -58
  123. package/dist/engines/valkey/index.js.map +1 -1
  124. package/dist/engines/valkey/restore.js +21 -2
  125. package/dist/engines/valkey/restore.js.map +1 -1
  126. package/dist/engines/weaviate/backup.js +7 -2
  127. package/dist/engines/weaviate/backup.js.map +1 -1
  128. package/dist/types/index.js.map +1 -1
  129. package/package.json +1 -1
@@ -1,72 +1,39 @@
1
1
  /**
2
2
  * FerretDB backup module
3
3
  *
4
- * Creates backups using pg_dump on the embedded PostgreSQL backend.
5
- * This backs up the ferretdb database which contains all MongoDB-compatible data.
4
+ * Creates backups using mongodump on the MongoDB-compatible proxy.
5
+ * This preserves FerretDB's document model correctly and works when SCRAM auth
6
+ * is enabled, unlike the old pg_dump-based backend backup.
6
7
  */
7
8
  import { spawn } from 'child_process';
8
9
  import { stat } from 'fs/promises';
9
10
  import { existsSync } from 'fs';
10
- import { join, dirname } from 'path';
11
+ import { dirname, join } from 'path';
11
12
  import { mkdir } from 'fs/promises';
12
13
  import { logDebug } from '../../core/error-handler.js';
13
- import { configManager } from '../../core/config-manager.js';
14
- import { platformService } from '../../core/platform-service.js';
15
- import { paths } from '../../config/paths.js';
16
- import { ferretdbBinaryManager } from './binary-manager.js';
17
- import { DEFAULT_DOCUMENTDB_VERSION, DEFAULT_V1_POSTGRESQL_VERSION, isV1, } from './version-maps.js';
18
- /**
19
- * Get the path to pg_dump from the backend installation.
20
- *
21
- * Searches with fallbacks:
22
- * 1. Container's specific backend binary directory
23
- * 2. Any installed PostgreSQL version (newest first) — pg_dump is forward-compatible
24
- * 3. System binary registered via `spindb config set pg_dump`
25
- */
26
- async function getPgDumpPath(container) {
27
- const { version, backendVersion } = container;
28
- const { platform, arch } = platformService.getPlatformInfo();
29
- const v1 = isV1(version);
30
- const ext = platformService.getExecutableExtension();
31
- const effectiveBackendVersion = v1
32
- ? backendVersion || DEFAULT_V1_POSTGRESQL_VERSION
33
- : backendVersion || DEFAULT_DOCUMENTDB_VERSION;
34
- // 1. Try the container's own backend path
35
- const backendPath = ferretdbBinaryManager.getBackendBinaryPath(version, effectiveBackendVersion, platform, arch);
36
- const primaryPath = join(backendPath, 'bin', `pg_dump${ext}`);
37
- if (existsSync(primaryPath)) {
38
- return primaryPath;
39
- }
40
- logDebug(`pg_dump not found at ${primaryPath}, searching other installed PostgreSQL versions`);
41
- // 2. Search all installed PostgreSQL versions (newest first)
42
- const installed = paths.findInstalledBinaries('postgresql', platform, arch);
43
- for (const entry of installed) {
44
- const candidate = join(entry.path, 'bin', `pg_dump${ext}`);
45
- if (existsSync(candidate)) {
46
- logDebug(`Found pg_dump in PostgreSQL ${entry.version}`);
47
- return candidate;
14
+ import { getDefaultUsername, loadCredentials } from '../../core/credential-manager.js';
15
+ import { buildMongoUri } from '../mongo-uri.js';
16
+ import { getMongodumpPath, MONGODUMP_NOT_FOUND_ERROR } from '../mongodb/cli-utils.js';
17
+ import { Engine } from '../../types/index.js';
18
+ function redactMongoUri(uri) {
19
+ try {
20
+ const url = new URL(uri);
21
+ if (!url.username && !url.password) {
22
+ return uri;
48
23
  }
24
+ return `${url.protocol}//<redacted>@${url.host}${url.pathname}${url.search}`;
49
25
  }
50
- // Also check postgresql-documentdb installations
51
- const documentdbInstalled = paths.findInstalledBinaries('postgresql-documentdb', platform, arch);
52
- for (const entry of documentdbInstalled) {
53
- const candidate = join(entry.path, 'bin', `pg_dump${ext}`);
54
- if (existsSync(candidate)) {
55
- logDebug(`Found pg_dump in postgresql-documentdb ${entry.version}`);
56
- return candidate;
57
- }
26
+ catch {
27
+ return 'mongodb://<redacted>';
58
28
  }
59
- // 3. Fall back to system binary
60
- const systemPgDump = await configManager.getBinaryPath('pg_dump');
61
- if (systemPgDump) {
62
- return systemPgDump;
29
+ }
30
+ function sanitizeMongoArgs(args) {
31
+ const sanitized = [...args];
32
+ const uriIndex = sanitized.indexOf('--uri');
33
+ if (uriIndex >= 0 && uriIndex + 1 < sanitized.length) {
34
+ sanitized[uriIndex + 1] = redactMongoUri(sanitized[uriIndex + 1]);
63
35
  }
64
- const backendName = v1 ? 'PostgreSQL' : 'postgresql-documentdb';
65
- throw new Error(`pg_dump not found. The ${backendName} installation at ${backendPath} does not include client tools.\n` +
66
- 'Install PostgreSQL client tools:\n' +
67
- ' macOS: brew install libpq && brew link --force libpq\n' +
68
- ' Ubuntu/Debian: apt install postgresql-client\n\n' +
69
- 'Or configure manually: spindb config set pg_dump /path/to/pg_dump');
36
+ return sanitized;
70
37
  }
71
38
  /**
72
39
  * Create a backup of a FerretDB database using pg_dump
@@ -76,46 +43,58 @@ async function getPgDumpPath(container) {
76
43
  * - 'custom' (default): PostgreSQL custom format (.dump)
77
44
  */
78
45
  export async function createBackup(container, outputPath, options) {
79
- const { backendPort } = container;
80
- const database = options.database || 'ferretdb';
81
- if (!backendPort) {
82
- throw new Error('Backend port not set. Make sure the container is running before creating a backup.');
46
+ const { name, port, version } = container;
47
+ const database = options.database || container.database || 'test';
48
+ const mongodump = await getMongodumpPath(version);
49
+ if (!mongodump) {
50
+ throw new Error(MONGODUMP_NOT_FOUND_ERROR);
83
51
  }
84
- const pgDump = await getPgDumpPath(container);
85
52
  // Ensure output directory exists
86
53
  const outputDir = dirname(outputPath);
87
54
  if (!existsSync(outputDir)) {
88
55
  await mkdir(outputDir, { recursive: true });
89
56
  }
90
- const args = [
91
- '-h',
92
- '127.0.0.1',
93
- '-p',
94
- String(backendPort),
95
- '-U',
96
- 'postgres',
97
- '--no-password',
98
- '-d',
99
- database,
100
- ];
101
- // Determine output format (default to 'sql' as per backup-formats.ts)
102
- const format = options.format ?? 'sql';
103
- if (format === 'custom') {
104
- // Custom format: binary, compressed, supports parallel restore
105
- args.push('-Fc', '-f', outputPath);
57
+ const savedCreds = await loadCredentials(name, Engine.FerretDB, getDefaultUsername(Engine.FerretDB));
58
+ const args = savedCreds
59
+ ? [
60
+ '--uri',
61
+ buildMongoUri(port, database, {
62
+ username: savedCreds.username,
63
+ password: savedCreds.password,
64
+ authDatabase: savedCreds.database || 'admin',
65
+ }, container.bindAddress ?? '127.0.0.1'),
66
+ '--db',
67
+ database,
68
+ ]
69
+ : [
70
+ '--host',
71
+ '127.0.0.1',
72
+ '--port',
73
+ String(port),
74
+ '--db',
75
+ database,
76
+ ];
77
+ // FerretDB now uses Mongo-compatible backup formats under the hood:
78
+ // - archive: single compressed file
79
+ // - bson: directory dump
80
+ const format = options.format ?? 'archive';
81
+ if (format === 'archive') {
82
+ args.push('--archive=' + outputPath, '--gzip');
106
83
  }
107
84
  else {
108
- // SQL format: plain text, human-readable
109
- args.push('-f', outputPath);
85
+ args.push('--out', outputPath);
110
86
  }
111
- logDebug(`Running pg_dump with args: ${args.join(' ')}`);
87
+ logDebug(`Running mongodump with args: ${sanitizeMongoArgs(args).join(' ')}`);
112
88
  const spawnOptions = {
113
- stdio: ['pipe', 'ignore', 'pipe'],
89
+ stdio: ['pipe', 'pipe', 'pipe'],
114
90
  };
115
91
  return new Promise((resolve, reject) => {
116
- const proc = spawn(pgDump, args, spawnOptions);
92
+ const proc = spawn(mongodump, args, spawnOptions);
117
93
  let stderr = '';
118
94
  let finished = false;
95
+ proc.stdout?.on('data', () => {
96
+ // mongodump typically writes progress to stderr
97
+ });
119
98
  proc.stderr?.on('data', (data) => {
120
99
  stderr += data.toString();
121
100
  });
@@ -131,12 +110,33 @@ export async function createBackup(container, outputPath, options) {
131
110
  finished = true;
132
111
  if (code === 0) {
133
112
  // Get backup size
134
- stat(outputPath)
135
- .then((stats) => {
113
+ const getBackupSize = async () => {
114
+ if (format !== 'bson') {
115
+ return (await stat(outputPath)).size;
116
+ }
117
+ const { readdir, stat: fileStat } = await import('fs/promises');
118
+ const sumDirectory = async (dirPath) => {
119
+ const entries = await readdir(dirPath, { withFileTypes: true });
120
+ let total = 0;
121
+ for (const entry of entries) {
122
+ const entryPath = join(dirPath, entry.name);
123
+ if (entry.isDirectory()) {
124
+ total += await sumDirectory(entryPath);
125
+ }
126
+ else if (entry.isFile()) {
127
+ total += (await fileStat(entryPath)).size;
128
+ }
129
+ }
130
+ return total;
131
+ };
132
+ return sumDirectory(outputPath);
133
+ };
134
+ getBackupSize()
135
+ .then((size) => {
136
136
  resolve({
137
137
  path: outputPath,
138
138
  format,
139
- size: stats.size,
139
+ size,
140
140
  });
141
141
  })
142
142
  .catch(() => {
@@ -149,7 +149,7 @@ export async function createBackup(container, outputPath, options) {
149
149
  });
150
150
  }
151
151
  else {
152
- reject(new Error(stderr || `pg_dump exited with code ${code}`));
152
+ reject(new Error(stderr || `mongodump exited with code ${code}`));
153
153
  }
154
154
  });
155
155
  });
@@ -159,12 +159,9 @@ export async function createBackup(container, outputPath, options) {
159
159
  * Uses custom format by default for reliability and smaller size
160
160
  */
161
161
  export async function createCloneBackup(container, outputPath) {
162
- // FerretDB stores all MongoDB-compatible document data in a PostgreSQL database
163
- // named 'ferretdb'. This is the backend database that pg_dump targets.
164
- // See CLAUDE.md "FerretDB (Composite Engine)" section for architecture details.
165
162
  return createBackup(container, outputPath, {
166
- database: 'ferretdb',
167
- format: 'custom',
163
+ database: container.database,
164
+ format: 'archive',
168
165
  });
169
166
  }
170
167
  //# sourceMappingURL=backup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"backup.js","sourceRoot":"","sources":["../../../engines/ferretdb/backup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backup.js","sourceRoot":"","sources":["../../../engines/ferretdb/backup.ts"],"names":[],"mappings":"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"}