Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add adamGenerateJooqMetamodel #13

Merged
merged 5 commits into from
Oct 8, 2024

Conversation

thomas-andres
Copy link
Collaborator

No description provided.

Copy link

github-actions bot commented Oct 8, 2024

Test Results

143 tests  +1   142 ✅ +1   3m 0s ⏱️ +3s
 64 suites +1     1 💤 ±0 
 64 files   +1     0 ❌ ±0 

Results for commit af835f3. ± Comparison against base commit 2cd816b.

♻️ This comment has been updated with latest results.

@thomas-andres thomas-andres requested a review from rbuehlma October 8, 2024 11:24
return jooqType.getTypeName();
}

private boolean isIdentity(Field field) {
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hab grad im int test was gesehen. Gilt das sequence Flag als identity? (Das wären IMHO eigentlich 2 unterschiedliche Ding, auch wenn's konzeptuell das gleiche macht)

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ich glaube bei einer Identity erstellt Oracle einfach im Hintergrund eine Sequence. Ich bin mir nicht sicher, ob wir die beiden für dieses Tool unterscheiden müssen.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ob Oracle intern dann noch eine sequence braucht weiss ich nicht. Verwendung ist aber anders.
identity: client lässt Feld leer und Server befüllt es beim insert.
sequence: client lädt sequence Wert vor dem insert und füllt den Wert im Record schon.
-> heisst also auch jooq muss damit anders umgehen. Wobei jooq glaub kein automatisches sequence handling kann.
Wenn im yml das sequence=true als identity interpretiert werden soll (und das macht mindestens ein Test), dann sollte es jetzt passen.

import org.jooq.meta.jaxb.Strategy;
import org.jooq.meta.jaxb.Target;

public class AdamJooqMetamodelGenerator {
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Die Klasse hab ich aus dem Task extrahiert, weil ich sonst im Test Probleme mit unterschiedlichen loggings im classpath hatte.

@@ -13,6 +13,8 @@ sourceCompatibility = 21
dependencies {
implementation gradleApi()
implementation project(':core')
implementation project(':yml')
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Die yml dependency sollte hier glaubs nicht verwendet werden. Wäre cool, wenn das auch mit anderen Quellen geht. Zur Laufzeit muss :yml dann natürlich vorhanden sein, falls eine YML Quelle verwendet wird.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ist das zur Laufzeit eh 1 jar?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nein, die yml dependency muss explizit dazu genommen werden falls man ne yml source verwenden will. Analog zu Oracle usw.

return jooqType.getTypeName();
}

private boolean isIdentity(Field field) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ich glaube bei einer Identity erstellt Oracle einfach im Hintergrund eine Sequence. Ich bin mir nicht sicher, ob wir die beiden für dieses Tool unterscheiden müssen.


private void ensureSchema() {
if (schema == null) {
String source = (String) getProperties().get(YML_SOURCE_PROPERTY);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hier kannst du SourceAndSinkFactory.getInstance().getSource(....) verwenden. Dann hast du keine depencency zu yml mehr und wir können auch das MetaModel aus einem echten DB-Schema generieren (ja, ich sehe den Sinn aktuell auch nicht :) ).

@thomas-andres thomas-andres marked this pull request as ready for review October 8, 2024 15:06
@thomas-andres thomas-andres merged commit 5a2d564 into master Oct 8, 2024
3 checks passed
@thomas-andres thomas-andres deleted the feature/jooq_metamodel_from_yml branch October 8, 2024 15:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants