mirror of
https://github.com/nicotsx/ironmount.git
synced 2025-12-10 12:10:51 +01:00
feat: partial success warning status (#74)
* feat: report partial backups with warnings * chore: rebase * chore: remove un-used size prop
This commit is contained in:
@@ -1181,7 +1181,7 @@ export type ListBackupSchedulesResponses = {
|
||||
includePatterns: Array<string> | null;
|
||||
lastBackupAt: number | null;
|
||||
lastBackupError: string | null;
|
||||
lastBackupStatus: 'error' | 'in_progress' | 'success' | null;
|
||||
lastBackupStatus: 'error' | 'in_progress' | 'success' | 'warning' | null;
|
||||
nextBackupAt: number | null;
|
||||
repository: {
|
||||
compressionMode: 'auto' | 'better' | 'fastest' | 'max' | 'off' | null;
|
||||
@@ -1351,7 +1351,7 @@ export type CreateBackupScheduleResponses = {
|
||||
includePatterns: Array<string> | null;
|
||||
lastBackupAt: number | null;
|
||||
lastBackupError: string | null;
|
||||
lastBackupStatus: 'error' | 'in_progress' | 'success' | null;
|
||||
lastBackupStatus: 'error' | 'in_progress' | 'success' | 'warning' | null;
|
||||
nextBackupAt: number | null;
|
||||
repositoryId: string;
|
||||
retentionPolicy: {
|
||||
@@ -1412,7 +1412,7 @@ export type GetBackupScheduleResponses = {
|
||||
includePatterns: Array<string> | null;
|
||||
lastBackupAt: number | null;
|
||||
lastBackupError: string | null;
|
||||
lastBackupStatus: 'error' | 'in_progress' | 'success' | null;
|
||||
lastBackupStatus: 'error' | 'in_progress' | 'success' | 'warning' | null;
|
||||
nextBackupAt: number | null;
|
||||
repository: {
|
||||
compressionMode: 'auto' | 'better' | 'fastest' | 'max' | 'off' | null;
|
||||
@@ -1583,7 +1583,7 @@ export type UpdateBackupScheduleResponses = {
|
||||
includePatterns: Array<string> | null;
|
||||
lastBackupAt: number | null;
|
||||
lastBackupError: string | null;
|
||||
lastBackupStatus: 'error' | 'in_progress' | 'success' | null;
|
||||
lastBackupStatus: 'error' | 'in_progress' | 'success' | 'warning' | null;
|
||||
nextBackupAt: number | null;
|
||||
repositoryId: string;
|
||||
retentionPolicy: {
|
||||
@@ -1624,7 +1624,7 @@ export type GetBackupScheduleForVolumeResponses = {
|
||||
includePatterns: Array<string> | null;
|
||||
lastBackupAt: number | null;
|
||||
lastBackupError: string | null;
|
||||
lastBackupStatus: 'error' | 'in_progress' | 'success' | null;
|
||||
lastBackupStatus: 'error' | 'in_progress' | 'success' | 'warning' | null;
|
||||
nextBackupAt: number | null;
|
||||
repository: {
|
||||
compressionMode: 'auto' | 'better' | 'fastest' | 'max' | 'off' | null;
|
||||
|
||||
@@ -3,7 +3,6 @@ import type { BackendType } from "~/schemas/volumes";
|
||||
|
||||
type VolumeIconProps = {
|
||||
backend: BackendType;
|
||||
size?: number;
|
||||
};
|
||||
|
||||
const getIconAndColor = (backend: BackendType) => {
|
||||
@@ -41,12 +40,12 @@ const getIconAndColor = (backend: BackendType) => {
|
||||
}
|
||||
};
|
||||
|
||||
export const VolumeIcon = ({ backend, size = 10 }: VolumeIconProps) => {
|
||||
export const VolumeIcon = ({ backend }: VolumeIconProps) => {
|
||||
const { icon: Icon, label } = getIconAndColor(backend);
|
||||
|
||||
return (
|
||||
<span className={`flex items-center gap-2 rounded-md px-2 py-1`}>
|
||||
<Icon size={size} />
|
||||
<Icon className="h-4 w-4" />
|
||||
{label}
|
||||
</span>
|
||||
);
|
||||
|
||||
@@ -164,10 +164,20 @@ export const ScheduleSummary = (props: Props) => {
|
||||
{schedule.lastBackupStatus === "success" && "✓ Success"}
|
||||
{schedule.lastBackupStatus === "error" && "✗ Error"}
|
||||
{schedule.lastBackupStatus === "in_progress" && "⟳ in progress..."}
|
||||
{schedule.lastBackupStatus === "warning" && "! Warning"}
|
||||
{!schedule.lastBackupStatus && "—"}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
{schedule.lastBackupStatus === "warning" && (
|
||||
<div className="md:col-span-2 lg:col-span-4">
|
||||
<p className="text-xs uppercase text-muted-foreground">Warning Details</p>
|
||||
<p className="font-mono text-sm text-yellow-600 whitespace-pre-wrap break-all">
|
||||
Last backup completed with warnings. Check your container logs for more details.
|
||||
</p>
|
||||
</div>
|
||||
)}
|
||||
|
||||
{schedule.lastBackupError && (
|
||||
<div className="md:col-span-2 lg:col-span-4">
|
||||
<p className="text-xs uppercase text-muted-foreground">Error Details</p>
|
||||
|
||||
@@ -142,7 +142,7 @@ export default function VolumeDetails({ loaderData }: Route.ComponentProps) {
|
||||
|
||||
{volume.status[0].toUpperCase() + volume.status.slice(1)}
|
||||
</span>
|
||||
<VolumeIcon size={14} backend={volume?.config.backend} />
|
||||
<VolumeIcon backend={volume?.config.backend} />
|
||||
</div>
|
||||
<div className="flex gap-4">
|
||||
<Button
|
||||
|
||||
Reference in New Issue
Block a user