Skip to content
Snippets Groups Projects
Unverified Commit 3a003ad7 authored by metabase-bot[bot]'s avatar metabase-bot[bot] Committed by GitHub
Browse files

List actions endpoint (#29055) (#29131)


* List all actions

previously `api/action` required `?model-id=<model-id>`. This caused the
FE to DOS the backend looping over each action. On stats I found 350 or
so sequential requests, with app-db saturation leading to requests
taking from 400ms near the beginning to 7seconds near the end.

This makes `model-id` option and now returns actions on all models the
user can see.

```
❯ http GET "localhost:3000/api/action" Cookie:$SESSION -pb
[
    {
        "archived": false,
        "creator": {...},
        "creator_id": 1,
        "database_id": 3,
        "dataset_query": {...},
        "id": 1,
        "model_id": 1,
        "name": "source = foo",
        "parameter_mappings": null,
        "parameters": [...],
        ...
    }
    ...
]
```

* update frontend for action picker to support single action list endpoint

* list actions tests

* update actions e2e tests

* Return empty vector if no results

Running tests locally might return some extra actions not asserted on in
the tests. And there you might expect a 200. But CI runs with an empty
database and returns no response so you get a 204. Quite annoying and
there's no good way to expect a "2xx" status code at the moment. So just
return the empty vector so it's always a 200 code.

* update actions endpoint unit test mocks

* Simplify logic a little

* docstring tweak

* schema with better error message

* update mocks to accept optional modelId

* simplify sorting and grouping

* make sort case-insensitive

* simplify action api test mocks

---------

Co-authored-by: default avatardpsutton <dan@dpsutton.com>
Co-authored-by: default avatarRyan Laurie <iethree@gmail.com>
parent 33ed288f
Branches jest-role-hidden
Tags
No related merge requests found
Showing
with 155 additions and 55 deletions
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment