Register
Submit a solution
The challenge is finished.

Challenge Overview

Challenge Objectives

Extend the Spring Data plugin for the OrientDB to add query support
 

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

We have created the plugin to support the CRUD operations in the previous challenge: http://www.topcoder.com/challenges/30104263

1. Add support for the findByXXX method in repository like the neo4j. 
Check the #9.4.3 Query Method in this link https://docs.spring.io/spring-data/neo4j/docs/5.2.0.RELEASE/reference/html/#neo4j-repo-intro
You need to support all the "Table 2" of the page above. 

2. Support query methods with queries and commands specified through @Query and @Command annotations. 
You can check this in neo4j as an example: https://docs.spring.io/spring-data/neo4j/docs/5.2.0.RELEASE/reference/html/#reference_programming_model_annotatedQueries

3. For the query method return values, you should support the following types:
Basically, we want to replicate the same query feature from the neo4j into this plugin. 
Note that you are responsible for fix any issues in existing code which prevents you from adding the query feature. 

Please also make the @Edge and @Link annotation support an extra cascade attribute. If it's true, the child entity should be updated / deleted cascadely, and if it's false, the child entity should already exist. (Edges or links should be updated in both cases). 


Final Submission Guidelines

Submission Deliverable

  • 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: 30105170