On 21/12/21 4:11am, Andrus Adamchik wrote:
Is it worth examining DBeaver to see whether Cayenne functionality could be
added on top of the existing ERD
features?https://dbeaver.com/docs/wiki/ER-Diagrams
While I use DBeaver almost daily and appreciate all the work that went into it
and shared at no cost, the UI is horrible (esp on the Mac). The Eclipse-style
widgets, bad responsiveness and modality everywhere are driving me crazy. E.g.
you reopen DBeaver with 5 tabs from a previous session, that are connected to a
DB that is no longer there, and you get exactly 5 modal error popups that you
need to dismiss manually.
I think its important to target what people will find useful, rather
than UI details which will one day be fixed. It is good to go to where
the users are... and right now they are using tools like Intellij or
DBeaver.
An Intellij plugin need not reproduce the entire Cayenne modeler. Even a
few cgen integrations or annotation helpers could expand the visibility
of Cayenne. Could Cayenne modeler be split into a set of services which
could then be exposed in different front-ends?
Let me start by asking a basic question. Do we see Modeler as just a
tool which parses and writes an XML file, or does it do more? What is
its relationship (as a product, not technically) with cgen, mvn/gradle
plugins? Could it import Hibernate annotations so that users have an
easier path to try Cayenne? How should it interact with a DB?
DBeaver can already read a DB schema and output it to sql, json, etc.
Would a Cayenne 'plugin' just allow it to output that schema to Cayenne XML?
What utility could we give Intellij understanding Cayenne better? Could
it understand our annotations and allow users to click through to entity
events from the entities themselves?
So first let's agree on what Modeler is today and what it should be in
the future.
If Modeler changed to another language or UI library, could it leverage that to
better integrate with other tooling?
I may have one such integration scenario I care about myself - integration with
Liquibase... I no longer use a permanent local DB to run my code. My APIs and jobs are
tested via JUnit, Testcontainers, and a Docker-based transitory DB, and I never ever
check them manually. But I still forced to maintain a semi-permanent local DB to do
"DB Import" for Cayenne, and this creates extra friction. Allowing
CayenneModeler to create its own transitory schema with Docker/Testcontainers/Liquibase
for the purpose of DB Import would be extremely cool.
Phabricator has a really nice feature. When you run a new version in
production it compares the real database with the model it has, and
automatically fixes the production database to look the way it should.
Sure that's not possible when you need to migrate data to a new schema,
but for verifying and adding indexes or simply adding or dropping
columns, its quite nice.
Liquibase is great, but its only good for applying a set of rules and
not for getting the database into a known state. Some integration
between liquibase (transition rules) and cayenne (a known db state)
would be great.
Ari