Add full typed MongoDB repository support to StorageAPI #3
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Add a modern, type-safe MongoDB integration using POJOs with Jackson annotations and Lombok to reduce boilerplate. The new implementation provides a cleaner repository pattern while maintaining backward compatibility with the existing
MongoStorage
implementation.What I changed
New package structure under
xyz.refinedev.api.storage.mongo
model.Model
: Base interface for MongoDB entities with@JsonProperty("_id")
mappingrepository.ObjectRepository
: Generic CRUD interface definingfind
,save
,remove
, andfindAll
operationsrepository.MongoObjectRepository
: MongoDB implementation ofObjectRepository
with typed collection supportstorage.MongoStorageManager
: New recommended entrypoint with POJO codec registry configuration and typed repository creationstorage.MongoStorage
: Marked as@Deprecated
and kept for backward compatibility with the Document+Gson approachExample implementation (in
src/test
)User
modelModel
interface@Getter
,@Setter
,@Builder
,@NoArgsConstructor
,@AllArgsConstructor
)@JsonProperty("_id")
,@JsonIgnore
for computed fields)id
,uuid
,points
,level
UserManager
User
entitiesMongoStorageManager
Storage
main classMongoStorageManager
, createUserManager
, save and retrieve usersWhy this is useful
Document
objectsModel
interfaceMongoStorage
continues to workBreaking Changes
None. This is a fully backward-compatible addition:
MongoStorage
is deprecated but still functionalMongoStorageManager
and typed repositoriesMigration path: Replace
MongoStorage
withMongoStorageManager.getRepository(YourModel.class, "collection")
and ensure your models implement theModel
interface.