mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-05-02 09:03:58 +00:00
fk editor
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
import uuidv1 from 'uuid/v1';
|
import uuidv1 from 'uuid/v1';
|
||||||
import _omit from 'lodash/omit';
|
import _omit from 'lodash/omit';
|
||||||
import { ColumnInfo, ConstraintInfo, PrimaryKeyInfo, TableInfo } from 'dbgate-types';
|
import { ColumnInfo, ConstraintInfo, ForeignKeyInfo, PrimaryKeyInfo, TableInfo } from 'dbgate-types';
|
||||||
|
|
||||||
export interface EditorColumnInfo extends ColumnInfo {
|
export interface EditorColumnInfo extends ColumnInfo {
|
||||||
isPrimaryKey?: boolean;
|
isPrimaryKey?: boolean;
|
||||||
@@ -107,6 +107,16 @@ export function editorAddConstraint(table: TableInfo, constraint: ConstraintInfo
|
|||||||
} as PrimaryKeyInfo;
|
} as PrimaryKeyInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (constraint.constraintType == 'foreignKey') {
|
||||||
|
res.foreignKeys = [
|
||||||
|
...(res.foreignKeys || []),
|
||||||
|
{
|
||||||
|
pairingId: uuidv1(),
|
||||||
|
...constraint,
|
||||||
|
} as ForeignKeyInfo,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -122,6 +132,12 @@ export function editorModifyConstraint(table: TableInfo, constraint: ConstraintI
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (constraint.constraintType == 'foreignKey') {
|
||||||
|
res.foreignKeys = table.foreignKeys.map(fk =>
|
||||||
|
fk.pairingId == constraint.pairingId ? { ...fk, ...constraint } : fk
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -134,5 +150,9 @@ export function editorDeleteConstraint(table: TableInfo, constraint: ConstraintI
|
|||||||
res.primaryKey = null;
|
res.primaryKey = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (constraint.constraintType == 'foreignKey') {
|
||||||
|
res.foreignKeys = table.foreignKeys.filter(x => x.pairingId != constraint.pairingId);
|
||||||
|
}
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,10 +71,13 @@
|
|||||||
<SelectField
|
<SelectField
|
||||||
value={column.columnName}
|
value={column.columnName}
|
||||||
isNative
|
isNative
|
||||||
options={tableInfo.columns.map(col => ({
|
options={[
|
||||||
label: col.columnName,
|
{ label: '(Not selected)', value: '' },
|
||||||
value: col.columnName,
|
...tableInfo.columns.map(col => ({
|
||||||
}))}
|
label: col.columnName,
|
||||||
|
value: col.columnName,
|
||||||
|
})),
|
||||||
|
]}
|
||||||
on:change={e => {
|
on:change={e => {
|
||||||
if (e.detail) {
|
if (e.detail) {
|
||||||
columns = columns.map((col, i) => (i == index ? { ...col, columnName: e.detail } : col));
|
columns = columns.map((col, i) => (i == index ? { ...col, columnName: e.detail } : col));
|
||||||
@@ -88,10 +91,13 @@
|
|||||||
<SelectField
|
<SelectField
|
||||||
value={column.refColumnName}
|
value={column.refColumnName}
|
||||||
isNative
|
isNative
|
||||||
options={(refTableInfo?.columns || []).map(col => ({
|
options={[
|
||||||
label: col.columnName,
|
{ label: '(Not selected)', value: '' },
|
||||||
value: col.columnName,
|
...(refTableInfo?.columns || []).map(col => ({
|
||||||
}))}
|
label: col.columnName,
|
||||||
|
value: col.columnName,
|
||||||
|
})),
|
||||||
|
]}
|
||||||
on:change={e => {
|
on:change={e => {
|
||||||
if (e.detail) {
|
if (e.detail) {
|
||||||
columns = columns.map((col, i) => (i == index ? { ...col, refColumnName: e.detail } : col));
|
columns = columns.map((col, i) => (i == index ? { ...col, refColumnName: e.detail } : col));
|
||||||
|
|||||||
Reference in New Issue
Block a user