mirror of
https://github.com/drawdb-io/drawdb.git
synced 2025-05-25 11:09:11 +00:00
custom column type
This commit is contained in:
parent
30886ac48f
commit
42c56ead44
@ -51,18 +51,22 @@ export default function FieldDetails({ data, tid, index }) {
|
||||
setRedoStack([]);
|
||||
}}
|
||||
/>
|
||||
{(data.type === "ENUM" || data.type === "SET") && (
|
||||
{(data.type === "ENUM" || data.type === "SET" || data.type === "CUSTOM") && (
|
||||
<>
|
||||
<div className="font-semibold mb-1">{data.type} values</div>
|
||||
<TagInput
|
||||
separator={[",", ", ", " ,"]}
|
||||
separator={
|
||||
data.type === "CUSTOM" ? [] : [",", ", ", " ,"]
|
||||
}
|
||||
value={data.values}
|
||||
validateStatus={
|
||||
!data.values || data.values.length === 0 ? "error" : "default"
|
||||
}
|
||||
addOnBlur
|
||||
className="my-2"
|
||||
placeholder="Use ',' for batch input"
|
||||
placeholder={
|
||||
data.type === "CUSTOM" ? "Enter a custom value" : "Use ',' for batch input"
|
||||
}
|
||||
onChange={(v) => updateField(tid, index, { values: v })}
|
||||
onFocus={() => setEditField({ values: data.values })}
|
||||
onBlur={() => {
|
||||
|
@ -123,11 +123,13 @@ export default function TypeField({ data, tid, fid }) {
|
||||
<Popover
|
||||
content={
|
||||
<div className="popover-theme w-[240px]">
|
||||
{(data.type === "ENUM" || data.type === "SET") && (
|
||||
{(data.type === "ENUM" || data.type === "SET" || data.type === "CUSTOM") && (
|
||||
<>
|
||||
<div className="font-semibold mb-1">{data.type} values</div>
|
||||
<TagInput
|
||||
separator={[",", ", ", " ,"]}
|
||||
separator={
|
||||
data.type === "CUSTOM" ? [] : [",", ", ", " ,"]
|
||||
}
|
||||
value={data.values}
|
||||
validateStatus={
|
||||
!data.values || data.values.length === 0
|
||||
@ -135,7 +137,9 @@ export default function TypeField({ data, tid, fid }) {
|
||||
: "default"
|
||||
}
|
||||
className="my-2"
|
||||
placeholder="Use ',' for batch input"
|
||||
placeholder={
|
||||
data.type === "CUSTOM" ? "Enter a custom value" : "Use ',' for batch input"
|
||||
}
|
||||
onChange={(v) =>
|
||||
updateType(tid, {
|
||||
fields: types[tid].fields.map((e, id) =>
|
||||
|
@ -22,6 +22,7 @@ export const sqlDataTypes = [
|
||||
"UUID",
|
||||
"ENUM",
|
||||
"SET",
|
||||
"CUSTOM"
|
||||
];
|
||||
|
||||
export const tableThemes = [
|
||||
|
@ -50,6 +50,9 @@ export function getTypeString(field, dbms = "mysql", baseType = false) {
|
||||
if (field.type === "SET" || field.type === "ENUM") {
|
||||
return `${field.type}(${field.values.map((v) => `"${v}"`).join(", ")})`;
|
||||
}
|
||||
if (field.type === "CUSTOM") {
|
||||
return `${field.values}`;
|
||||
}
|
||||
if (!sqlDataTypes.includes(field.type)) {
|
||||
return "JSON";
|
||||
}
|
||||
@ -67,6 +70,9 @@ export function getTypeString(field, dbms = "mysql", baseType = false) {
|
||||
if (field.type === "ENUM") {
|
||||
return `${field.name}_t`;
|
||||
}
|
||||
if (field.type === "CUSTOM") {
|
||||
return `${field.values}`;
|
||||
}
|
||||
if (field.type === "SET") {
|
||||
return `${field.name}_t[]`;
|
||||
}
|
||||
@ -98,6 +104,8 @@ export function getTypeString(field, dbms = "mysql", baseType = false) {
|
||||
: `NVARCHAR(255) CHECK([${field.name}] in (${field.values
|
||||
.map((v) => `'${v}'`)
|
||||
.join(", ")}))`;
|
||||
case "CUSTOM":
|
||||
return field.values;
|
||||
case "VARCHAR":
|
||||
type = `NVARCHAR`;
|
||||
break;
|
||||
@ -333,6 +341,8 @@ export function getSQLiteType(field) {
|
||||
return `TEXT CHECK("${field.name}" in (${field.values
|
||||
.map((v) => `'${v}'`)
|
||||
.join(", ")}))`;
|
||||
case "CUSTOM":
|
||||
return field.values;
|
||||
default:
|
||||
return "BLOB";
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user