refactor(database): reorganize into actions/components/schemas

This commit is contained in:
Théo LAGACHE
2026-06-23 16:06:14 +02:00
parent 41a3b29053
commit b1b2e33839
44 changed files with 822 additions and 791 deletions
@@ -6,8 +6,8 @@ import { eq, and, inArray } from "drizzle-orm";
import * as drizzleDb from "@/db";
import { getOrganizationProjectDatabases } from "@/db/services/project";
import { getActiveMember, getOrganization } from "@/lib/auth/auth";
import { BackupModalProvider } from "@/features/database/backup-modal-context";
import { DatabaseContent } from "@/features/database/database-content";
import { BackupModalProvider } from "@/features/database/components/backup-modal-context";
import { DatabaseContent } from "@/features/database/components/database-content";
import { getHealthLast12hLogs } from "@/db/services/healthcheck";
import { LogsModalProvider } from "@/features/logs/logs-modal-context";
@@ -17,7 +17,7 @@ import {Separator} from "@/components/ui/separator";
import {Badge} from "@/components/ui/badge";
import {CardsWithPagination} from "@/components/common/cards-with-pagination";
import {AgentDatabaseCard} from "@/features/agents/components/agent-database-card";
import {HealthCheckGraph} from "@/features/database/health-grid";
import {HealthCheckGraph} from "@/features/database/components/health-grid";
import {HealthcheckLog} from "@/db/schema/15_healthcheck-log";
type AgentContentPageProps = {
@@ -7,7 +7,7 @@ import * as drizzleDb from "@/db";
import {and, eq, inArray} from "drizzle-orm";
import {withUpdatedAt} from "@/db/utils";
import {AlertPolicy} from "@/db/schema/10_alert-policy";
import {PolicySchema} from "@/features/database/channels-policy.schema";
import {PolicySchema} from "@/features/database/schemas/channels-policy.schema";
import {StoragePolicy} from "@/db/schema/13_storage-policy";
@@ -3,7 +3,7 @@
import { z } from "zod";
import { db } from "@/db";
import { eq } from "drizzle-orm";
import { DatabaseSchema } from "@/features/database/database-form.schema";
import { DatabaseSchema } from "@/features/database/schemas/database-form.schema";
import * as drizzleDb from "@/db";
import {userAction} from "@/lib/safe-actions/actions";
import {Database} from "@/db/schema/07_database";
@@ -6,7 +6,7 @@ import {eq} from "drizzle-orm"
import * as drizzleDb from "@/db";
import {
RetentionSettingsSchema
} from "@/features/database/retention-policy.schema";
} from "@/features/database/schemas/retention-policy.schema";
import {userAction} from "@/lib/safe-actions/actions";
@@ -1,7 +1,7 @@
"use client";
import {BackupWith} from "@/db/schema/07_database";
import {useBackupModal} from "@/features/database/backup-modal-context";
import {useBackupModal} from "@/features/database/components/backup-modal-context";
import {Button} from "@/components/ui/button";
import {
DropdownMenu,
@@ -22,15 +22,15 @@ import {
deleteBackupAction,
deleteBackupStorageAction,
downloadBackupAction,
} from "@/features/database/backup-actions.action";
} from "@/features/database/actions/backup-actions.action";
import {
BackupActionsSchema,
BackupActionsType,
} from "@/features/database/backup-actions.schema";
} from "@/features/database/schemas/backup-actions.schema";
import {
DatabaseActionKind,
useBackupModal,
} from "@/features/database/backup-modal-context";
} from "@/features/database/components/backup-modal-context";
import { Backup, BackupWith, Restoration } from "@/db/schema/07_database";
import { BackupStorageWith } from "@/db/schema/14_storage-backup";
import { ServerActionResult } from "@/types/action-type";
@@ -7,11 +7,11 @@ import {
DialogTitle,
} from "@/components/ui/dialog";
import {Separator} from "@/components/ui/separator";
import {BackupActionsForm} from "@/features/database/backup-actions-form";
import {BackupActionsForm} from "@/features/database/components/backup-actions-form";
import {
getBackupActionTextBasedOnActionKind,
useBackupModal
} from "@/features/database/backup-modal-context";
} from "@/features/database/components/backup-modal-context";
type DatabaseActionsModalProps = {}
@@ -4,7 +4,7 @@ import { useMutation, useQueryClient } from "@tanstack/react-query";
import { useRouter } from "next/navigation";
import { toast } from "sonner";
import { backupButtonAction } from "@/features/database/backup-button.action";
import { backupButtonAction } from "@/features/database/actions/backup-button.action";
import { Check, DatabaseZap, X } from "lucide-react";
import { useIsMobile } from "@/hooks/use-mobile";
import { ButtonWithConfirm } from "@/components/common/button-with-confirm";
@@ -9,9 +9,9 @@ import {Tooltip, TooltipContent, TooltipProvider, TooltipTrigger} from "@/compon
import {MemberWithUser} from "@/db/schema/03_organization";
import {formatLocalizedDate} from "@/utils/date-formatting";
import {formatBytes, formatDuration} from "@/utils/text";
import {DatabaseActionsCell} from "@/features/database/backup-actions-cell";
import {DatabaseActionsCell} from "@/features/database/components/backup-actions-cell";
import { Badge as BadgeC } from "@/components/ui/badge";
import {backupOnly} from "@/features/database/database-tabs";
import {backupOnly} from "@/features/database/components/database-tabs";
import {LogsModalTrigger} from "@/features/logs/logs-modal-trigger";
export function backupColumns(
@@ -20,7 +20,7 @@ import {
PoliciesSchema,
PoliciesType,
PolicyType,
} from "@/features/database/channels-policy.schema";
} from "@/features/database/schemas/channels-policy.schema";
export type ChannelEntry = { id: string; name: string; provider: string };
@@ -20,8 +20,8 @@ import { DatabaseWith } from "@/db/schema/07_database";
import { NotificationChannel } from "@/db/schema/09_notification-channel";
import { StorageChannel } from "@/db/schema/12_storage-channel";
import { ChannelKind, getChannelTextBasedOnKind } from "@/features/channel/components/channels-helpers";
import { ChannelPoliciesForm } from "@/features/database/channels-policy-form";
import { PolicyType } from "@/features/database/channels-policy.schema";
import { ChannelPoliciesForm } from "@/features/database/components/channels-policy-form";
import { PolicyType } from "@/features/database/schemas/channels-policy.schema";
import {
createAlertPoliciesAction,
createStoragePoliciesAction,
@@ -29,8 +29,8 @@ import {
deleteStoragePoliciesAction,
updateAlertPoliciesAction,
updateStoragePoliciesAction,
} from "@/features/database/channels-policy.action";
import { backupOnly } from "@/features/database/database-tabs";
} from "@/features/database/actions/channels-policy.action";
import { backupOnly } from "@/features/database/components/database-tabs";
type ChannelPoliciesModalProps = {
database: DatabaseWith;
@@ -2,7 +2,7 @@
import { Clock9 } from "lucide-react";
import { Button } from "@/components/ui/button";
import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogTrigger } from "@/components/ui/dialog";
import { CronInput } from "@/features/database/cron-input";
import { CronInput } from "@/features/database/components/cron-input";
import { Switch } from "@/components/ui/switch";
import { Label } from "@/components/ui/label";
import { Separator } from "@/components/ui/separator";
@@ -10,7 +10,7 @@ import { useState } from "react";
import { useMutation, useQueryClient } from "@tanstack/react-query";
import { useRouter } from "next/navigation";
import { toast } from "sonner";
import { updateDatabaseBackupPolicyAction } from "@/features/database/cron.action";
import { updateDatabaseBackupPolicyAction } from "@/features/database/actions/cron.action";
import {Database} from "@/db/schema/07_database";
export type CronButtonProps = {
@@ -1,5 +1,5 @@
import {AdvancedCronSelect} from "@/features/database/cron-advanced-select";
import {updateDatabaseBackupPolicyAction} from "@/features/database/cron.action";
import {AdvancedCronSelect} from "@/features/database/components/cron-advanced-select";
import {updateDatabaseBackupPolicyAction} from "@/features/database/actions/cron.action";
import {useMutation, useQueryClient} from "@tanstack/react-query";
import {useRouter} from "next/navigation";
import {useState} from "react";
@@ -1,5 +1,5 @@
"use client"
import {backupColumns} from "@/features/database/backup-columns";
import {backupColumns} from "@/features/database/components/backup-columns";
import {DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger} from "@/components/ui/dropdown-menu";
import {ButtonWithLoading} from "@/components/common/button-with-loading";
import {MoreHorizontal, Trash2} from "lucide-react";
@@ -11,7 +11,7 @@ import {Setting} from "@/db/schema/01_setting";
import {useMutation, useQueryClient} from "@tanstack/react-query";
import {toast} from "sonner";
import {MemberWithUser} from "@/db/schema/03_organization";
import {deleteBackupAction} from "@/features/database/backup-actions.action";
import {deleteBackupAction} from "@/features/database/actions/backup-actions.action";
import {ButtonWithConfirm} from "@/components/common/button-with-confirm";
@@ -1,26 +1,26 @@
"use client";
import {DatabaseBackupActionsModal} from "@/features/database/backup-actions-modal";
import {DatabaseTabs} from "@/features/database/database-tabs";
import {DatabaseBackupActionsModal} from "@/features/database/components/backup-actions-modal";
import {DatabaseTabs} from "@/features/database/components/database-tabs";
import {Setting} from "@/db/schema/01_setting";
import {BackupWith, DatabaseWith, RestorationWith} from "@/db/schema/07_database";
import {MemberWithUser} from "@/db/schema/03_organization";
import {useBackupModal} from "@/features/database/backup-modal-context";
import {DatabaseKpi} from "@/features/database/database-kpi";
import {useBackupModal} from "@/features/database/components/backup-modal-context";
import {DatabaseKpi} from "@/features/database/components/database-kpi";
import {useQuery} from "@tanstack/react-query";
import {getDatabaseDataAction} from "@/features/database/backup-get-data.action";
import {getDatabaseDataAction} from "@/features/database/actions/backup-get-data.action";
import {
PageContent,
PageDescription,
PageTitle,
} from "@/features/layout/page";
import {capitalizeFirstLetter} from "@/utils/text";
import {RetentionPolicySheet} from "@/features/database/retention-policy-sheet";
import {CronButton} from "@/features/database/cron-button";
import {ChannelPoliciesModal} from "@/features/database/channels-policy-modal";
import {RetentionPolicySheet} from "@/features/database/components/retention-policy-sheet";
import {CronButton} from "@/features/database/components/cron-button";
import {ChannelPoliciesModal} from "@/features/database/components/channels-policy-modal";
import {HardDrive, Megaphone} from "lucide-react";
import {ImportModal} from "@/features/database/import-modal";
import {BackupButton} from "@/features/database/backup-button";
import {HealthModal} from "@/features/database/health-modal";
import {ImportModal} from "@/features/database/components/import-modal";
import {BackupButton} from "@/features/database/components/backup-button";
import {HealthModal} from "@/features/database/components/health-modal";
import {HealthcheckLog} from "@/db/schema/15_healthcheck-log";
import {Badge} from "@/components/ui/badge";
import {LogsModal} from "@/features/logs/logs-modal";
@@ -8,8 +8,8 @@ import { Button } from "@/components/ui/button";
import { useRouter } from "next/navigation";
import { useMutation } from "@tanstack/react-query";
import { TooltipProvider } from "@/components/ui/tooltip";
import { DatabaseSchema, DatabaseType } from "@/features/database/database-form.schema";
import { updateDatabaseAction } from "@/features/database/database-form.action";
import { DatabaseSchema, DatabaseType } from "@/features/database/schemas/database-form.schema";
import { updateDatabaseAction } from "@/features/database/actions/database-form.action";
import { toast } from "sonner";
export type DatabaseFormProps = {
@@ -1,12 +1,12 @@
"use client"
import {DataTable} from "@/components/common/data-table";
import {restoreColumns} from "@/features/database/restore-columns";
import {restoreColumns} from "@/features/database/components/restore-columns";
import {DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger} from "@/components/ui/dropdown-menu";
import {ButtonWithLoading} from "@/components/common/button-with-loading";
import {MoreHorizontal, Trash2} from "lucide-react";
import {Restoration} from "@/db/schema/07_database";
import {useMutation, useQueryClient} from "@tanstack/react-query";
import {deleteRestoreAction} from "@/features/database/restore.action";
import {deleteRestoreAction} from "@/features/database/actions/restore.action";
import {toast} from "sonner";
import {MemberWithUser} from "@/db/schema/03_organization";
import {useMemo, useState} from "react";
@@ -5,8 +5,8 @@ import {useEffect, useState} from "react";
import {useRouter, useSearchParams} from "next/navigation";
import {BackupWith, DatabaseWith, Restoration} from "@/db/schema/07_database";
import {Setting} from "@/db/schema/01_setting";
import {DatabaseBackupList} from "@/features/database/database-backup-list";
import {DatabaseRestoreList} from "@/features/database/database-restore-list";
import {DatabaseBackupList} from "@/features/database/components/database-backup-list";
import {DatabaseRestoreList} from "@/features/database/components/database-restore-list";
import {MemberWithUser} from "@/db/schema/03_organization";
export type DatabaseTabsProps = {
@@ -11,7 +11,7 @@ import {
SheetTrigger
} from "@/components/ui/sheet";
import {HealthcheckLog} from "@/db/schema/15_healthcheck-log";
import {HealthCheckGraph} from "@/features/database/health-grid";
import {HealthCheckGraph} from "@/features/database/components/health-grid";
type HealthModalProps = {
database: DatabaseWith,
@@ -13,7 +13,7 @@ import {Button} from "@/components/ui/button";
import {DatabaseWith} from "@/db/schema/07_database";
import {Separator} from "@/components/ui/separator";
import {Import} from "lucide-react";
import {UploadBackupZone} from "@/features/database/import-upload-zone";
import {UploadBackupZone} from "@/features/database/components/import-upload-zone";
type ImportModalProps = {
database: DatabaseWith;
@@ -7,7 +7,7 @@ import {useState} from "react";
import {Loader2} from "lucide-react";
import {ButtonWithLoading} from "@/components/common/button-with-loading";
import {toast} from "sonner";
import {uploadBackupAction} from "@/features/database/import.action";
import {uploadBackupAction} from "@/features/database/actions/import.action";
import {Card, CardContent} from "@/components/ui/card";
import {DatabaseWith} from "@/db/schema/07_database";
import {getFileHeadersBasedOnDbms} from "@/utils/common";
@@ -19,7 +19,7 @@ import { useMutation, useQueryClient } from "@tanstack/react-query";
import {
deleteRestoreAction,
rerunRestorationAction,
} from "@/features/database/restore.action";
} from "@/features/database/actions/restore.action";
import { toast } from "sonner";
import { TooltipCustom } from "@/components/common/tooltip-custom";
import { MemberWithUser } from "@/db/schema/03_organization";
@@ -13,7 +13,7 @@ import {
import {
RetentionSettings,
RetentionSettingsSchema,
} from "@/features/database/retention-policy.schema";
} from "@/features/database/schemas/retention-policy.schema";
import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group";
import { Badge } from "@/components/ui/badge";
import { Separator } from "@/components/ui/separator";
@@ -7,9 +7,9 @@ import { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle, SheetTr
import { Button } from "@/components/ui/button";
import { Database, Ruler } from "lucide-react";
import { DatabaseWith, RetentionPolicy } from "@/db/schema/07_database";
import { BackupRetentionSettingsForm } from "@/features/database/retention-policy-form";
import { RetentionSettings } from "@/features/database/retention-policy.schema";
import { updateOrCreateBackupRetentionPolicyAction } from "@/features/database/retention-policy.action";
import { BackupRetentionSettingsForm } from "@/features/database/components/retention-policy-form";
import { RetentionSettings } from "@/features/database/schemas/retention-policy.schema";
import { updateOrCreateBackupRetentionPolicyAction } from "@/features/database/actions/retention-policy.action";
type RetentionPolicySheetProps = {
database: DatabaseWith;
@@ -13,7 +13,7 @@ import {useMutation, useQueryClient} from "@tanstack/react-query";
import {useRouter} from "next/navigation";
import {
updateOrCreateBackupRetentionPolicyAction
} from "@/features/database/retention-policy.action";
} from "@/features/database/actions/retention-policy.action";
import {Database as DbSchema} from "@/db/schema/07_database";
type RetentionPolicyType = "count" | "days" | "gfs"
@@ -1,8 +1,8 @@
"use client";
import { ChannelPoliciesForm } from "@/features/database/channels-policy-form";
import { ChannelPoliciesForm } from "@/features/database/components/channels-policy-form";
import type { EventKind, OnboardingChannel, OnboardingNotificationPolicy } from "@/features/onboarding/types";
import type { PolicyType } from "@/features/database/channels-policy.schema";
import type { PolicyType } from "@/features/database/schemas/channels-policy.schema";
type NotificationsSectionProps = {
initial: OnboardingNotificationPolicy[];
@@ -1,6 +1,6 @@
"use client";
import { BackupRetentionSettingsForm } from "@/features/database/retention-policy-form";
import { BackupRetentionSettingsForm } from "@/features/database/components/retention-policy-form";
import { DEFAULT_RETENTION } from "@/features/onboarding/constants/db-settings";
import type { OnboardingDbSettings } from "@/features/onboarding/types";
@@ -1,8 +1,8 @@
"use client";
import { ChannelPoliciesForm } from "@/features/database/channels-policy-form";
import { ChannelPoliciesForm } from "@/features/database/components/channels-policy-form";
import type { OnboardingChannel, OnboardingStoragePolicy } from "@/features/onboarding/types";
import type { PolicyType } from "@/features/database/channels-policy.schema";
import type { PolicyType } from "@/features/database/schemas/channels-policy.schema";
type StorageSectionProps = {
initial: OnboardingStoragePolicy[];
+765 -734
View File
File diff suppressed because it is too large Load Diff