Driver development workflow with vscode

We need a Databricks driver for Metabase. I've got some experience of Clojure, so thought I'd try and update this one:
https://github.com/fhsgoncalves/metabase-sparksql-databricks-driver

I'm running a dev instance of Metabase in a vscode remote container as per the instructions here.

I can start the backend up, and generally work on it via the REPL. That part's familiar and seem to work. I can run using clojure -M:dev:drivers:drivers-dev:nrepl, which I understand loads the modules/drivers deps into the classpath. This seems to work, but once I've made changes to the driver, I can't work out (without restarting everything) how to update the code the backend is using, nor can I get it to be reflected in the front end.

I have these questions:

  1. is a repl-driven workflow possible for driver development, or do I have to rebuild each time?
  2. if so, how do I "hot update" the loaded custom backend drivers?
  3. and, how do I get the frontend to reflect any changes made to the back-end (if any are required)?

I'd be really grateful for any help.

Hi @danp
You'll currently have to restart. There's work being done trying to implement hot-reloading, though I'm unsure if this applies to drivers too (I don't think so): https://github.com/metabase/metabase/pull/18801
You might want to look at this too: https://github.com/metabase/metabase/wiki/Migrating-from-Leiningen-to-tools.deps

Thanks for the quick reply @flamber.

I've mod'ed the project to use deps.edn. The code's picking up the Databricks driver's metabase-plugin.yaml, but currently having classpath issues reading the driver code :frowning_face:

When you say:

You'll currently have to restart

Is that just the backend, or do I need to bounce everything?

@danp Yeah, you'll need to re-write the driver to 41-style (out with yaml, in with edn)
It should just be the backend, but that depends on how you're running the frontend. Though, driver development sometimes needs frontend reload because it doesn't correctly understand those changes.
We're trying to make this a better experience for everyone (including ourselves).