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" && (