aesmail / aesmail/kaffy

[BUG] Models without primary key cause 500

Aberta
#333 0 comentários 0 reações 1 responsável Reivindicada por @aesmail Ver no GitHub
bug
Linguagem predominante
Elixir
Estrelas
1.4k
Forks
171
Métricas de merge de PRs
Nenhum PR com merge em 30d

Descrição

**Versions Used**
Kaffy: 0.10.3
Phoenix: 1.7.10
Elixir:
```
Erlang/OTP 27 [erts-15.2] [source] [64-bit] [smp:10:10] [ds:10:10:10] [async-threads:1] [jit]

Elixir 1.18.2 (compiled with Erlang/OTP 27)
```
**What's actually happening?**

We have the following schema:

```
@primary_key false
schema "auth_identity_provider" do
field :id, :string
field :name, :string

timestamps(type: :utc_datetime)
end
```

We also have this model defined as a resource for kaffy:

```
def create_resources(_conn) do
[
user_management: [
name: "User Management",
resources: [
identity_provider: [schema: App.Models.Auth.IdentityProvider]
]
]
]
end
```

Navigating to the list page of this model, I get a 500 error:

```
[error] #PID<0.11416.0> running Phoenix.Endpoint.SyncCodeReloadPlug (connection #PID<0.11410.0>, stream id 1) terminated
Server: localhost:4000 (http)
Request: GET /app/admin_tool/user_management/identity_provider
** (exit) an exception was raised:
** (MatchError) no match of right hand side value: []
(kaffy 0.10.3) lib/kaffy/resource_admin.ex:165: Kaffy.ResourceAdmin.ordering/1
(kaffy 0.10.3) lib/kaffy/resource_query.ex:43: Kaffy.ResourceQuery.get_ordering/2
(kaffy 0.10.3) lib/kaffy/resource_query.ex:12: Kaffy.ResourceQuery.list_resource/3
(kaffy 0.10.3) lib/kaffy_web/controllers/resource_controller.ex:69: KaffyWeb.ResourceController.index/2
(kaffy 0.10.3) lib/kaffy_web/controllers/resource_controller.ex:1: KaffyWeb.ResourceController.action/2
(kaffy 0.10.3) lib/kaffy_web/controllers/resource_controller.ex:1: KaffyWeb.ResourceController.phoenix_controller_pipeline/2
(phoenix 1.7.20) lib/phoenix/router.ex:484: Phoenix.Router.__call__/5
(workera_webapps 0.1.0) lib/workera_webapps_web/endpoint.ex:1: WorkeraWebappsWeb.Endpoint.plug_builder_call/2
(workera_webapps 0.1.0) deps/plug/lib/plug/debugger.ex:155: WorkeraWebappsWeb.Endpoint."call (overridable 3)"/2
(workera_webapps 0.1.0) lib/workera_webapps_web/endpoint.ex:1: WorkeraWebappsWeb.Endpoint.call/2
(phoenix 1.7.20) lib/phoenix/endpoint/sync_code_reload_plug.ex:22: Phoenix.Endpoint.SyncCodeReloadPlug.do_call/4
(plug_cowboy 2.7.3) lib/plug/cowboy/handler.ex:11: Plug.Cowboy.Handler.init/2
(cowboy 2.12.0) /Users/sebastian/workspace/workera/workera-dev-workspace/src/workera_webapps/deps/cowboy/src/cowboy_handler.erl:37: :cowboy_handler.execute/2
(cowboy 2.12.0) /Users/sebastian/workspace/workera/workera-dev-workspace/src/workera_webapps/deps/cowboy/src/cowboy_stream_h.erl:306: :cowboy_stream_h.execute/3
(cowboy 2.12.0) /Users/sebastian/workspace/workera/workera-dev-workspace/src/workera_webapps/deps/cowboy/src/cowboy_stream_h.erl:295: :cowboy_stream_h.request_process/3
(stdlib 6.2) proc_lib.erl:329: :proc_lib.init_p_do_apply/3 -
```

This happens even if I create an Admin module and specify the `ordering/1` function.

**What should happen instead?**

Kaffy should expose a way to work with models that do not have a primary key. My immediate idea would be to have a function in the admin model that let's you define which field to use as the "primary key" in case there is none defined on the model.

**Screenshots**
If applicable, add screenshots to help explain your problem.

Guia de contribuição

Nenhum guia de contribuição indexado para este repositório

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.