mirror of
https://github.com/Termix-SSH/Termix.git
synced 2026-07-16 21:33:41 +00:00
d710989070
proxmox, session-log, oidc-utils, webauthn and guacamole recording now use repositories (new WebauthnCredentialRepository; SsoProviderRepository listEnabled; HostRepository findDecryptedByIdAs/listProxmoxEnabled). Remaining raw access: db boot code, simple-db-ops and docker.ts, which are removed/restructured in later phases.
357 lines
13 KiB
TypeScript
357 lines
13 KiB
TypeScript
import { DatabaseSaveTrigger } from "../../utils/database-save-trigger.js";
|
|
import { getDb, getSqlite } from "../db/index.js";
|
|
import type { DatabaseContext } from "./database-context.js";
|
|
import { WebauthnCredentialRepository } from "./webauthn-credential-repository.js";
|
|
import { AlertRepository } from "./alert-repository.js";
|
|
import { ApiKeyRepository } from "./api-key-repository.js";
|
|
import { AuditLogRepository } from "./audit-log-repository.js";
|
|
import { C2sTunnelPresetRepository } from "./c2s-tunnel-preset-repository.js";
|
|
import { CommandHistoryRepository } from "./command-history-repository.js";
|
|
import { CredentialRepository } from "./credential-repository.js";
|
|
import { DashboardServiceLinkRepository } from "./dashboard-service-link-repository.js";
|
|
import { DismissedAlertRepository } from "./dismissed-alert-repository.js";
|
|
import { FileManagerBookmarkRepository } from "./file-manager-bookmark-repository.js";
|
|
import { HomepageItemRepository } from "./homepage-item-repository.js";
|
|
import { HomepageLayoutRepository } from "./homepage-layout-repository.js";
|
|
import { HostFolderRepository } from "./host-folder-repository.js";
|
|
import { HostHealthRepository } from "./host-health-repository.js";
|
|
import { HostMetricsHistoryRepository } from "./host-metrics-history-repository.js";
|
|
import { HostMetricsPreferenceRepository } from "./host-metrics-preference-repository.js";
|
|
import { HostRepository } from "./host-repository.js";
|
|
import { HostResolutionRepository } from "./host-resolution-repository.js";
|
|
import { NetworkTopologyRepository } from "./network-topology-repository.js";
|
|
import { OpenTabRepository } from "./open-tab-repository.js";
|
|
import { OpksshTokenRepository } from "./opkssh-token-repository.js";
|
|
import { RbacAccessRepository } from "./rbac-access-repository.js";
|
|
import { RecentActivityRepository } from "./recent-activity-repository.js";
|
|
import { RoleRepository } from "./role-repository.js";
|
|
import { SessionRecordingRepository } from "./session-recording-repository.js";
|
|
import { SessionRepository } from "./session-repository.js";
|
|
import { SettingsRepository } from "./settings-repository.js";
|
|
import { SharedCredentialRepository } from "./shared-credential-repository.js";
|
|
import { SnippetRepository } from "./snippet-repository.js";
|
|
import { SshCredentialUsageRepository } from "./ssh-credential-usage-repository.js";
|
|
import { SsoProviderRepository } from "./sso-provider-repository.js";
|
|
import { TermixIdentityCaRepository } from "./termix-identity-ca-repository.js";
|
|
import { TermixIdentityRepository } from "./termix-identity-repository.js";
|
|
import { TmuxSessionTagRepository } from "./tmux-session-tag-repository.js";
|
|
import { TransferRecentRepository } from "./transfer-recent-repository.js";
|
|
import { TrustedDeviceRepository } from "./trusted-device-repository.js";
|
|
import { UserDataExportRepository } from "./user-data-export-repository.js";
|
|
import { UserPreferenceRepository } from "./user-preference-repository.js";
|
|
import { UserRepository } from "./user-repository.js";
|
|
import { VaultProfileRepository } from "./vault-profile-repository.js";
|
|
import { VaultTokenRepository } from "./vault-token-repository.js";
|
|
|
|
export function createCurrentRepositoryContext(): DatabaseContext {
|
|
return {
|
|
dialect: "sqlite",
|
|
drizzle: getDb(),
|
|
sqlite: getSqlite(),
|
|
};
|
|
}
|
|
|
|
export function createCurrentRepositoryWriteHook(
|
|
reason: string,
|
|
): () => Promise<void> {
|
|
return () => DatabaseSaveTrigger.forceSave(reason);
|
|
}
|
|
|
|
export function getCurrentRepositorySqlite() {
|
|
return getSqlite();
|
|
}
|
|
|
|
export function getCurrentSettingValue(key: string): string | null {
|
|
const row = getCurrentRepositorySqlite()
|
|
.prepare("SELECT value FROM settings WHERE key = ?")
|
|
.get(key) as { value?: string } | undefined;
|
|
|
|
return row?.value ?? null;
|
|
}
|
|
|
|
export function createCurrentWebauthnCredentialRepository(): WebauthnCredentialRepository {
|
|
return new WebauthnCredentialRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook("webauthn_credential_repository_write"),
|
|
);
|
|
}
|
|
|
|
export function createCurrentAlertRepository(): AlertRepository {
|
|
return new AlertRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook("alert_repository_write"),
|
|
);
|
|
}
|
|
|
|
export function createCurrentApiKeyRepository(): ApiKeyRepository {
|
|
return new ApiKeyRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook("api_key_repository_write"),
|
|
);
|
|
}
|
|
|
|
export function createCurrentAuditLogRepository(): AuditLogRepository {
|
|
return new AuditLogRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook("audit_log_repository_write"),
|
|
);
|
|
}
|
|
|
|
export function createCurrentC2sTunnelPresetRepository(): C2sTunnelPresetRepository {
|
|
return new C2sTunnelPresetRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook("c2s_tunnel_preset_repository_write"),
|
|
);
|
|
}
|
|
|
|
export function createCurrentCommandHistoryRepository(): CommandHistoryRepository {
|
|
return new CommandHistoryRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook("command_history_repository_write"),
|
|
);
|
|
}
|
|
|
|
export function createCurrentCredentialRepository(): CredentialRepository {
|
|
return new CredentialRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook("credential_repository_write"),
|
|
);
|
|
}
|
|
|
|
export function createCurrentDashboardServiceLinkRepository(): DashboardServiceLinkRepository {
|
|
return new DashboardServiceLinkRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook("dashboard_service_link_repository_write"),
|
|
);
|
|
}
|
|
|
|
export function createCurrentDismissedAlertRepository(): DismissedAlertRepository {
|
|
return new DismissedAlertRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook("dismissed_alert_repository_write"),
|
|
);
|
|
}
|
|
|
|
export function createCurrentFileManagerBookmarkRepository(): FileManagerBookmarkRepository {
|
|
return new FileManagerBookmarkRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook("file_manager_bookmarks_repository_write"),
|
|
);
|
|
}
|
|
|
|
export function createCurrentHomepageItemRepository(): HomepageItemRepository {
|
|
return new HomepageItemRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook("homepage_item_repository_write"),
|
|
);
|
|
}
|
|
|
|
export function createCurrentHomepageLayoutRepository(): HomepageLayoutRepository {
|
|
return new HomepageLayoutRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook("homepage_layout_repository_write"),
|
|
);
|
|
}
|
|
|
|
export function createCurrentHostFolderRepository(): HostFolderRepository {
|
|
return new HostFolderRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook("host_folder_repository_write"),
|
|
);
|
|
}
|
|
|
|
export function createCurrentHostHealthRepository(): HostHealthRepository {
|
|
return new HostHealthRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook("host_health_repository_write"),
|
|
);
|
|
}
|
|
|
|
export function createCurrentHostMetricsHistoryRepository(): HostMetricsHistoryRepository {
|
|
return new HostMetricsHistoryRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook("host_metrics_history_repository_write"),
|
|
);
|
|
}
|
|
|
|
export function createCurrentHostMetricsPreferenceRepository(): HostMetricsPreferenceRepository {
|
|
return new HostMetricsPreferenceRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook(
|
|
"host_metrics_preference_repository_write",
|
|
),
|
|
);
|
|
}
|
|
|
|
export function createCurrentHostRepository(): HostRepository {
|
|
return new HostRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook("host_repository_write"),
|
|
);
|
|
}
|
|
|
|
export function createCurrentHostResolutionRepository(): HostResolutionRepository {
|
|
return new HostResolutionRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook("host_resolution_repository_write"),
|
|
);
|
|
}
|
|
|
|
export function createCurrentNetworkTopologyRepository(): NetworkTopologyRepository {
|
|
return new NetworkTopologyRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook("network_topology_repository_write"),
|
|
);
|
|
}
|
|
|
|
export function createCurrentOpenTabRepository(): OpenTabRepository {
|
|
return new OpenTabRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook("open_tab_repository_write"),
|
|
);
|
|
}
|
|
|
|
export function createCurrentOpksshTokenRepository(): OpksshTokenRepository {
|
|
return new OpksshTokenRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook("opkssh_token_repository_write"),
|
|
);
|
|
}
|
|
|
|
export function createCurrentRbacAccessRepository(): RbacAccessRepository {
|
|
return new RbacAccessRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook("rbac_access_repository_write"),
|
|
);
|
|
}
|
|
|
|
export function createCurrentRecentActivityRepository(): RecentActivityRepository {
|
|
return new RecentActivityRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook("recent_activity_repository_write"),
|
|
);
|
|
}
|
|
|
|
export function createCurrentRoleRepository(): RoleRepository {
|
|
return new RoleRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook("role_repository_write"),
|
|
);
|
|
}
|
|
|
|
export function createCurrentSessionRecordingRepository(): SessionRecordingRepository {
|
|
return new SessionRecordingRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook("session_recording_repository_write"),
|
|
);
|
|
}
|
|
|
|
export function createCurrentSessionRepository(): SessionRepository {
|
|
return new SessionRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook("session_repository_write"),
|
|
);
|
|
}
|
|
|
|
export function createCurrentSettingsRepository(): SettingsRepository {
|
|
return new SettingsRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook("settings_repository_write"),
|
|
);
|
|
}
|
|
|
|
export function createCurrentSharedCredentialRepository(): SharedCredentialRepository {
|
|
return new SharedCredentialRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook("shared_credential_repository_write"),
|
|
);
|
|
}
|
|
|
|
export function createCurrentSnippetRepository(): SnippetRepository {
|
|
return new SnippetRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook("snippet_repository_write"),
|
|
);
|
|
}
|
|
|
|
export function createCurrentSshCredentialUsageRepository(): SshCredentialUsageRepository {
|
|
return new SshCredentialUsageRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook("ssh_credential_usage_repository_write"),
|
|
);
|
|
}
|
|
|
|
export function createCurrentSsoProviderRepository(): SsoProviderRepository {
|
|
return new SsoProviderRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook("sso_provider_repository_write"),
|
|
);
|
|
}
|
|
|
|
export function createCurrentTermixIdentityCaRepository(): TermixIdentityCaRepository {
|
|
return new TermixIdentityCaRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook("termix_identity_ca_repository_write"),
|
|
);
|
|
}
|
|
|
|
export function createCurrentTermixIdentityRepository(): TermixIdentityRepository {
|
|
return new TermixIdentityRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook("termix_identity_repository_write"),
|
|
);
|
|
}
|
|
|
|
export function createCurrentTmuxSessionTagRepository(): TmuxSessionTagRepository {
|
|
return new TmuxSessionTagRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook("tmux_session_tag_repository_write"),
|
|
);
|
|
}
|
|
|
|
export function createCurrentTransferRecentRepository(): TransferRecentRepository {
|
|
return new TransferRecentRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook("transfer_recent_repository_write"),
|
|
);
|
|
}
|
|
|
|
export function createCurrentTrustedDeviceRepository(): TrustedDeviceRepository {
|
|
return new TrustedDeviceRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook("trusted_device_repository_write"),
|
|
);
|
|
}
|
|
|
|
export function createCurrentUserDataExportRepository(): UserDataExportRepository {
|
|
return new UserDataExportRepository(createCurrentRepositoryContext());
|
|
}
|
|
|
|
export function createCurrentUserPreferenceRepository(): UserPreferenceRepository {
|
|
return new UserPreferenceRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook("user_preference_repository_write"),
|
|
);
|
|
}
|
|
|
|
export function createCurrentUserRepository(): UserRepository {
|
|
return new UserRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook("user_repository_write"),
|
|
);
|
|
}
|
|
|
|
export function createCurrentVaultProfileRepository(): VaultProfileRepository {
|
|
return new VaultProfileRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook("vault_profile_repository_write"),
|
|
);
|
|
}
|
|
|
|
export function createCurrentVaultTokenRepository(): VaultTokenRepository {
|
|
return new VaultTokenRepository(
|
|
createCurrentRepositoryContext(),
|
|
createCurrentRepositoryWriteHook("vault_token_repository_write"),
|
|
);
|
|
}
|