diff --git a/apps/client/app/api-client/types.gen.ts b/apps/client/app/api-client/types.gen.ts index b1c526d..7648bed 100644 --- a/apps/client/app/api-client/types.gen.ts +++ b/apps/client/app/api-client/types.gen.ts @@ -738,6 +738,19 @@ export type ListRepositoriesResponses = { endpoint: string; secretAccessKey: string; } + | { + accountKey: string; + accountName: string; + backend: "azure"; + container: string; + endpointSuffix?: string; + } + | { + backend: "gcs"; + bucket: string; + credentialsJson: string; + projectId: string; + } | { backend: "local"; name: string; @@ -748,7 +761,7 @@ export type ListRepositoriesResponses = { lastError: string | null; name: string; status: "error" | "healthy" | "unknown" | null; - type: "local" | "s3"; + type: "azure" | "gcs" | "local" | "s3"; updatedAt: number; }>; }; @@ -765,6 +778,19 @@ export type CreateRepositoryData = { endpoint: string; secretAccessKey: string; } + | { + accountKey: string; + accountName: string; + backend: "azure"; + container: string; + endpointSuffix?: string; + } + | { + backend: "gcs"; + bucket: string; + credentialsJson: string; + projectId: string; + } | { backend: "local"; name: string; @@ -835,6 +861,19 @@ export type GetRepositoryResponses = { endpoint: string; secretAccessKey: string; } + | { + accountKey: string; + accountName: string; + backend: "azure"; + container: string; + endpointSuffix?: string; + } + | { + backend: "gcs"; + bucket: string; + credentialsJson: string; + projectId: string; + } | { backend: "local"; name: string; @@ -845,7 +884,7 @@ export type GetRepositoryResponses = { lastError: string | null; name: string; status: "error" | "healthy" | "unknown" | null; - type: "local" | "s3"; + type: "azure" | "gcs" | "local" | "s3"; updatedAt: number; }; }; @@ -1030,6 +1069,19 @@ export type ListBackupSchedulesResponses = { endpoint: string; secretAccessKey: string; } + | { + accountKey: string; + accountName: string; + backend: "azure"; + container: string; + endpointSuffix?: string; + } + | { + backend: "gcs"; + bucket: string; + credentialsJson: string; + projectId: string; + } | { backend: "local"; name: string; @@ -1040,7 +1092,7 @@ export type ListBackupSchedulesResponses = { lastError: string | null; name: string; status: "error" | "healthy" | "unknown" | null; - type: "local" | "s3"; + type: "azure" | "gcs" | "local" | "s3"; updatedAt: number; }; repositoryId: string; @@ -1216,6 +1268,19 @@ export type GetBackupScheduleResponses = { endpoint: string; secretAccessKey: string; } + | { + accountKey: string; + accountName: string; + backend: "azure"; + container: string; + endpointSuffix?: string; + } + | { + backend: "gcs"; + bucket: string; + credentialsJson: string; + projectId: string; + } | { backend: "local"; name: string; @@ -1226,7 +1291,7 @@ export type GetBackupScheduleResponses = { lastError: string | null; name: string; status: "error" | "healthy" | "unknown" | null; - type: "local" | "s3"; + type: "azure" | "gcs" | "local" | "s3"; updatedAt: number; }; repositoryId: string; @@ -1383,6 +1448,19 @@ export type GetBackupScheduleForVolumeResponses = { endpoint: string; secretAccessKey: string; } + | { + accountKey: string; + accountName: string; + backend: "azure"; + container: string; + endpointSuffix?: string; + } + | { + backend: "gcs"; + bucket: string; + credentialsJson: string; + projectId: string; + } | { backend: "local"; name: string; @@ -1393,7 +1471,7 @@ export type GetBackupScheduleForVolumeResponses = { lastError: string | null; name: string; status: "error" | "healthy" | "unknown" | null; - type: "local" | "s3"; + type: "azure" | "gcs" | "local" | "s3"; updatedAt: number; }; repositoryId: string; diff --git a/apps/client/app/components/create-repository-form.tsx b/apps/client/app/components/create-repository-form.tsx index 03891b1..977903c 100644 --- a/apps/client/app/components/create-repository-form.tsx +++ b/apps/client/app/components/create-repository-form.tsx @@ -31,6 +31,7 @@ const defaultValuesForType = { local: { backend: "local" as const, compressionMode: "auto" as const }, s3: { backend: "s3" as const, compressionMode: "auto" as const }, gcs: { backend: "gcs" as const, compressionMode: "auto" as const }, + azure: { backend: "azure" as const, compressionMode: "auto" as const }, }; export const CreateRepositoryForm = ({ @@ -102,6 +103,7 @@ export const CreateRepositoryForm = ({ Local S3 Google Cloud Storage + Azure Blob Storage Choose the storage backend for this repository. @@ -244,6 +246,67 @@ export const CreateRepositoryForm = ({ )} + {watchedBackend === "azure" && ( + <> + ( + + Container + + + + Azure Blob Storage container name for storing backups. + + + )} + /> + ( + + Account Name + + + + Azure Storage account name. + + + )} + /> + ( + + Account Key + + + + Azure Storage account key for authentication. + + + )} + /> + ( + + Endpoint Suffix (Optional) + + + + Custom Azure endpoint suffix (defaults to core.windows.net). + + + )} + /> + + )} + {mode === "update" && (