import { Collapse, Row, Col, Select, Button, Popover, Table, } from "@douyinfe/semi-ui"; import { IconDeleteStroked, IconLoopTextStroked, IconMore, } from "@douyinfe/semi-icons"; import { Cardinality, Constraint, Action, ObjectType, } from "../../../data/constants"; import { useTables, useUndoRedo } from "../../../hooks"; const columns = [ { title: "Primary", dataIndex: "primary", }, { title: "Foreign", dataIndex: "foreign", }, ]; export default function RelationshipInfo({ data }) { const { setUndoStack, setRedoStack } = useUndoRedo(); const { tables, setRelationships, deleteRelationship } = useTables(); const swapKeys = () => { setUndoStack((prev) => [ ...prev, { action: Action.EDIT, element: ObjectType.RELATIONSHIP, rid: data.id, undo: { startTableId: data.startTableId, startFieldId: data.startFieldId, endTableId: data.endTableId, endFieldId: data.endFieldId, }, redo: { startTableId: data.endTableId, startFieldId: data.endFieldId, endTableId: data.startTableId, endFieldId: data.startFieldId, }, message: `Swap primary and foreign tables`, }, ]); setRedoStack([]); setRelationships((prev) => prev.map((e, idx) => idx === data.id ? { ...e, startTableId: e.endTableId, startFieldId: e.endFieldId, endTableId: e.startTableId, endFieldId: e.startFieldId, } : e ) ); }; const changeCardinality = (value) => { setUndoStack((prev) => [ ...prev, { action: Action.EDIT, element: ObjectType.RELATIONSHIP, rid: data.id, undo: { cardinality: data.cardinality }, redo: { cardinality: value }, message: `Edit relationship cardinality`, }, ]); setRedoStack([]); setRelationships((prev) => prev.map((e, idx) => (idx === data.id ? { ...e, cardinality: value } : e)) ); }; const changeConstraint = (key, value) => { const undoKey = `${key}Constraint`; console.log({ action: Action.EDIT, element: ObjectType.RELATIONSHIP, rid: data.id, undo: { [undoKey]: data[undoKey] }, redo: { [undoKey]: value }, message: `Edit relationship ${key} constraint`, }); setUndoStack((prev) => [ ...prev, { action: Action.EDIT, element: ObjectType.RELATIONSHIP, rid: data.id, undo: { [undoKey]: data[undoKey] }, redo: { [undoKey]: value }, message: `Edit relationship ${key} constraint`, }, ]); setRedoStack([]); setRelationships((prev) => prev.map((e, idx) => (idx === data.id ? { ...e, [undoKey]: value } : e)) ); }; return (