Files
metabuilder/packages/schema_editor/seed/scripts/tables.lua

83 lines
2.0 KiB
Lua

-- Table management
---@class CreateTableAction
---@field action "create_table"
---@field name string Table name
---@field fields FieldDefinition[] Array of field definitions
---@class AddFieldAction
---@field action "add_field"
---@field table string Table name
---@field field FieldDefinition Field to add
---@class RemoveFieldAction
---@field action "remove_field"
---@field table string Table name
---@field field string Field name to remove
---@class TableEditorProps
---@field name string Table name
---@field fields FieldDefinition[] Array of field definitions
---@class TableEditorComponent
---@field type "table_editor"
---@field props TableEditorProps
---@class TableDefinition
---@field name string Table name
---@field fields FieldDefinition[] Array of field definitions
---@class TablesModule
local M = {}
---Create a new table definition
---@param name string Table name
---@param fields? FieldDefinition[] Array of field definitions
---@return CreateTableAction
function M.create(name, fields)
return {
action = "create_table",
name = name,
fields = fields or {}
}
end
---Render a table editor component
---@param table_def TableDefinition Table definition
---@return TableEditorComponent
function M.render(table_def)
return {
type = "table_editor",
props = {
name = table_def.name,
fields = table_def.fields
}
}
end
---Create an add field action
---@param table_name string Table name
---@param field FieldDefinition Field to add
---@return AddFieldAction
function M.add_field(table_name, field)
return {
action = "add_field",
table = table_name,
field = field
}
end
---Create a remove field action
---@param table_name string Table name
---@param field_name string Field name to remove
---@return RemoveFieldAction
function M.remove_field(table_name, field_name)
return {
action = "remove_field",
table = table_name,
field = field_name
}
end
return M