feat(app): add environment import/export and sidebar footer info

- add environment import/export API endpoints and client integration

- add environment export actions and toolbar import/export buttons in UI

- move theme switcher to sidebar bottom and show root package version

- switch snippet card menu icon to cog for consistent options affordance
This commit is contained in:
2026-04-10 20:29:40 +03:00
parent 99da7ac891
commit 0e4a2e1819
13 changed files with 218 additions and 20 deletions
@@ -14,6 +14,7 @@ import { ApiOperation, ApiResponse, ApiTags } from "@nestjs/swagger";
import { EnvironmentService } from "./environment.service";
import { CreateEnvironmentDto } from "./dto/create-environment.dto";
import { UpdateEnvironmentDto } from "./dto/update-environment.dto";
import { EnvironmentExportDto } from "./dto/environment-export.dto";
import { PaginationQueryDto } from "../common/dto/pagination.dto";
import { EnvironmentOrderBy } from "./environment.service";
@@ -30,6 +31,13 @@ export class EnvironmentController {
return this.environmentService.create(dto);
}
@Post("import")
@ApiOperation({ summary: "Import an environment (upsert by id or name)" })
@ApiResponse({ status: 201, description: "Environment imported" })
async importEnvironment(@Body() dto: EnvironmentExportDto) {
return this.environmentService.importEnvironment(dto);
}
@Get()
@ApiOperation({ summary: "List all environments (paginated)" })
@ApiResponse({ status: 200, description: "Paginated environments" })
@@ -37,6 +45,15 @@ export class EnvironmentController {
return this.environmentService.findAll(query);
}
@Get(":id/export")
@ApiOperation({ summary: "Export an environment as a plain object" })
@ApiResponse({ status: 200, description: "Environment export payload" })
@ApiResponse({ status: 404, description: "Environment not found" })
async exportEnvironment(@Param("id", ParseUUIDPipe) id: string) {
const env = await this.environmentService.findOne(id);
return this.environmentService.exportEnvironment(env);
}
@Get(":id")
@ApiOperation({ summary: "Get environment by ID" })
@ApiResponse({ status: 200, description: "Environment record" })