import { DataType } from "@/lib/schemas/data-type-schema"; import { DatabaseType } from "@/lib/schemas/database-schema"; import { FieldInsertType, FieldType } from "@/lib/schemas/field-schema"; import { RelationshipInsertType, RelationshipType } from "@/lib/schemas/relationship-schema"; import { TableInsertType, TableType } from "@/lib/schemas/table-schema"; import { DBDiffOperation } from "@/utils/database"; import { QueryResult } from "@powersync/web"; import { createContext } from "react"; interface DatabaseDataContextType { data_types: DataType[], database: DatabaseType, isLoading: boolean, // table operations } interface DatabaseOperationsContextType { createTable: (table: TableInsertType) => Promise, editTable: (table: TableInsertType) => Promise, deleteTable: (id: string) => Promise, updateTablePositions: (tables: TableInsertType[]) => Promise, deleteMultiTables: (ids: string[]) => Promise // field operations createField: (field: FieldInsertType) => Promise, editField: (field: FieldInsertType) => Promise, deleteField: (id: string) => Promise, orderTableFields: (fields: FieldType[]) => Promise, getField: (tableId: string, id: string) => FieldType | undefined, // relationship operations createRelationship: (relationship: RelationshipInsertType) => Promise, editRelationship: (relationship: RelationshipInsertType) => Promise, deleteRelationship: (id: string) => Promise, deleteMultiRelationships: (ids: string[]) => Promise, // execute the diff operation whenver user click in undo or redo executeDbDiffOps: (operations: DBDiffOperation[]) => void, } export const DatabaseDataContext = createContext({} as DatabaseDataContextType); export const DatabaseOperationsContext = createContext({} as DatabaseOperationsContextType);