Skip to content

Comments

feat(EM-31): Extract ftgo-common-jpa and ftgo-domain as Versioned Shared Libraries#38

Open
devin-ai-integration[bot] wants to merge 1 commit intofeat/microservices-migrationfrom
devin/1771369620-em31-extract-common-jpa-domain-libs
Open

feat(EM-31): Extract ftgo-common-jpa and ftgo-domain as Versioned Shared Libraries#38
devin-ai-integration[bot] wants to merge 1 commit intofeat/microservices-migrationfrom
devin/1771369620-em31-extract-common-jpa-domain-libs

Conversation

@devin-ai-integration
Copy link

feat(EM-31): Extract ftgo-common-jpa and ftgo-domain as Versioned Shared Libraries

Summary

Populates the libs/ftgo-common-jpa/ and libs/ftgo-domain/ placeholder directories as versioned, publishable shared libraries with java-library + maven-publish Gradle configurations. Also populates the four apis/ placeholder directories with build configs and DTO source files for cross-service communication contracts.

Key changes:

  • libs/ftgo-common-jpa/FtgoJpaConfiguration, Money embeddable, orm.xml, Spring Boot auto-config, maven-publish at version 1.0.0
  • libs/ftgo-domain/ — All 22 domain entity/repository/value-object Java files, depends on :ftgo-common and :libs:ftgo-common-jpa, maven-publish at version 1.0.0
  • apis/{order,consumer,restaurant,courier}-service-api/ — Each gets a build.gradle with java-library + maven-publish and DTO source files copied from the flat API modules
  • settings.gradle — Adds :libs:ftgo-common-jpa, :libs:ftgo-domain, and four :apis:* module includes
  • docs/entity-ownership.md — Expanded with Gradle paths, versions, API/DTO module table, and migration notes

Original ftgo-common-jpa/ and ftgo-domain/ directories are not deleted.

Review & Testing Checklist for Human

  • Source duplication is now 3x for domain entities — files exist in ftgo-domain/, libs/ftgo-domain/, and libs/ftgo-domain-lib/ (same for common-jpa). Verify this triple-copy approach aligns with the migration plan and that there's no expectation to wire originals as delegates instead.
  • Run full test suite — only compileJava was verified in this session. Run ./gradlew test -x :ftgo-end-to-end-tests-common:test -x :ftgo-end-to-end-tests:test -x :ftgo-application:test to ensure no runtime issues.
  • Gradle module naming — both :ftgo-common-jpa (flat) and :libs:ftgo-common-jpa (nested) are included in settings.gradle. Same for domain and API modules. Confirm this doesn't cause confusion for downstream consumers.
  • Java 8 target — new libs use sourceCompatibility = '8' for backward compatibility. Verify this is correct vs the Java 17 target in buildSrc-platform convention plugins.
  • No consumers yet reference :libs:* or :apis:* paths — existing services still depend on flat modules. Verify the migration plan for when/how to switch consumers over.

Test Plan

  1. Run ./gradlew compileJava (already verified ✅)
  2. Run ./gradlew test -x :ftgo-end-to-end-tests-common:test -x :ftgo-end-to-end-tests:test -x :ftgo-application:test
  3. Verify ./gradlew :libs:ftgo-common-jpa:publish :libs:ftgo-domain:publish succeeds and artifacts appear in build/repo/
  4. Spot-check that entity-to-service ownership mapping in docs/entity-ownership.md is accurate

Notes

  • Link to Devin run: https://app.devin.ai/sessions/c229a0bd4b234e47a1674f0aeede2e15
  • Requested by: @mbatchelor81
  • The -lib variants (ftgo-common-jpa-lib, ftgo-domain-lib) are marked as deprecated in docs but not removed — they remain for backward compatibility during migration
  • Missing newline at EOF in libs/ftgo-domain/src/main/java/net/chrisrichardson/ftgo/domain/OrderLineItems.java (minor)

…red libraries

- Extract ftgo-common-jpa under libs/ftgo-common-jpa/ with JPA config,
  Money embeddable, orm.xml, and Spring Boot auto-configuration
- Extract ftgo-domain under libs/ftgo-domain/ with all domain entities,
  repositories, value objects, and DomainConfiguration
- Create API/DTO modules under apis/ for cross-service communication
  (order, consumer, restaurant, courier service APIs)
- All libraries versioned at 1.0.0 with maven-publish support
- Update settings.gradle with new :libs: and :apis: module includes
- Update entity-to-service ownership documentation
- Original ftgo-common-jpa/ and ftgo-domain/ directories preserved

Co-Authored-By: mason.batchelor@cognition.ai <masonbatchelor81@gmail.com>
@devin-ai-integration
Copy link
Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

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.

0 participants