metis-desk/modules/companies/src/api/application/application-configuration.repository.ts
David 3ceac47cd6 feat: implement software installation management
- Add SoftwareInstallationValues value object for encapsulating software installation data.
- Create HTTP routes for managing software installations, including GET, POST, and DELETE operations.
- Implement Sequelize repository for software installations, handling database interactions.
- Add migration script for creating necessary database tables for software installations.
- Create persistence mapper for transforming between domain models and database rows.
- Define snapshot schema for software installations to ensure data consistency.
- Introduce common schemas for software installations to validate API requests and responses.
- Develop UI components for displaying and managing software installations, including history dialogs and forms.
- Implement API client for interacting with software installation endpoints.
- Write tests for software installations panel and form components to ensure functionality.
2026-10-12 20:31:21 +02:00

36 lines
1.3 KiB
TypeScript

import type { UniqueID } from "@repo/rdx-ddd";
import type { Result } from "@repo/rdx-utils";
import type { ApplicationConfiguration } from "../domain/application-configuration.aggregate";
import type { ApplicationConfigurationError } from "../domain/application-configuration-values";
import type { WorkProfile } from "../domain/work-profile.aggregate";
export type ApplicationContext = Readonly<{
configurations: readonly ApplicationConfiguration[];
profiles: readonly WorkProfile[];
people: readonly { id: UniqueID; active: boolean }[];
assets: readonly { id: UniqueID; available: boolean }[];
resources: readonly {
id: UniqueID;
active: boolean;
usage: "application" | "certificate" | "support" | "os" | null;
}[];
actors: ReadonlyMap<string, string>;
}>;
export interface IApplicationConfigurationRepository {
remove(company: UniqueID, id: UniqueID): Promise<Result<void, ApplicationConfigurationError>>;
get(company: UniqueID): Promise<Result<ApplicationContext, ApplicationConfigurationError>>;
save(
company: UniqueID,
action: (
context: ApplicationContext
) => Result<ApplicationConfiguration, ApplicationConfigurationError>
): Promise<
Result<
{ configuration: ApplicationConfiguration; context: ApplicationContext },
ApplicationConfigurationError
>
>;
}