diff --git a/src/features/database/components/db-controller/tables-controller/table-accordion-item/field/field-default-value.tsx b/src/features/database/components/db-controller/tables-controller/table-accordion-item/field/field-default-value.tsx index 07c51e5..20125e3 100644 --- a/src/features/database/components/db-controller/tables-controller/table-accordion-item/field/field-default-value.tsx +++ b/src/features/database/components/db-controller/tables-controller/table-accordion-item/field/field-default-value.tsx @@ -7,7 +7,7 @@ import { DataTypes, TimeDefaultValues } from "@/lib/field"; import { useDatabaseOperations } from "@/providers/database-provider/database-provider"; import dayjs from 'dayjs'; -import { now } from "@internationalized/date"; +import { now } from "@internationalized/date"; import { Label } from "@/components/ui/label"; import { Input } from "@/components/ui/input"; @@ -16,6 +16,7 @@ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@ import { MultiSelect } from "@/components/multi-select"; import { DatePicker } from "@/components/date-picker"; +import { DatabaseDialect } from "@/lib/database"; interface DefaultValueType { number?: boolean; @@ -23,7 +24,8 @@ interface DefaultValueType { boolean?: boolean; time?: boolean; select?: boolean; - multiSelect?: boolean + multiSelect?: boolean; + uuid?: boolean } interface FieldDefaultValueProps { @@ -64,8 +66,8 @@ const fieldDefautlValue: React.FC = ({ field }) => { const [defaultDateTime, setDefaultDateTime] = useState(() => { try { - if (field.type.name == "time" ) { - return field.defaultValue ; + if (field.type.name == "time") { + return field.defaultValue; } if (field.defaultValue) { @@ -78,7 +80,7 @@ const fieldDefautlValue: React.FC = ({ field }) => { return undefined; } }); - + const defaultValueType: DefaultValueType = useMemo(() => { return { number: field.type?.type == DataTypes.INTEGER || field.type?.type == DataTypes.NUMERIC, @@ -86,7 +88,8 @@ const fieldDefautlValue: React.FC = ({ field }) => { boolean: field.type?.type == DataTypes.BOOLEAN, time: field.type?.type == DataTypes.TIME && field.type?.name != "year", select: field.type?.type == DataTypes.ENUM && field.type?.name != "set", - multiSelect: field.type?.type == DataTypes.ENUM && field.type?.name == "set" + multiSelect: field.type?.type == DataTypes.ENUM && field.type?.name == "set", + uuid: field.type.name == "uuid" || field.type.name == "uniqueidentifier" } }, [field]); @@ -94,7 +97,7 @@ const fieldDefautlValue: React.FC = ({ field }) => { const [selectedValues, setSelectedValues] = useState(() => { - if (defaultValueType.select) { + if (defaultValueType.select || defaultValueType.uuid) { if (!field.defaultValue) return "none"; else @@ -204,7 +207,7 @@ const fieldDefautlValue: React.FC = ({ field }) => { let value: string | undefined; - + if (field.type.name != "time" && date) { setDefaultDateTime(date); @@ -214,8 +217,8 @@ const fieldDefautlValue: React.FC = ({ field }) => { else if (field.type.name == "datetime" || field.type.name == "timestamp" || field.type.name == "timestamptz") value = dayjs(date).format("YYYY-MM-DD HH:mm:ss") } - else if ( field.type.name == "time") { - value = defaultDateTime ; + else if (field.type.name == "time") { + value = defaultDateTime; } @@ -227,7 +230,7 @@ const fieldDefautlValue: React.FC = ({ field }) => { const enumValueChange = useCallback((selection: any) => { - if (defaultValueType.select) { + if (defaultValueType.select || defaultValueType.uuid) { setSelectedValues(selection); editField({ id: field.id, @@ -256,11 +259,11 @@ const fieldDefautlValue: React.FC = ({ field }) => { + return ( <> { !defaultValueType.boolean && - @@ -317,7 +320,7 @@ const fieldDefautlValue: React.FC = ({ field }) => { - No Default value + {t("db_controller.field_settings.no_default")} { @@ -333,6 +336,34 @@ const fieldDefautlValue: React.FC = ({ field }) => { } + + { + + (defaultValueType.uuid) && + + + } { (defaultValueType.multiSelect) && = ({ field }) => { {t("db_controller.field_settings.time_default_value.custom")} { - (field.type.name == "datetime" || field.type.name?.includes("timestamp")) ? + (field.type.name?.includes("datetime") || field.type.name?.includes("timestamp") || ((field.type.dialect == DatabaseDialect.ORACLE || field.type.dialect == DatabaseDialect.MSSQL) && field.type.name == "date")) ? {t("db_controller.field_settings.time_default_value.now")} : null } @@ -389,12 +420,11 @@ const fieldDefautlValue: React.FC = ({ field }) => { setDefaultDateTime( event.target.value)} + onChange={(event) => setDefaultDateTime(event.target.value)} onBlur={saveDefaultDateTime as any} className="bg-background appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none" - /> } @@ -411,3 +441,5 @@ export default React.memo(fieldDefautlValue); + + diff --git a/src/i18/languages/ar.ts b/src/i18/languages/ar.ts index b8750a7..5da08f9 100644 --- a/src/i18/languages/ar.ts +++ b/src/i18/languages/ar.ts @@ -95,6 +95,8 @@ export const ar = { type_enter: "اكتب واضغط Enter", precision_def: "إجمالي الأرقام المسموحة (قبل + بعد الفاصلة).", scale_def: "عدد الأرقام بعد الفاصلة.", + no_default: "لا توجد قيمة افتراضية", +random_uuid: "معرّف UUID عشوائي", time_default_value: { no_value: "لا توجد قيمة", custom: "وقت مخصص", diff --git a/src/i18/languages/de.ts b/src/i18/languages/de.ts index ed2211a..e7c74bb 100644 --- a/src/i18/languages/de.ts +++ b/src/i18/languages/de.ts @@ -95,6 +95,8 @@ export const de = { type_enter: "Tippen und Enter drücken", precision_def: "Zulässige Gesamtanzahl an Ziffern (vor + nach dem Dezimalpunkt).", scale_def: "Ziffern nach dem Dezimalpunkt.", + no_default: "Kein Standardwert", +random_uuid: "Zufällige UUID", time_default_value: { no_value: "Kein Wert", custom: "Benutzerdefinierte Zeit", diff --git a/src/i18/languages/en.ts b/src/i18/languages/en.ts index 03ed2b8..f6c84cc 100644 --- a/src/i18/languages/en.ts +++ b/src/i18/languages/en.ts @@ -7,8 +7,8 @@ export const en = { sidebar: { tables: "Tables", relationships: "Relationships", - database: "Database", - documentation : "Docs" + database: "Database", + documentation: "Docs" }, color_picker: { @@ -104,6 +104,8 @@ export const en = { type_enter: "Type and press enter", precision_def: "Total digits allowed (before + after the decimal).", scale_def: "Digits allowed after the decimal.", + no_default: "No Default value", + random_uuid: "Random UUID", time_default_value: { no_value: "No value", custom: "Custom time", @@ -209,7 +211,7 @@ export const en = { import_database: { title: "Import your Database", import: "Import", - view_docs : "View Docs" , + view_docs: "View Docs", import_options: "Would you like to import using :", import_error: "SQL Parsing Error", import_error_description: "We couldn't import your SQL because it contains invalid syntax.", @@ -277,7 +279,7 @@ export const en = { step5: "Finally, copy the contents of the .sql file into the code editor below." }, - + ssms: { "step1": "Open SQL Server Management Studio (SSMS).", "step2": "Right-click your database, then select Tasks → Generate Scripts from the context menu.", diff --git a/src/i18/languages/es.ts b/src/i18/languages/es.ts index fd99382..f617bd6 100644 --- a/src/i18/languages/es.ts +++ b/src/i18/languages/es.ts @@ -99,6 +99,8 @@ export const es = { type_enter: "Escribe y presiona enter", precision_def: "Total de dígitos permitidos (antes + después del decimal).", scale_def: "Dígitos permitidos después del decimal.", + no_default: "Sin valor predeterminado", +random_uuid: "UUID aleatorio", time_default_value: { no_value: "Sin valor", custom: "Hora personalizada", diff --git a/src/i18/languages/fr.ts b/src/i18/languages/fr.ts index eef45f0..7f1a5fc 100644 --- a/src/i18/languages/fr.ts +++ b/src/i18/languages/fr.ts @@ -7,7 +7,7 @@ export const fr = { tables: "Tables", relationships: "Relations", database: "Base de données", - documentation : "Docs" + documentation: "Docs" }, color_picker: { @@ -33,7 +33,7 @@ export const fr = { note: "Note", name: "Nom", type: "Type", - required: "Obligatoire", + required: "Obligatoire", nullable: "Nullable", select_fields: "Sélectionner les champs", @@ -97,6 +97,8 @@ export const fr = { type_enter: "Tapez et appuyez sur Entrée", precision_def: "Nombre total de chiffres autorisés (avant + après la virgule).", scale_def: "Nombre de chiffres autorisés après la virgule.", + no_default: "Aucune valeur par défaut", + random_uuid: "UUID aléatoire", time_default_value: { no_value: "Aucune valeur", custom: "Heure personnalisée", @@ -173,7 +175,7 @@ export const fr = { theme: "Thème", light: "Clair", dark: "Sombre", - system: "Système", + system: "Système", help: "Aide", show_docs: "Afficher la documentation", @@ -199,7 +201,7 @@ export const fr = { import_database: { title: "Importer votre base de données", import: "Importer", - view_docs : "Voir la documentation" , + view_docs: "Voir la documentation", import_options: "Souhaitez-vous importer en utilisant :", import_error: "Erreur d’analyse SQL", import_error_description: "Nous n'avons pas pu importer votre SQL car il contient une syntaxe invalide.", @@ -263,7 +265,7 @@ export const fr = { step4: "Dans la fenêtre, sélectionnez Exporter uniquement le schéma et cliquez sur Enregistrer.", step5: "Enfin, copiez le contenu du fichier .sql dans l’éditeur de code ci-dessous." }, - ssms: { + ssms: { "step1": "Ouvrez SQL Server Management Studio (SSMS).", "step2": "Faites un clic droit sur votre base de données, puis sélectionnez Tâches → Générer des scripts dans le menu contextuel.", "step3": "Dans l’étape Choisir les objets, sélectionnez Choisir des objets spécifiques de la base de données, puis cochez toutes les tables.", diff --git a/src/i18/languages/hi.ts b/src/i18/languages/hi.ts index 4d33136..ec39831 100644 --- a/src/i18/languages/hi.ts +++ b/src/i18/languages/hi.ts @@ -100,6 +100,8 @@ export const hi = { type_enter: "टाइप करें और एंटर दबाएं", precision_def: "कुल अनुमत अंक (दशमलव से पहले और बाद)।", scale_def: "दशमलव के बाद अनुमत अंक।", + no_default: "कोई डिफ़ॉल्ट मान नहीं", +random_uuid: "रैंडम UUID", time_default_value: { no_value: "कोई मान नहीं", custom: "कस्टम समय", diff --git a/src/i18/languages/pt.ts b/src/i18/languages/pt.ts index e63cbba..f3ca8e4 100644 --- a/src/i18/languages/pt.ts +++ b/src/i18/languages/pt.ts @@ -101,6 +101,8 @@ export const pt = { type_enter: "Digite e pressione enter", precision_def: "Dígitos totais permitidos (antes + depois do decimal).", scale_def: "Dígitos permitidos após o decimal.", + no_default: "Sem valor padrão", +random_uuid: "UUID aleatório", time_default_value: { no_value: "Sem valor", custom: "Hora personalizada", diff --git a/src/i18/languages/ru.ts b/src/i18/languages/ru.ts index 698eb77..7933c85 100644 --- a/src/i18/languages/ru.ts +++ b/src/i18/languages/ru.ts @@ -93,6 +93,8 @@ export const ru = { type_enter: "Введите и нажмите Enter", precision_def: "Общее количество допустимых цифр (до и после запятой).", scale_def: "Допустимое количество цифр после запятой.", + no_default: "Нет значения по умолчанию", +random_uuid: "Случайный UUID", time_default_value: { no_value: "Нет значения", custom: "Произвольное время", diff --git a/src/i18/languages/zh.ts b/src/i18/languages/zh.ts index 77437f4..010512b 100644 --- a/src/i18/languages/zh.ts +++ b/src/i18/languages/zh.ts @@ -101,6 +101,8 @@ export const zh = { type_enter: "输入并按回车", precision_def: "允许的总位数(小数点前+后)。", scale_def: "小数点后的位数。", + no_default: "无默认值", +random_uuid: "随机 UUID", time_default_value: { no_value: "无值", custom: "自定义时间",