Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 9 additions & 5 deletions src/components/EditorSidePanel/TablesTab/TableField.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import { useState } from "react";
import FieldDetails from "./FieldDetails";
import { useTranslation } from "react-i18next";
import { dbToTypes } from "../../../data/datatypes";
import { getUserDefaultPrecisionScale, getUserDefaultSize } from "../../../utils/typeDefaults";
import { Toast } from "@douyinfe/semi-ui";
import { createNewField } from "./createNewField";

Expand Down Expand Up @@ -170,13 +171,16 @@ export default function TableField({ data, tid, index }) {
values: data.values ? [...data.values] : [],
increment: incr,
});
} else if (
dbToTypes[database][value].isSized ||
dbToTypes[database][value].hasPrecision
) {
} else if (dbToTypes[database][value].isSized) {
updateField(tid, index, {
type: value,
size: dbToTypes[database][value].defaultSize,
size: getUserDefaultSize(value, settings, database, dbToTypes),
increment: incr,
});
} else if (dbToTypes[database][value].hasPrecision) {
updateField(tid, index, {
type: value,
size: getUserDefaultPrecisionScale(value, settings, database),
increment: incr,
});
} else if (!dbToTypes[database][value].hasDefault || incr) {
Expand Down
31 changes: 3 additions & 28 deletions src/components/EditorSidePanel/TablesTab/createNewField.jsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { Action, ObjectType } from "../../../data/constants";
import { getUserDefaultPrecisionScale, getUserDefaultSize } from "../../../utils/typeDefaults";

export function createNewField({
data,
Expand All @@ -22,32 +23,6 @@ export function createNewField({
});

const incr = data.increment && !!dbToTypes[database][settings.defaultFieldType].canIncrement;
// Function to get the default size configured by the user
const getUserDefaultSize = (typeName) => {
const dbSettings = settings?.defaultTypeSizes?.[database] || {};
const userSize = dbSettings[typeName];
if (typeof userSize === 'number') {
return userSize;
}
return dbToTypes[database][typeName]?.defaultSize || '';
};
// Function to get the combined size for types with precision and scale
const getUserDefaultPrecisionScale = (typeName) => {
const dbSettings = settings?.defaultTypeSizes?.[database] || {};
const userSettings = dbSettings[typeName];
if (typeof userSettings === 'object') {
const precision = userSettings?.precision || 10;
const scale = userSettings?.scale;
// If it has a defined scale, combine as "precision,scale"
if (scale !== undefined && scale !== null) {
return `${precision},${scale}`;
}
// If it only has precision, return just the precision
return precision.toString();
}
// Default value for types with precision
return "10";
};

// Base field data
const newFieldData = {
Expand Down Expand Up @@ -76,12 +51,12 @@ export function createNewField({
} else if (dbToTypes[database][settings.defaultFieldType].hasPrecision) {
fieldUpdates = {
...fieldUpdates,
size: getUserDefaultPrecisionScale(settings.defaultFieldType),
size: getUserDefaultPrecisionScale(settings.defaultFieldType, settings, database),
};
} else if (dbToTypes[database][settings.defaultFieldType].isSized) {
fieldUpdates = {
...fieldUpdates,
size: getUserDefaultSize(settings.defaultFieldType),
size: getUserDefaultSize(settings.defaultFieldType, settings, database, dbToTypes),
};
} else if (!dbToTypes[database][settings.defaultFieldType].hasDefault || incr) {
fieldUpdates = {
Expand Down
27 changes: 27 additions & 0 deletions src/utils/typeDefaults.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// Function to get the default size configured by the user
export const getUserDefaultSize = (typeName, settings, database, dbToTypes) => {
const dbSettings = settings?.defaultTypeSizes?.[database] || {};
const userSize = dbSettings[typeName];
if (typeof userSize === 'number') {
return userSize;
}
return dbToTypes[database][typeName]?.defaultSize || '';
};

// Function to get the combined size for types with precision and scale
export const getUserDefaultPrecisionScale = (typeName, settings, database) => {
const dbSettings = settings?.defaultTypeSizes?.[database] || {};
const userSettings = dbSettings[typeName];
if (typeof userSettings === 'object') {
const precision = userSettings?.precision || 10;
const scale = userSettings?.scale;
// If it has a defined scale, combine as "precision,scale"
if (scale !== undefined && scale !== null) {
return `${precision},${scale}`;
}
// If it only has precision, return just the precision
return precision.toString();
}
// Default value for types with precision
return "10";
};