mix selecto.gen.saved_view_configs (selecto_mix v0.4.2)
Generate SavedViewConfigs implementation for separate view type configurations.
This task generates the necessary files to implement saved view configurations that are separate by view type (for example: detail, aggregate, graph, timeseries, chart, table, map) in your SelectoComponents application.
Examples
# Generate for MyApp with default naming
mix selecto.gen.saved_view_configs MyApp
# Generate with custom context module name
mix selecto.gen.saved_view_configs MyApp --context-module MyApp.ViewConfigs.Context
# Generate with custom schema module name
mix selecto.gen.saved_view_configs MyApp --schema-module MyApp.ViewConfigs.SavedConfig
# Generate with custom table name
mix selecto.gen.saved_view_configs MyApp --table-name view_configurations
# Show what would be generated without creating files
mix selecto.gen.saved_view_configs MyApp --dry-runOptions
--context-module- Name for the context module (default: APP.SavedViewConfigContext)--schema-module- Name for the schema module (default: APP.SavedViewConfig)--table-name- Database table name (default: saved_view_configs)--repo-module- Repository module name (default: APP.Repo)--dry-run- Show what would be generated without creating files
Generated Files
This task generates:
- Migration file for the saved_view_configs table with view_type separation
- Ecto schema module for SavedViewConfig
- Context module with view_type filtering support
Usage in Domains
After running the generator, use the context in your domains:
defmodule MyApp.Domains.UserDomain do
use MyApp.SavedViewConfigContext
# ... rest of domain configuration
endThen in your LiveView, use the new saved view configurations:
def handle_event("save_view_config", params, socket) do
view_type = socket.assigns.view_config.view_mode
MyApp.Domains.UserDomain.save_view_config(
params["name"],
socket.assigns.saved_view_context,
view_type,
view_config_to_params(socket.assigns.view_config),
user_id: socket.assigns.current_user.id,
description: params["description"]
)
{:noreply, socket}
end