Move all type data to datatypes.js

This commit is contained in:
1ilit
2024-06-10 02:17:43 +03:00
parent 0908d040e0
commit 9c31e2be52
8 changed files with 514 additions and 426 deletions

View File

@@ -9,7 +9,7 @@ export default function Issues() {
const { types } = useTypes();
const { t } = useTranslation();
const { settings } = useSettings();
const { tables, relationships } = useTables();
const { tables, relationships, database } = useTables();
const [issues, setIssues] = useState([]);
useEffect(() => {
@@ -18,6 +18,7 @@ export default function Issues() {
tables: tables,
relationships: relationships,
types: types,
database: database,
});
if (!arrayIsEqual(newIssues, issues)) {
@@ -26,7 +27,7 @@ export default function Issues() {
};
findIssues();
}, [tables, relationships, issues, types]);
}, [tables, relationships, issues, types, database]);
return (
<Collapse keepDOM lazyRender style={{ width: "100%" }}>

View File

@@ -9,13 +9,13 @@ import {
} from "@douyinfe/semi-ui";
import { Action, ObjectType } from "../../../data/constants";
import { IconDeleteStroked } from "@douyinfe/semi-icons";
import { hasCheck, hasPrecision, isSized } from "../../../utils/toSQL";
import { useTables, useUndoRedo } from "../../../hooks";
import { useTranslation } from "react-i18next";
import { dbToTypes } from "../../../data/datatypes";
export default function FieldDetails({ data, tid, index }) {
const { t } = useTranslation();
const { tables } = useTables();
const { tables, database } = useTables();
const { setUndoStack, setRedoStack } = useUndoRedo();
const { updateField, deleteField } = useTables();
const [editField, setEditField] = useState({});
@@ -99,7 +99,7 @@ export default function FieldDetails({ data, tid, index }) {
/>
</>
)}
{isSized(data.type) && (
{dbToTypes[database][data.type].isSized && (
<>
<div className="font-semibold">{t("size")}</div>
<InputNumber
@@ -131,7 +131,7 @@ export default function FieldDetails({ data, tid, index }) {
/>
</>
)}
{hasPrecision(data.type) && (
{dbToTypes[database][data.type].hasPrecision && (
<>
<div className="font-semibold">{t("precision")}</div>
<Input
@@ -168,7 +168,7 @@ export default function FieldDetails({ data, tid, index }) {
/>
</>
)}
{hasCheck(data.type) && (
{dbToTypes[database][data.type].hasCheck && (
<>
<div className="font-semibold">{t("check")}</div>
<Input

View File

@@ -1,7 +1,6 @@
import { Action, ObjectType } from "../../../data/constants";
import { Row, Col, Input, Button, Popover, Select } from "@douyinfe/semi-ui";
import { IconMore, IconKeyStroked } from "@douyinfe/semi-icons";
import { getSize, hasCheck, hasPrecision, isSized } from "../../../utils/toSQL";
import { useTables, useTypes, useUndoRedo } from "../../../hooks";
import { useState } from "react";
import FieldDetails from "./FieldDetails";
@@ -51,7 +50,7 @@ export default function TableField({ data, tid, index }) {
<Select
className="w-full"
optionList={[
...dbToTypes[database].map((value) => ({
...Object.keys(dbToTypes[database]).map((value) => ({
label: value,
value: value,
})),
@@ -93,10 +92,13 @@ export default function TableField({ data, tid, index }) {
values: data.values ? [...data.values] : [],
increment: incr,
});
} else if (isSized(value) || hasPrecision(value)) {
} else if (
dbToTypes[database][value].isSized ||
dbToTypes[database][value].hasPrecision
) {
updateField(tid, index, {
type: value,
size: getSize(value),
size: dbToTypes[database][value].defaultSize,
increment: incr,
});
} else if (
@@ -113,7 +115,7 @@ export default function TableField({ data, tid, index }) {
size: "",
values: [],
});
} else if (hasCheck(value)) {
} else if (dbToTypes[database][value].hasCheck) {
updateField(tid, index, {
type: value,
check: "",

View File

@@ -11,7 +11,6 @@ import {
Popover,
} from "@douyinfe/semi-ui";
import { IconDeleteStroked, IconMore } from "@douyinfe/semi-icons";
import { isSized, hasPrecision, getSize } from "../../../utils/toSQL";
import { useUndoRedo, useTypes, useTables } from "../../../hooks";
import { useTranslation } from "react-i18next";
import { dbToTypes } from "../../../data/datatypes";
@@ -64,7 +63,7 @@ export default function TypeField({ data, tid, fid }) {
<Select
className="w-full"
optionList={[
...dbToTypes[database].map((value) => ({
...Object.keys(dbToTypes[database]).map((value) => ({
label: value,
value: value,
})),
@@ -112,11 +111,14 @@ export default function TypeField({ data, tid, fid }) {
: e,
),
});
} else if (isSized(value) || hasPrecision(value)) {
} else if (
dbToTypes[database][value].isSized ||
dbToTypes[database][value].hasPrecision
) {
updateType(tid, {
fields: types[tid].fields.map((e, id) =>
id === fid
? { ...data, type: value, size: getSize(value) }
? { ...data, type: value, size: dbToTypes[database][value].defaultSize }
: e,
),
});
@@ -184,7 +186,7 @@ export default function TypeField({ data, tid, fid }) {
/>
</>
)}
{isSized(data.type) && (
{dbToTypes[database][data.type].isSized && (
<>
<div className="font-semibold">{t("size")}</div>
<InputNumber
@@ -222,7 +224,7 @@ export default function TypeField({ data, tid, fid }) {
/>
</>
)}
{hasPrecision(data.type) && (
{dbToTypes[database][data.type].hasPrecision && (
<>
<div className="font-semibold">{t("precision")}</div>
<Input