Powered by AppSignal & Oban Pro

Selecto Kino Test

notebooks/selecto_kino_test.livemd

Selecto Kino Test

Setup

Mix.install([
  {:kino, "~> 0.7.0"},
  {:postgrex, ">= 0.0.0"},
  {:selecto, path: "/home/chris/projects/selecto_test/vendor/selecto"},
  {:selecto_kino, path: "/home/chris/projects/selecto_test/vendor/selecto_kino"}
])
# Add vendor modules to the path
Code.append_path("#{__DIR__}/../vendor/selecto_kino/lib")
Code.append_path("#{__DIR__}/../vendor/selecto/lib")

# Load the main SelectoKino module
Code.compile_file("#{__DIR__}/../vendor/selecto_kino/lib/selecto_kino.ex")
Code.compile_file("#{__DIR__}/../vendor/selecto_kino/lib/selecto_kino/connection.ex")
Code.compile_file("#{__DIR__}/../vendor/selecto_kino/lib/selecto_kino/query_builder.ex")
Code.compile_file("#{__DIR__}/../vendor/selecto_kino/lib/selecto_kino/selecto_query_builder.ex")
Code.compile_file("#{__DIR__}/../vendor/selecto_kino/lib/selecto_kino/app_connection.ex")

# No need to load store modules or domain modules - they're built into SelectoKino now
IO.puts("SelectoKino loaded successfully!")

Connect to the Database

Now, let’s connect to the selecto_test_dev database. The form below will prompt you for the connection details. Fill in the form and click “Connect”.

SelectoKino.connect()

Build a Query

Once you have connected to the database (submitted the form above), you can use the form below to build and run a query.

Simple SQL Query Builder

SelectoKino.query()

Selecto Domain Query Builder

For more advanced queries with joins, custom columns, and filters, use the pre-defined Selecto domains:

SelectoKino.list_domains()
SelectoKino.selecto_query("actors")
SelectoKino.selecto_query("films")

Connect to Running App (Recommended)

This is the cleanest approach - connect to a running instance of the SelectoTest app to access the real domain configurations and run queries.

First, start your app in one terminal:

# In your app directory
iex --name selecto_test@127.0.0.1 --cookie selecto_test_cookie -S mix phx.server

Then connect from the livebook:

SelectoKino.connect_app()

Once connected, you can access domains from the running app:

SelectoKino.app_domains()
SelectoKino.app_query("actors")
SelectoKino.app_query("films")