gazill 2.1.0 → 2.3.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/commands/autoscale.d.ts +5 -0
- package/dist/commands/autoscale.d.ts.map +1 -0
- package/dist/commands/autoscale.js +140 -0
- package/dist/commands/autoscale.js.map +1 -0
- package/dist/commands/blob.d.ts +19 -0
- package/dist/commands/blob.d.ts.map +1 -0
- package/dist/commands/blob.js +383 -0
- package/dist/commands/blob.js.map +1 -0
- package/dist/commands/cron.d.ts +27 -0
- package/dist/commands/cron.d.ts.map +1 -0
- package/dist/commands/cron.js +333 -0
- package/dist/commands/cron.js.map +1 -0
- package/dist/commands/db.d.ts +21 -0
- package/dist/commands/db.d.ts.map +1 -0
- package/dist/commands/db.js +567 -0
- package/dist/commands/db.js.map +1 -0
- package/dist/commands/domains.d.ts +5 -0
- package/dist/commands/domains.d.ts.map +1 -0
- package/dist/commands/domains.js +239 -0
- package/dist/commands/domains.js.map +1 -0
- package/dist/commands/env.d.ts +4 -0
- package/dist/commands/env.d.ts.map +1 -0
- package/dist/commands/env.js +180 -0
- package/dist/commands/env.js.map +1 -0
- package/dist/commands/health.d.ts +7 -0
- package/dist/commands/health.d.ts.map +1 -0
- package/dist/commands/health.js +189 -0
- package/dist/commands/health.js.map +1 -0
- package/dist/commands/limits.d.ts +2 -0
- package/dist/commands/limits.d.ts.map +1 -0
- package/dist/commands/limits.js +186 -0
- package/dist/commands/limits.js.map +1 -0
- package/dist/commands/mysql.d.ts +15 -0
- package/dist/commands/mysql.d.ts.map +1 -0
- package/dist/commands/mysql.js +413 -0
- package/dist/commands/mysql.js.map +1 -0
- package/dist/commands/new.d.ts.map +1 -1
- package/dist/commands/new.js +29 -3
- package/dist/commands/new.js.map +1 -1
- package/dist/commands/promote.d.ts.map +1 -1
- package/dist/commands/promote.js +36 -9
- package/dist/commands/promote.js.map +1 -1
- package/dist/commands/redis.d.ts +15 -0
- package/dist/commands/redis.d.ts.map +1 -0
- package/dist/commands/redis.js +402 -0
- package/dist/commands/redis.js.map +1 -0
- package/dist/commands/rollback.d.ts +9 -0
- package/dist/commands/rollback.d.ts.map +1 -0
- package/dist/commands/rollback.js +154 -0
- package/dist/commands/rollback.js.map +1 -0
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +24 -1
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/usage.d.ts.map +1 -1
- package/dist/commands/usage.js +20 -11
- package/dist/commands/usage.js.map +1 -1
- package/dist/commands/worker.d.ts +31 -0
- package/dist/commands/worker.d.ts.map +1 -0
- package/dist/commands/worker.js +380 -0
- package/dist/commands/worker.js.map +1 -0
- package/dist/index.js +362 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/api.d.ts +46 -2
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/api.js +16 -0
- package/dist/lib/api.js.map +1 -1
- package/dist/shared/constants.d.ts +10 -0
- package/dist/shared/constants.d.ts.map +1 -1
- package/dist/shared/constants.js +11 -0
- package/dist/shared/constants.js.map +1 -1
- package/dist/shared/types.d.ts +40 -1
- package/dist/shared/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,567 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
import inquirer from 'inquirer';
|
|
4
|
+
import { promises as fs } from 'fs';
|
|
5
|
+
import { getAuth, getApiUrl } from '../lib/config.js';
|
|
6
|
+
import { listProjects } from '../lib/api.js';
|
|
7
|
+
// API helper for database routes
|
|
8
|
+
async function dbApiRequest(endpoint, options = { method: 'GET' }) {
|
|
9
|
+
const apiUrl = await getApiUrl();
|
|
10
|
+
const auth = await getAuth();
|
|
11
|
+
if (!auth?.token) {
|
|
12
|
+
throw new Error('Not authenticated');
|
|
13
|
+
}
|
|
14
|
+
const response = await fetch(`${apiUrl}${endpoint}`, {
|
|
15
|
+
method: options.method,
|
|
16
|
+
headers: {
|
|
17
|
+
'Content-Type': 'application/json',
|
|
18
|
+
Authorization: `Bearer ${auth.token}`,
|
|
19
|
+
},
|
|
20
|
+
body: options.body ? JSON.stringify(options.body) : undefined,
|
|
21
|
+
});
|
|
22
|
+
const data = await response.json();
|
|
23
|
+
if (!response.ok) {
|
|
24
|
+
throw new Error(data.message || 'Request failed');
|
|
25
|
+
}
|
|
26
|
+
return data;
|
|
27
|
+
}
|
|
28
|
+
// Get current project ID from .gazill file
|
|
29
|
+
async function getProjectId() {
|
|
30
|
+
try {
|
|
31
|
+
const content = await fs.readFile('.gazill', 'utf-8');
|
|
32
|
+
const data = JSON.parse(content);
|
|
33
|
+
return data.projectId || null;
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// Find project by name
|
|
40
|
+
async function findProjectByName(name) {
|
|
41
|
+
const response = await listProjects();
|
|
42
|
+
return response.projects.find((p) => p.name === name) || null;
|
|
43
|
+
}
|
|
44
|
+
// Format bytes to human-readable string
|
|
45
|
+
function formatBytes(bytes) {
|
|
46
|
+
if (bytes === 0)
|
|
47
|
+
return '0 B';
|
|
48
|
+
const k = 1024;
|
|
49
|
+
const sizes = ['B', 'KB', 'MB', 'GB'];
|
|
50
|
+
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
51
|
+
return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];
|
|
52
|
+
}
|
|
53
|
+
// Create a new database
|
|
54
|
+
export async function dbCreateCommand(name, options) {
|
|
55
|
+
const auth = await getAuth();
|
|
56
|
+
if (!auth?.token) {
|
|
57
|
+
console.log(chalk.red('Not logged in. Run `gazill login` first.'));
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
// Get database name
|
|
61
|
+
let dbName = name;
|
|
62
|
+
if (!dbName) {
|
|
63
|
+
const answers = await inquirer.prompt([
|
|
64
|
+
{
|
|
65
|
+
type: 'input',
|
|
66
|
+
name: 'name',
|
|
67
|
+
message: 'Database name:',
|
|
68
|
+
default: 'main',
|
|
69
|
+
validate: (input) => {
|
|
70
|
+
if (!/^[a-z][a-z0-9-]*$/.test(input)) {
|
|
71
|
+
return 'Name must start with a letter and contain only lowercase letters, numbers, and hyphens';
|
|
72
|
+
}
|
|
73
|
+
return true;
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
]);
|
|
77
|
+
dbName = answers.name;
|
|
78
|
+
}
|
|
79
|
+
// Get size
|
|
80
|
+
let size = options?.size;
|
|
81
|
+
if (!size) {
|
|
82
|
+
const answers = await inquirer.prompt([
|
|
83
|
+
{
|
|
84
|
+
type: 'list',
|
|
85
|
+
name: 'size',
|
|
86
|
+
message: 'Database size:',
|
|
87
|
+
choices: [
|
|
88
|
+
{ name: 'Small (512MB, 5GB storage, 20 connections) - $0.01/hr', value: 'small' },
|
|
89
|
+
{ name: 'Medium (1GB, 10GB storage, 50 connections) - $0.02/hr', value: 'medium' },
|
|
90
|
+
{ name: 'Large (2GB, 25GB storage, 100 connections) - $0.04/hr', value: 'large' },
|
|
91
|
+
{ name: 'XL (4GB, 50GB storage, 200 connections) - $0.08/hr', value: 'xl' },
|
|
92
|
+
],
|
|
93
|
+
default: 'small',
|
|
94
|
+
},
|
|
95
|
+
]);
|
|
96
|
+
size = answers.size;
|
|
97
|
+
}
|
|
98
|
+
const spinner = ora('Creating database...').start();
|
|
99
|
+
try {
|
|
100
|
+
// Get project ID
|
|
101
|
+
let projectId = await getProjectId();
|
|
102
|
+
if (!projectId && !options?.project) {
|
|
103
|
+
spinner.stop();
|
|
104
|
+
console.log(chalk.red('No project specified. Run from a project directory or use --project <name>.'));
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
// If project name specified, look it up
|
|
108
|
+
if (options?.project) {
|
|
109
|
+
const project = await findProjectByName(options.project);
|
|
110
|
+
if (!project) {
|
|
111
|
+
spinner.fail(`Project "${options.project}" not found.`);
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
projectId = project.id;
|
|
115
|
+
}
|
|
116
|
+
const response = await dbApiRequest(`/api/projects/${projectId}/databases`, {
|
|
117
|
+
method: 'POST',
|
|
118
|
+
body: { name: dbName, size },
|
|
119
|
+
});
|
|
120
|
+
spinner.succeed(`Created database ${chalk.cyan(response.database.name)}`);
|
|
121
|
+
console.log();
|
|
122
|
+
console.log(chalk.gray(' Status:'), chalk.green(response.database.status));
|
|
123
|
+
console.log(chalk.gray(' Size:'), response.database.size);
|
|
124
|
+
console.log(chalk.gray(' Port:'), response.database.port);
|
|
125
|
+
console.log();
|
|
126
|
+
console.log(chalk.gray('Use `gazill db connect` to view connection details.'));
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
spinner.fail('Failed to create database');
|
|
130
|
+
console.error(chalk.red(error instanceof Error ? error.message : 'Unknown error'));
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
// List databases for a project
|
|
134
|
+
export async function dbListCommand(projectName) {
|
|
135
|
+
const auth = await getAuth();
|
|
136
|
+
if (!auth?.token) {
|
|
137
|
+
console.log(chalk.red('Not logged in. Run `gazill login` first.'));
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
const spinner = ora('Fetching databases...').start();
|
|
141
|
+
try {
|
|
142
|
+
// Get project ID
|
|
143
|
+
let projectId = await getProjectId();
|
|
144
|
+
if (!projectId && !projectName) {
|
|
145
|
+
spinner.stop();
|
|
146
|
+
console.log(chalk.red('No project specified. Run from a project directory or specify project name.'));
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
// If project name specified, look it up
|
|
150
|
+
if (projectName) {
|
|
151
|
+
const project = await findProjectByName(projectName);
|
|
152
|
+
if (!project) {
|
|
153
|
+
spinner.fail(`Project "${projectName}" not found.`);
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
projectId = project.id;
|
|
157
|
+
}
|
|
158
|
+
const response = await dbApiRequest(`/api/projects/${projectId}/databases`);
|
|
159
|
+
spinner.stop();
|
|
160
|
+
if (response.databases.length === 0) {
|
|
161
|
+
console.log(chalk.yellow('No databases found.'));
|
|
162
|
+
console.log(chalk.gray('Use `gazill db create` to create one.'));
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
console.log(chalk.bold('\nDatabases:\n'));
|
|
166
|
+
for (const db of response.databases) {
|
|
167
|
+
const statusColor = db.status === 'running' ? chalk.green : db.status === 'stopped' ? chalk.yellow : chalk.red;
|
|
168
|
+
console.log(` ${chalk.cyan(db.name)}`);
|
|
169
|
+
console.log(` Status: ${statusColor(db.status)}`);
|
|
170
|
+
console.log(` Size: ${db.size} (${formatBytes(db.storage.usedBytes)} / ${db.storage.limitGb}GB)`);
|
|
171
|
+
console.log(` Port: ${db.port}`);
|
|
172
|
+
console.log(` Connections: ${db.maxConnections} max`);
|
|
173
|
+
console.log();
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
catch (error) {
|
|
177
|
+
spinner.fail('Failed to fetch databases');
|
|
178
|
+
console.error(chalk.red(error instanceof Error ? error.message : 'Unknown error'));
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
// Show connection details for a database
|
|
182
|
+
export async function dbConnectCommand(name, options) {
|
|
183
|
+
const auth = await getAuth();
|
|
184
|
+
if (!auth?.token) {
|
|
185
|
+
console.log(chalk.red('Not logged in. Run `gazill login` first.'));
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
const spinner = ora('Fetching connection details...').start();
|
|
189
|
+
try {
|
|
190
|
+
// Get project ID
|
|
191
|
+
let projectId = await getProjectId();
|
|
192
|
+
if (!projectId && !options?.project) {
|
|
193
|
+
spinner.stop();
|
|
194
|
+
console.log(chalk.red('No project specified. Run from a project directory or use --project <name>.'));
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
// If project name specified, look it up
|
|
198
|
+
if (options?.project) {
|
|
199
|
+
const project = await findProjectByName(options.project);
|
|
200
|
+
if (!project) {
|
|
201
|
+
spinner.fail(`Project "${options.project}" not found.`);
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
projectId = project.id;
|
|
205
|
+
}
|
|
206
|
+
// Get databases to find by name
|
|
207
|
+
const listResponse = await dbApiRequest(`/api/projects/${projectId}/databases`);
|
|
208
|
+
if (listResponse.databases.length === 0) {
|
|
209
|
+
spinner.fail('No databases found.');
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
// Find database by name or use first one
|
|
213
|
+
let database;
|
|
214
|
+
if (name) {
|
|
215
|
+
database = listResponse.databases.find((d) => d.name === name);
|
|
216
|
+
if (!database) {
|
|
217
|
+
spinner.fail(`Database "${name}" not found.`);
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
else if (listResponse.databases.length === 1) {
|
|
222
|
+
database = listResponse.databases[0];
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
spinner.stop();
|
|
226
|
+
const answers = await inquirer.prompt([
|
|
227
|
+
{
|
|
228
|
+
type: 'list',
|
|
229
|
+
name: 'database',
|
|
230
|
+
message: 'Select a database:',
|
|
231
|
+
choices: listResponse.databases.map((d) => ({ name: d.name, value: d.id })),
|
|
232
|
+
},
|
|
233
|
+
]);
|
|
234
|
+
database = listResponse.databases.find((d) => d.id === answers.database);
|
|
235
|
+
spinner.start('Fetching connection details...');
|
|
236
|
+
}
|
|
237
|
+
const response = await dbApiRequest(`/api/projects/${projectId}/databases/${database.id}`);
|
|
238
|
+
spinner.stop();
|
|
239
|
+
console.log(chalk.bold(`\nConnection details for ${chalk.cyan(response.database.name)}:\n`));
|
|
240
|
+
console.log(chalk.gray(' Host:'), response.connection.host);
|
|
241
|
+
console.log(chalk.gray(' Port:'), response.connection.port);
|
|
242
|
+
console.log(chalk.gray(' Database:'), response.connection.database);
|
|
243
|
+
console.log(chalk.gray(' Username:'), response.connection.username);
|
|
244
|
+
console.log(chalk.gray(' Password:'), response.connection.password);
|
|
245
|
+
console.log();
|
|
246
|
+
console.log(chalk.bold('Connection URL:'));
|
|
247
|
+
console.log(` ${chalk.cyan(response.connection.url)}`);
|
|
248
|
+
console.log();
|
|
249
|
+
console.log(chalk.bold('psql command:'));
|
|
250
|
+
console.log(` ${chalk.gray(response.connection.psqlCommand)}`);
|
|
251
|
+
console.log();
|
|
252
|
+
}
|
|
253
|
+
catch (error) {
|
|
254
|
+
spinner.fail('Failed to fetch connection details');
|
|
255
|
+
console.error(chalk.red(error instanceof Error ? error.message : 'Unknown error'));
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
// Delete a database
|
|
259
|
+
export async function dbDeleteCommand(name, options) {
|
|
260
|
+
const auth = await getAuth();
|
|
261
|
+
if (!auth?.token) {
|
|
262
|
+
console.log(chalk.red('Not logged in. Run `gazill login` first.'));
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
265
|
+
try {
|
|
266
|
+
// Get project ID
|
|
267
|
+
let projectId = await getProjectId();
|
|
268
|
+
if (!projectId && !options?.project) {
|
|
269
|
+
console.log(chalk.red('No project specified. Run from a project directory or use --project <name>.'));
|
|
270
|
+
return;
|
|
271
|
+
}
|
|
272
|
+
// If project name specified, look it up
|
|
273
|
+
if (options?.project) {
|
|
274
|
+
const project = await findProjectByName(options.project);
|
|
275
|
+
if (!project) {
|
|
276
|
+
console.log(chalk.red(`Project "${options.project}" not found.`));
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
279
|
+
projectId = project.id;
|
|
280
|
+
}
|
|
281
|
+
// Get databases to find by name
|
|
282
|
+
const listResponse = await dbApiRequest(`/api/projects/${projectId}/databases`);
|
|
283
|
+
if (listResponse.databases.length === 0) {
|
|
284
|
+
console.log(chalk.yellow('No databases found.'));
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
// Find database by name or prompt
|
|
288
|
+
let database;
|
|
289
|
+
if (name) {
|
|
290
|
+
database = listResponse.databases.find((d) => d.name === name);
|
|
291
|
+
if (!database) {
|
|
292
|
+
console.log(chalk.red(`Database "${name}" not found.`));
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
else {
|
|
297
|
+
const answers = await inquirer.prompt([
|
|
298
|
+
{
|
|
299
|
+
type: 'list',
|
|
300
|
+
name: 'database',
|
|
301
|
+
message: 'Select a database to delete:',
|
|
302
|
+
choices: listResponse.databases.map((d) => ({ name: d.name, value: d.id })),
|
|
303
|
+
},
|
|
304
|
+
]);
|
|
305
|
+
database = listResponse.databases.find((d) => d.id === answers.database);
|
|
306
|
+
}
|
|
307
|
+
// Confirm deletion
|
|
308
|
+
const { confirmed } = await inquirer.prompt([
|
|
309
|
+
{
|
|
310
|
+
type: 'confirm',
|
|
311
|
+
name: 'confirmed',
|
|
312
|
+
message: `Delete database ${chalk.cyan(database.name)}? This cannot be undone.`,
|
|
313
|
+
default: false,
|
|
314
|
+
},
|
|
315
|
+
]);
|
|
316
|
+
if (!confirmed) {
|
|
317
|
+
console.log(chalk.gray('Cancelled.'));
|
|
318
|
+
return;
|
|
319
|
+
}
|
|
320
|
+
const spinner = ora('Deleting database...').start();
|
|
321
|
+
await dbApiRequest(`/api/projects/${projectId}/databases/${database.id}`, { method: 'DELETE' });
|
|
322
|
+
spinner.succeed(`Deleted database ${chalk.cyan(database.name)}`);
|
|
323
|
+
}
|
|
324
|
+
catch (error) {
|
|
325
|
+
console.error(chalk.red(error instanceof Error ? error.message : 'Unknown error'));
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
// Create a backup
|
|
329
|
+
export async function dbBackupCreateCommand(name, options) {
|
|
330
|
+
const auth = await getAuth();
|
|
331
|
+
if (!auth?.token) {
|
|
332
|
+
console.log(chalk.red('Not logged in. Run `gazill login` first.'));
|
|
333
|
+
return;
|
|
334
|
+
}
|
|
335
|
+
try {
|
|
336
|
+
// Get project ID
|
|
337
|
+
let projectId = await getProjectId();
|
|
338
|
+
if (!projectId && !options?.project) {
|
|
339
|
+
console.log(chalk.red('No project specified. Run from a project directory or use --project <name>.'));
|
|
340
|
+
return;
|
|
341
|
+
}
|
|
342
|
+
// If project name specified, look it up
|
|
343
|
+
if (options?.project) {
|
|
344
|
+
const project = await findProjectByName(options.project);
|
|
345
|
+
if (!project) {
|
|
346
|
+
console.log(chalk.red(`Project "${options.project}" not found.`));
|
|
347
|
+
return;
|
|
348
|
+
}
|
|
349
|
+
projectId = project.id;
|
|
350
|
+
}
|
|
351
|
+
// Get databases to find by name
|
|
352
|
+
const listResponse = await dbApiRequest(`/api/projects/${projectId}/databases`);
|
|
353
|
+
if (listResponse.databases.length === 0) {
|
|
354
|
+
console.log(chalk.yellow('No databases found.'));
|
|
355
|
+
return;
|
|
356
|
+
}
|
|
357
|
+
// Find database by name or prompt
|
|
358
|
+
let database;
|
|
359
|
+
if (name) {
|
|
360
|
+
database = listResponse.databases.find((d) => d.name === name);
|
|
361
|
+
if (!database) {
|
|
362
|
+
console.log(chalk.red(`Database "${name}" not found.`));
|
|
363
|
+
return;
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
else if (listResponse.databases.length === 1) {
|
|
367
|
+
database = listResponse.databases[0];
|
|
368
|
+
}
|
|
369
|
+
else {
|
|
370
|
+
const answers = await inquirer.prompt([
|
|
371
|
+
{
|
|
372
|
+
type: 'list',
|
|
373
|
+
name: 'database',
|
|
374
|
+
message: 'Select a database:',
|
|
375
|
+
choices: listResponse.databases.map((d) => ({ name: d.name, value: d.id })),
|
|
376
|
+
},
|
|
377
|
+
]);
|
|
378
|
+
database = listResponse.databases.find((d) => d.id === answers.database);
|
|
379
|
+
}
|
|
380
|
+
const spinner = ora('Creating backup...').start();
|
|
381
|
+
const response = await dbApiRequest(`/api/projects/${projectId}/databases/${database.id}/backups`, { method: 'POST' });
|
|
382
|
+
spinner.succeed(`Created backup: ${chalk.cyan(response.backup.filename)}`);
|
|
383
|
+
}
|
|
384
|
+
catch (error) {
|
|
385
|
+
console.error(chalk.red(error instanceof Error ? error.message : 'Unknown error'));
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
// List backups
|
|
389
|
+
export async function dbBackupListCommand(name, options) {
|
|
390
|
+
const auth = await getAuth();
|
|
391
|
+
if (!auth?.token) {
|
|
392
|
+
console.log(chalk.red('Not logged in. Run `gazill login` first.'));
|
|
393
|
+
return;
|
|
394
|
+
}
|
|
395
|
+
const spinner = ora('Fetching backups...').start();
|
|
396
|
+
try {
|
|
397
|
+
// Get project ID
|
|
398
|
+
let projectId = await getProjectId();
|
|
399
|
+
if (!projectId && !options?.project) {
|
|
400
|
+
spinner.stop();
|
|
401
|
+
console.log(chalk.red('No project specified. Run from a project directory or use --project <name>.'));
|
|
402
|
+
return;
|
|
403
|
+
}
|
|
404
|
+
// If project name specified, look it up
|
|
405
|
+
if (options?.project) {
|
|
406
|
+
const project = await findProjectByName(options.project);
|
|
407
|
+
if (!project) {
|
|
408
|
+
spinner.fail(`Project "${options.project}" not found.`);
|
|
409
|
+
return;
|
|
410
|
+
}
|
|
411
|
+
projectId = project.id;
|
|
412
|
+
}
|
|
413
|
+
// Get databases to find by name
|
|
414
|
+
const listResponse = await dbApiRequest(`/api/projects/${projectId}/databases`);
|
|
415
|
+
if (listResponse.databases.length === 0) {
|
|
416
|
+
spinner.fail('No databases found.');
|
|
417
|
+
return;
|
|
418
|
+
}
|
|
419
|
+
// Find database by name or prompt
|
|
420
|
+
let database;
|
|
421
|
+
if (name) {
|
|
422
|
+
database = listResponse.databases.find((d) => d.name === name);
|
|
423
|
+
if (!database) {
|
|
424
|
+
spinner.fail(`Database "${name}" not found.`);
|
|
425
|
+
return;
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
else if (listResponse.databases.length === 1) {
|
|
429
|
+
database = listResponse.databases[0];
|
|
430
|
+
}
|
|
431
|
+
else {
|
|
432
|
+
spinner.stop();
|
|
433
|
+
const answers = await inquirer.prompt([
|
|
434
|
+
{
|
|
435
|
+
type: 'list',
|
|
436
|
+
name: 'database',
|
|
437
|
+
message: 'Select a database:',
|
|
438
|
+
choices: listResponse.databases.map((d) => ({ name: d.name, value: d.id })),
|
|
439
|
+
},
|
|
440
|
+
]);
|
|
441
|
+
database = listResponse.databases.find((d) => d.id === answers.database);
|
|
442
|
+
spinner.start('Fetching backups...');
|
|
443
|
+
}
|
|
444
|
+
const response = await dbApiRequest(`/api/projects/${projectId}/databases/${database.id}/backups`);
|
|
445
|
+
spinner.stop();
|
|
446
|
+
if (response.backups.length === 0) {
|
|
447
|
+
console.log(chalk.yellow('No backups found.'));
|
|
448
|
+
console.log(chalk.gray('Use `gazill db backup create` to create one.'));
|
|
449
|
+
return;
|
|
450
|
+
}
|
|
451
|
+
console.log(chalk.bold(`\nBackups for ${chalk.cyan(database.name)}:\n`));
|
|
452
|
+
for (const backup of response.backups) {
|
|
453
|
+
const date = new Date(backup.createdAt).toLocaleString();
|
|
454
|
+
console.log(` ${chalk.gray(backup.filename)}`);
|
|
455
|
+
console.log(` Type: ${backup.type}`);
|
|
456
|
+
console.log(` Size: ${formatBytes(backup.sizeBytes)}`);
|
|
457
|
+
console.log(` Created: ${date}`);
|
|
458
|
+
console.log();
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
catch (error) {
|
|
462
|
+
spinner.fail('Failed to fetch backups');
|
|
463
|
+
console.error(chalk.red(error instanceof Error ? error.message : 'Unknown error'));
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
// Resize a database
|
|
467
|
+
export async function dbResizeCommand(size, name, options) {
|
|
468
|
+
const auth = await getAuth();
|
|
469
|
+
if (!auth?.token) {
|
|
470
|
+
console.log(chalk.red('Not logged in. Run `gazill login` first.'));
|
|
471
|
+
return;
|
|
472
|
+
}
|
|
473
|
+
// Validate size
|
|
474
|
+
const validSizes = ['small', 'medium', 'large', 'xl'];
|
|
475
|
+
if (!validSizes.includes(size)) {
|
|
476
|
+
console.log(chalk.red(`Invalid size. Must be one of: ${validSizes.join(', ')}`));
|
|
477
|
+
return;
|
|
478
|
+
}
|
|
479
|
+
try {
|
|
480
|
+
// Get project ID
|
|
481
|
+
let projectId = await getProjectId();
|
|
482
|
+
if (!projectId && !options?.project) {
|
|
483
|
+
console.log(chalk.red('No project specified. Run from a project directory or use --project <name>.'));
|
|
484
|
+
return;
|
|
485
|
+
}
|
|
486
|
+
// If project name specified, look it up
|
|
487
|
+
if (options?.project) {
|
|
488
|
+
const project = await findProjectByName(options.project);
|
|
489
|
+
if (!project) {
|
|
490
|
+
console.log(chalk.red(`Project "${options.project}" not found.`));
|
|
491
|
+
return;
|
|
492
|
+
}
|
|
493
|
+
projectId = project.id;
|
|
494
|
+
}
|
|
495
|
+
// Get databases to find by name
|
|
496
|
+
const listResponse = await dbApiRequest(`/api/projects/${projectId}/databases`);
|
|
497
|
+
if (listResponse.databases.length === 0) {
|
|
498
|
+
console.log(chalk.yellow('No databases found.'));
|
|
499
|
+
return;
|
|
500
|
+
}
|
|
501
|
+
// Find database by name or prompt
|
|
502
|
+
let database;
|
|
503
|
+
if (name) {
|
|
504
|
+
database = listResponse.databases.find((d) => d.name === name);
|
|
505
|
+
if (!database) {
|
|
506
|
+
console.log(chalk.red(`Database "${name}" not found.`));
|
|
507
|
+
return;
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
else if (listResponse.databases.length === 1) {
|
|
511
|
+
database = listResponse.databases[0];
|
|
512
|
+
}
|
|
513
|
+
else {
|
|
514
|
+
const answers = await inquirer.prompt([
|
|
515
|
+
{
|
|
516
|
+
type: 'list',
|
|
517
|
+
name: 'database',
|
|
518
|
+
message: 'Select a database to resize:',
|
|
519
|
+
choices: listResponse.databases.map((d) => ({ name: `${d.name} (${d.size})`, value: d.id })),
|
|
520
|
+
},
|
|
521
|
+
]);
|
|
522
|
+
database = listResponse.databases.find((d) => d.id === answers.database);
|
|
523
|
+
}
|
|
524
|
+
if (database.size === size) {
|
|
525
|
+
console.log(chalk.yellow(`Database is already ${size}.`));
|
|
526
|
+
return;
|
|
527
|
+
}
|
|
528
|
+
// Confirm resize
|
|
529
|
+
const sizeInfo = {
|
|
530
|
+
small: '512MB RAM, 5GB storage, 20 connections - $0.01/hr',
|
|
531
|
+
medium: '1GB RAM, 10GB storage, 50 connections - $0.02/hr',
|
|
532
|
+
large: '2GB RAM, 25GB storage, 100 connections - $0.04/hr',
|
|
533
|
+
xl: '4GB RAM, 50GB storage, 200 connections - $0.08/hr',
|
|
534
|
+
};
|
|
535
|
+
console.log();
|
|
536
|
+
console.log(`Current size: ${chalk.cyan(database.size)}`);
|
|
537
|
+
console.log(`New size: ${chalk.cyan(size)} (${sizeInfo[size]})`);
|
|
538
|
+
console.log();
|
|
539
|
+
const { confirmed } = await inquirer.prompt([
|
|
540
|
+
{
|
|
541
|
+
type: 'confirm',
|
|
542
|
+
name: 'confirmed',
|
|
543
|
+
message: `Resize database ${chalk.cyan(database.name)} to ${size}?`,
|
|
544
|
+
default: true,
|
|
545
|
+
},
|
|
546
|
+
]);
|
|
547
|
+
if (!confirmed) {
|
|
548
|
+
console.log(chalk.gray('Cancelled.'));
|
|
549
|
+
return;
|
|
550
|
+
}
|
|
551
|
+
const spinner = ora('Resizing database...').start();
|
|
552
|
+
const response = await dbApiRequest(`/api/projects/${projectId}/databases/${database.id}/resize`, {
|
|
553
|
+
method: 'PATCH',
|
|
554
|
+
body: { size },
|
|
555
|
+
});
|
|
556
|
+
spinner.succeed(`Resized ${chalk.cyan(response.database.name)} to ${chalk.green(response.database.size)}`);
|
|
557
|
+
console.log();
|
|
558
|
+
console.log(chalk.gray(' Storage limit:'), `${response.database.storage.limitGb}GB`);
|
|
559
|
+
console.log(chalk.gray(' Max connections:'), response.database.maxConnections);
|
|
560
|
+
console.log();
|
|
561
|
+
console.log(chalk.gray('Note: The database will restart with new resources.'));
|
|
562
|
+
}
|
|
563
|
+
catch (error) {
|
|
564
|
+
console.error(chalk.red(error instanceof Error ? error.message : 'Unknown error'));
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
//# sourceMappingURL=db.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/commands/db.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function domainsListCommand(projectName?: string): Promise<void>;
|
|
2
|
+
export declare function domainsAddCommand(domain: string, projectName?: string): Promise<void>;
|
|
3
|
+
export declare function domainsRemoveCommand(domain: string, projectName?: string): Promise<void>;
|
|
4
|
+
export declare function domainsVerifyCommand(domain: string, projectName?: string): Promise<void>;
|
|
5
|
+
//# sourceMappingURL=domains.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domains.d.ts","sourceRoot":"","sources":["../../src/commands/domains.ts"],"names":[],"mappings":"AAqGA,wBAAsB,kBAAkB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuD5E;AAGD,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoD3F;AAGD,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsD9F;AAGD,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8C9F"}
|