Register
Submit a solution
The challenge is finished.

Challenge Overview

Challenge Objectives

Extend the Spring Data plugin for the OrientDB to add @Depth functionality to query. 
 

Project Background

OrientDB is the first Multi-Model Open Source NoSQL DBMS that combines the power of graphs and the flexibility of documents into one scalable, high-performance operational database.

Gone are the days where your database only supports a single data model. As a direct response to polyglot persistence, multi-model databases acknowledge the need for multiple data models, combining them to reduce operational complexity and maintain data consistency. Though graph databases have grown in popularity, most NoSQL products are still used to provide scalability to applications sitting on a relational DBMS. Advanced 2nd generation NoSQL products like OrientDB are the future: providing more functionality and flexibility, while being powerful enough to replace your operational DBMS.
 
There is an existing spring data plugin for OrientDB: https://github.com/orientechnologies/spring-data-orientdb, but it’s outdated and no longer working with latest OrientDB. 

It’s intended to create a fresh Spring Data plugin based upon the latest OrientDB API rather than update this outdated plugin. 

 

Technology Stack

  • Spring Data 2.2.0
  • OrientDB 3.0.23
  • Java 1.8 (Oracle)
  • Maven 3.6.2

 

Requirements

Add the @Depth feature as the spring-data for neo4j: https://docs.spring.io/spring-data/data-neo4j/docs/current/reference/html/#reference_derived-queries

So for the findByXXX and @Query annotated methods, user can specify an extra @Depth parameter or annotation, and the method should return the objects with specified depth of data populated. 
Note that the plugin code return Proxy object for domain models, but when @Depth is specified, you can return actual POJO objects.  And for the objects with the same id, please make sure the same object is returned. 
Or we can probably remove the Proxy object as with Depth, it looks the proxy object is not needed any more - and it looks the neo4j is not using any proxy object. 


Unit tests should be added as well. 

Repos:

Final Submission Guidelines

  • Patch file
  • Updated Unit tests
  • Updated demo
  • Updated README.md file with clear deployment guide and verification guide

ELIGIBLE EVENTS:

2020 Topcoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30110559