Skip to content
Snippets Groups Projects
user avatar
Mark Bastian authored
* Fix clj-kondo

was getting an error:

```clojure
user=> (require ’[clj-kondo.hooks-api :as hooks])
Syntax error compiling at (clj_kondo/impl/analysis/java.clj:61:6).
Unable to find static field: ASM9 in interface org.objectweb.asm.Opcodes
```

checking where the bad version comes from:

```clojure
user=> (io/resource "org/objectweb/asm/Opcodes.class")
        "0x37e9d2e2"
        "jar:file:/Users/dan/.m2/repository/org/ow2/asm/asm-all/5.2/asm-all-5.2.jar!/org/objectweb/asm/Opcodes.class"]
```

and running

```
> clj -X:deps tree :aliases '[:dev :ee :ee-dev :drivers :drivers-dev :alpha :socket :morse :reveal]' > deps

❯ grep asm deps
  X org.ow2.asm/asm 9.4 :superseded
  . org.ow2.asm/asm-all 5.2
      . org.ow2.asm/asm 9.5 :newer-version
      . org.ow2.asm/asm-commons 9.5
        . org.ow2.asm/asm 9.5
        . org.ow2.asm/asm-tree 9.5
          . org.ow2.asm/asm 9.5
    X org.ow2.asm/asm 9.2 :older-version
```

The 9.4 and 9.5s are all close to each other. But the asm-all 5.2 is far
too old. That's brought in by eastwood. So i'll exclude it and see if it
works

* Can't throw error in api endpoint for linked entities x-ray

`create-linked-dashboard` creates a dashboard if there are no linked
entities, so this is unreachable code

* unify card and query code pathways.

now it's quite clear how card and query diverge:

```clojure
(defmethod automagic-analysis Card
  [card {:keys [cell-query] :as opts}]
  (let [root     (->root card)
        cell-url (format "%squestion/%s/cell/%s" public-endpoint
                         (u/the-id card)
                         (encode-base64-json cell-query))]
    (query-based-analysis root opts
                          (when cell-query
                            {:cell-query cell-query
                             :cell-url   cell-url}))))

(defmethod automagic-analysis Query
  [query {:keys [cell-query] :as opts}]
  (let [root       (->root query)
        cell-query (when cell-query (mbql.normalize/normalize-fragment [:query :filter] cell-query))
        opts       (cond-> opts
                     cell-query (assoc :cell-query cell-query))
        cell-url   (format "%sadhoc/%s/cell/%s" public-endpoint
                           (encode-base64-json (:dataset_query query))
                           (encode-base64-json cell-query))]
    (query-based-analysis root opts
                          (when cell-query
                            {:cell-query cell-query
                             :cell-url   cell-url}))))
```

* Adding frequencies to a test to prevent non-deterministic behavior

* Fixing linter check and ordering issue in test.

* Adding TODO future task to replace /rule/ with /dashboard-template/ in paths.

* Added large ns block to metabase.automagic-dashboards.core

* Fixing spelling mistakes

* Some docstrings and renaming for clarity.

* Added ->field and ->root (covering source) tests

* TODO - Fix minumum spelling error on standalone PR.

* Breaking up tests to understand what is on with bulk failures

* Broke make-cards into several logical steps so that the code is more readable. Added tests for each stage.

* Updating references to rules.clj for i18n generation.

* Inlined make-context into apply-dashboard-template. This makes the steps of creating dimensions, metrics, and filters more explicit. ATM we still need to resolve the logic around inject-root as this has dependence on the context and not the individual dimensions.

* put build stuff on classpath for lsp

* calculate base-context once before template loop

* Removed the inject-root multimethod in favor of simple functions. Introducing the idea of removing metric and filter candidates that claim dimensions that don't exist.

* Adding logic to pre-emptively remove unsatisfied metrics, filters, and dimensions.

In `card-candidates` the check:

```
(and
  (every? context-dimensions (map ffirst card-dimensions))
  (every? context-metrics card-metrics)
  (every? context-filters card-filters))
```

is now performed to ensure that the card is satisfied before moving forward.

* Renamed common-dimensions, common-metrics, and common-filters to satisfied-* for clarity. In card-candidates also changed context-* and card-* bindings to available-* and required-* for clarity.

* Teasing out the generated dimensions, metrics, and filters from the big-ball-of-mud context. `make-cards` now takes the base context as well as the available computed dimensions, metrics, and filters as a separate argument. Additionally, tests were added for the `(comp #(filter-tables % tables) dashboard-templates/->entity)` branch of `some-fn` in `potential-card-dimension-bindings`. However, I am not confident that this is ever called outside of the tests. In order to be called, the entity type for the table has to be a named dimension in a card, which I can't find any examples of in the templates.

* Pushing mega-context down to return value of apply-dashboard-template. Just need to take it apart where it is used downstream.

* apply-dashboard-template now just returns generated values and does not build up the base context.

* Adding tests for cases in which dimensions are defined in a native query on the dashcard template.

The only case where this happens is in the resources/automagic_dashboards/table/example.yaml and,
prior to this PR, had no test coverage.

It does add some weird complexities to the system (including bringing in dimensions from a different
approach vector) so perhaps we want to re-evaluate if we want this as a feature or not.

---------

Co-authored-by: default avatardan sutton <dan@dpsutton.com>
764fcd06
History
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
Name Last commit Last update
..