barnabasJ

barnabasJ

Ash Core Team

You can now add subscriptions using the DSL.

subscriptions do
  pubsub YourAppWeb.Endpoint

  subscribe :something_changed do
    action_types [:create, :update, :destroy]
  end
end

Right now, you still need to add the dependency from github. A release will follow soon.
I created a small demo video showing the setup.

Showing Posts 1 to 5

sezaru

sezaru

Amazing work! I will try it out asap!

Off-topic: I noticed that around 6:10 of the video, you saved a Ash resource and the formatter changed the resource code blocks order. How did you do that?

sezaru

sezaru

Also, another question.

Can you somehow add logic to filter out data based on some criteria?

For example, let’s say I have a resource that contains data for multiple organizations, I want to subscribe to that resource actions, but I don’t want it to allow an me to subscribe to all data from all organizations for that resource, only for the ones that are from my own organization.

zachdaniel

zachdaniel

Creator of Ash

What you subscribe to is a query built for a read action, so that read action can contain filters. Additionally, if you have policies that filter the data, they will be applied to all data before a notification is sent.

zachdaniel

zachdaniel

Creator of Ash

That is the Spark.Formatter plugin. You can configure it to set a section order for any Spark DSL including Ash.Resource.

bastiW

bastiW

Minimal Reproduction example

Including

  • AshGraphql
  • AshSqlite

https://github.com/bastiW/my_subscription_app_sqlite

In the meanwhile you can skip most steps shown in the Video. As the CLI is doing that for you. You just need to run some cli commands and then modify the resource

If you want to start from scratch you can run:

Setup new project (I think the commands provide on the ash-hq site would also work)

mix igniter.new my_subscription_app_sqlite --with phx.new --install ash,ash_sqlite,ash_graphql,absinthe_phoenix

Create a resource

mix ash.gen.resource MySubscriptionApp.Posts.Post --uuid-v7-primary-key id --attribute title:string:required:public --attribute text:string:required:public --extend graphql,sqlite

Modify the post resource:
https://github.com/bastiW/my_subscription_app_sqlite/blob/main/lib/my_subscription_app/posts/post.ex

Switch from simple GraphQL interface to playground - as the simple seem to not support the subscriptions:
https://github.com/bastiW/my_subscription_app_sqlite/commit/5542ffc7770475b4443a60792ba886fbeb2a7b86

— All posts loaded —

Where Next? Top

Trending in News & Updates Top

bartblast
I’ll be using this thread to share Hologram patch release announcements. Minor releases will continue to get dedicated threads with blog ...
New
pcharbon
:heart::heart::heart::heart::heart::heart::heart::heart::heart::heart::heart::heart::heart::heart::heart::heart::heart::heart::heart::hea...
New
nature
NatureWhistle v0.4.1 is out! :tada: This release is a pretty significant step forward for the project. When I first built NatureWhistle,...
New
webofbits
Aludel 0.7.0 is released :tada: Since 0.5.0, Aludel has grown into a much more complete LLM evaluation toolkit for Elixir and Phoenix app...
New

Other Trending Topics Top

JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
marciok
Hi there! We created Gust: A task orchestrator inspired by Airflow. For those who have never heard about Aiflow, it’s a Python-based wor...
New
mhanberg
Hi everyone! The first release candidate for the Expert language server project is now available! We’ve published a press release detai...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Dmk
Xamal is a deployment tool for Elixir apps that deploys native releases to bare metal servers over SSH. It’s a port of GitHub - basecamp/...
New

Latest on Elixir Forum

Elixir Forum

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews