fix(apps): always attempt K8s cleanup on delete, cluster service fixes

- Delete endpoint no longer requires clusterId && latestImageTag
- Clusters: getDefault fallback logic, reassign apps on delete
- Unit tests for cluster default/delete logic
This commit is contained in:
keyhan
2026-04-22 16:44:43 +03:30
parent 8ca787d46e
commit 5f6eccc483
7 changed files with 423 additions and 38 deletions
@@ -188,4 +188,28 @@ export class ApplicationsService {
this.logger.log(`Uploaded code for ${app.name}${zipPath} (${(file.size / 1024).toFixed(1)} KB)`);
return saved;
}
async uploadDbDump(id: string, userId: string, file: Express.Multer.File): Promise<Application> {
if (!file) {
throw new BadRequestException('No file uploaded');
}
const app = await this.findOne(id, userId);
const uploadDir = this.configService.get<string>('platform.uploadDir') || './uploads';
const appDir = path.join(uploadDir, app.userId, app.id);
// Ensure directory exists
fs.mkdirSync(appDir, { recursive: true });
// Save the SQL dump file
const dumpPath = path.join(appDir, 'dump.sql');
fs.writeFileSync(dumpPath, file.buffer);
// Update app with dump path
app.dbDumpPath = dumpPath;
const saved = await this.appsRepository.save(app);
this.logger.log(`Uploaded DB dump for ${app.name}${dumpPath} (${(file.size / 1024).toFixed(1)} KB)`);
return saved;
}
}