Ash Framework
The Elixir backend framework for unparalleled productivity. Declarative tools that let you stop wasting time. Use with Phoenix LiveView or build APIs in minutes for your front-end of choice.
JoinAsh Framework
The Elixir backend framework for unparalleled productivity. Declarative tools that let you stop wasting time. Use with Phoenix LiveView or build APIs in minutes for your front-end of choice.
JoinMixing read action in `action_type` policy condition with other types; Error instead of filtering
3.7.0 my tests for asserting that actions under policies requiring an actor being present started throwing Ash.Errors.Forbidden for read actions instead of just filtering and warning on :debug.
```elixir...mainTesting Spark Validator compilation warnings
Ash codegen and migrate `undefined_table` when I have `many_to_many`
has_many, but I'm getting an error with the tables.
```elixir
defmodule MishkaBlog.BlogPost do
postgres do
table "mishka_blog_posts"...Graphql new type falls back to JsonString
how to flip a boolean with a builtin change
change set_attribute(:somebool, !attribute(:somebool))atomic_update(:somebool, expr(not somebool)) ?`update_form` doesn't update params on root form
AshPhoenix.Form.update_form function to update a subform of the root form.
If after the update_form I call a validate or update_params on the root form the params are reset to the values before the update_form call.
Since a code snippet says more than 1000 words:
...Vector issue
[error] Failed to update subtask embedding e28d6ac8-72da-4bd9-ad0e-cab51e25f3b9: %Ash.Error.Unknown{bread_crumbs: ["Returned from bulk query update: ThalamusTasks.Tasks.SubTask.update"], changeset: "#Changeset<>", errors: [%Ash.Error.Unknown.UnknownError{error: "** (FunctionClauseError) no function clause matching in Pgvector.new/1", field: nil, value: nil, splode: Ash.Error, bread_crumbs: ["Returned from bulk query update: ThalamusTasks.Tasks.SubTask.update"], vars: [], path: [], stacktrace: #Splode.Stacktrace<>, class: :unknown}]}
[error] Failed to update subtask embedding 435405d4-317e-4b91-9b73-5fa23ecb88f8: %Ash.Error.Unknown{bread_crumbs: ["Returned from bulk query update: ThalamusTasks.Tasks.SubTask.update"], changeset: "#Changeset<>", errors: [%Ash.Error.Unknown.UnknownError{error: "** (FunctionClauseError) no function clause matching in Pgvector.new/1", field: nil, value: nil, splode: Ash.Error, bread_crumbs: ["Returned from bulk query update: ThalamusTasks.Tasks.SubTask.update"], vars: [], path: [], stacktrace: #Splode.Stacktrace<>, class: :unknown}]}
[error] Failed to update subtask embedding 56a1c909-1d0c-4ad0-8e90-655fbd45cf3e: %Ash.Error.Unknown{bread_crumbs: ["Returned from bulk query update: ThalamusTasks.Tasks.SubTask.update"], changeset: "#Changeset<>", errors: [%Ash.Error.Unknown.UnknownError{error: "** (FunctionClauseError) no function clause matching in Pgvector.new/1", field: nil, value: nil, splode: Ash.Error, bread_crumbs: ["Returned from bulk query update: ThalamusTasks.Tasks.SubTask.update"], vars: [], path: [], stacktrace: #Splode.Stacktrace<>, class: :unknown}]}
[error] Failed to update subtask embedding e28d6ac8-72da-4bd9-ad0e-cab51e25f3b9: %Ash.Error.Unknown{bread_crumbs: ["Returned from bulk query update: ThalamusTasks.Tasks.SubTask.update"], changeset: "#Changeset<>", errors: [%Ash.Error.Unknown.UnknownError{error: "** (FunctionClauseError) no function clause matching in Pgvector.new/1", field: nil, value: nil, splode: Ash.Error, bread_crumbs: ["Returned from bulk query update: ThalamusTasks.Tasks.SubTask.update"], vars: [], path: [], stacktrace: #Splode.Stacktrace<>, class: :unknown}]}
[error] Failed to update subtask embedding 435405d4-317e-4b91-9b73-5fa23ecb88f8: %Ash.Error.Unknown{bread_crumbs: ["Returned from bulk query update: ThalamusTasks.Tasks.SubTask.update"], changeset: "#Changeset<>", errors: [%Ash.Error.Unknown.UnknownError{error: "** (FunctionClauseError) no function clause matching in Pgvector.new/1", field: nil, value: nil, splode: Ash.Error, bread_crumbs: ["Returned from bulk query update: ThalamusTasks.Tasks.SubTask.update"], vars: [], path: [], stacktrace: #Splode.Stacktrace<>, class: :unknown}]}
[error] Failed to update subtask embedding 56a1c909-1d0c-4ad0-8e90-655fbd45cf3e: %Ash.Error.Unknown{bread_crumbs: ["Returned from bulk query update: ThalamusTasks.Tasks.SubTask.update"], changeset: "#Changeset<>", errors: [%Ash.Error.Unknown.UnknownError{error: "** (FunctionClauseError) no function clause matching in Pgvector.new/1", field: nil, value: nil, splode: Ash.Error, bread_crumbs: ["Returned from bulk query update: ThalamusTasks.Tasks.SubTask.update"], vars: [], path: [], stacktrace: #Splode.Stacktrace<>, class: :unknown}]}
Upsert with partial unique index - WHERE clause support?
upsert functionality when dealing with a partial unique index.
My table has a unique index defined as UNIQUE (org_id, name) WHERE org_id IS NULL, which is a partial index. The use case for this choice is that rows in the table can be scoped by tenant, or can be global (multitenancy with global? true)...in an `after_action` `changeset.context` has no tenant?
Timestamps getting updated unexpectedly
parsing nested fields when argument is a TypedStruct
Does expressions support comparing datetimes, using the operators?
Implementing error for Forbidden.Policy removed all the helpful debug assistance :D
This error was unhandled because Ash.Error.Forbidden.Policy does not implement the `AshPhoenix.FormData.Error` protocol.
This error was unhandled because Ash.Error.Forbidden.Policy does not implement the `AshPhoenix.FormData.Error` protocol.
Component attribute definition
%Protocol.UndefinedError{protocol: Enumerable, value: "5244d2cb-d104-4276-9c3b-1404995a6c1c", descri

What is the best Practices for Handling Migrations in a Reusable Ash Library?
How can I bypass or re-evaluate multi-tenancy for specific aggregates?
Showing paginated data inside generic actions, works in normal call but i can not show in json
site_id and have access to everything), and the other group being regular users (who do have a site_id and can only access their own data) — this setup has led to a few challenges for me.
The main issue I'm facing due to this structure is that I often need to create generic actions. Unfortunately, I'm running into two major problems with this approach:...Multi-level Hierarchy Beyond Native Multitenancy - Need Guidance
Sudo → Tenant → Seller → Stores
Sudo → Tenant → Seller → Stores
IP based rate limiting with ash_graphql
key function to take this into account.