Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,5 @@

# dependencies
/node_modules
*/node_modules
*/.idea
Binary file modified backend/fsbackend.db.mv.db
Binary file not shown.
2 changes: 1 addition & 1 deletion backend/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
<name>fsbackend</name>
<description>Basic backend project for Spring Boot</description>
<properties>
<java.version>11</java.version>
<java.version>1.8</java.version>
<springdoc-openapi.version>1.6.9</springdoc-openapi.version>
</properties>
<dependencies>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
package org.sailplatform.fsbackend.controller;

import java.util.List;

import org.sailplatform.fsbackend.model.Person;
import org.sailplatform.fsbackend.model.PersonUpdate;
import org.sailplatform.fsbackend.service.PersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@CrossOrigin(origins = { "*"})
Expand All @@ -25,4 +23,36 @@ public List<Person> getAll() {
public Person add(Person toAdd) {
return personService.add(toAdd);
}

/***
* Update endpoint for updating a person in database
* @param toUpdate Person object with updated information
* @return Updated object if found, null otherwise
*/
@PostMapping("/update")
public Person update(@RequestBody PersonUpdate toUpdate) {
// had to change the request to be in body than url params
return personService.update(toUpdate.getOld(), toUpdate.getLatest());
}

/***
* Delete endpoint for deleting a person in database
* @param toDelete Person object to delete
* @return Empty Person object if found and deleted, null otherwise
*/
@PostMapping("/delete")
public Person delete(Person toDelete){
return personService.delete(toDelete);
}

/***
* Search endpoint for searching a person in database by first name
* @param toSearch String
* @return Person object if found, null otherwise
*/
@GetMapping("/search")
public Person search(String toSearch){
return personService.searchPersonFirstName(toSearch);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package org.sailplatform.fsbackend.model;

public class PersonUpdate {
private Person old;
private Person latest;

public PersonUpdate(Person old, Person latest){
this.old = old;
this.latest = latest;
}

public Person getOld(){
return old;
}

public Person getLatest(){
return latest;
}
}
Original file line number Diff line number Diff line change
@@ -1,24 +1,99 @@
package org.sailplatform.fsbackend.service;

import java.util.List;
import java.util.Optional;

import org.sailplatform.fsbackend.model.Person;
import org.sailplatform.fsbackend.repository.PersonRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Example;
import org.springframework.stereotype.Service;

@Service
public class PersonService {

@Autowired
PersonRepository personRepository;
public Person add(Person toAdd){

public Person add(Person toAdd) {

return personRepository.save(toAdd);
}

public List<Person> getAll(){
public List<Person> getAll() {
return personRepository.findAll();
}

/***
* Searches for a person in the database by first and last name; Helper method
* @param toSearch Person object
* @return Person object if found, null if not found
*/
private Person searchPerson(Person toSearch){
// create new person with original first and last name then use as example to find it in database
Person t = new Person();
t.setFirstName(toSearch.getFirstName());
t.setLastName(toSearch.getLastName());
Optional<Person> searchedPerson = personRepository.findOne(Example.of(t));

if (searchedPerson.isPresent()) {
return searchedPerson.get();
}
return null;
}

/***
* Searches for a person in the database by first name; Helper method
* @param firstName String
* @return Person object if found, null if not found
*/
private Person searchPerson(String firstName){
Person searchPerson = new Person();
searchPerson.setFirstName(firstName);
return searchPerson(searchPerson);
}

/***
* Updates a person in the database
* @param original Entry of person object in database
* @param toUpdate Person object with updated information
* @return Updated object if found, null if not found
*/
public Person update(Person original, Person toUpdate) {
// https://thorben-janssen.com/spring-data-findbyid-getone-getbyid-and-findone/


Person searchedPerson = searchPerson(original);
// if search is valid, then update.
if (searchedPerson!=null) {
searchedPerson.setFirstName(toUpdate.getFirstName());
searchedPerson.setLastName(toUpdate.getLastName());
return personRepository.save(searchedPerson);
}
return null;
}

/***
* Deletes a person in the database
* @param toDelete Person object to delete
* @return Deleted object if found, null if not found
*/
public Person delete(Person toDelete){
Person searchedPerson = searchPerson(toDelete);
// if search is valid, then delete.
if (searchedPerson!=null) {
personRepository.delete(searchedPerson);
return new Person();
}
return null;
}

/***
* Searches for a person in the database by first name
* @param firstName String
* @return Searched Person object if found, null if not found
*/
public Person searchPersonFirstName(String firstName){
return searchPerson(firstName);
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified backend/target/fsbackend-0.0.1-SNAPSHOT.jar
Binary file not shown.
Binary file modified backend/target/fsbackend-0.0.1-SNAPSHOT.jar.original
Binary file not shown.
Binary file modified backend/target/fsbackend.db.mv.db
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
org/sailplatform/fsbackend/FsbackendApplication.class
org/sailplatform/fsbackend/repository/PersonRepository.class
org/sailplatform/fsbackend/controller/PersonController.class
org/sailplatform/fsbackend/model/Person.class
org/sailplatform/fsbackend/service/PersonService.class
org\sailplatform\fsbackend\controller\PersonController.class
org\sailplatform\fsbackend\repository\PersonRepository.class
org\sailplatform\fsbackend\FsbackendApplication.class
org\sailplatform\fsbackend\service\PersonService.class
org\sailplatform\fsbackend\model\PersonUpdate.class
org\sailplatform\fsbackend\model\Person.class
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
/Users/divyaprem/Documents/fullstack-interview/backend/src/main/java/org/sailplatform/fsbackend/FsbackendApplication.java
/Users/divyaprem/Documents/fullstack-interview/backend/src/main/java/org/sailplatform/fsbackend/model/Person.java
/Users/divyaprem/Documents/fullstack-interview/backend/src/main/java/org/sailplatform/fsbackend/service/PersonService.java
/Users/divyaprem/Documents/fullstack-interview/backend/src/main/java/org/sailplatform/fsbackend/repository/PersonRepository.java
/Users/divyaprem/Documents/fullstack-interview/backend/src/main/java/org/sailplatform/fsbackend/controller/PersonController.java
D:\GitHub\teel-lab\backend\src\main\java\org\sailplatform\fsbackend\service\PersonService.java
D:\GitHub\teel-lab\backend\src\main\java\org\sailplatform\fsbackend\controller\PersonController.java
D:\GitHub\teel-lab\backend\src\main\java\org\sailplatform\fsbackend\model\Person.java
D:\GitHub\teel-lab\backend\src\main\java\org\sailplatform\fsbackend\model\PersonUpdate.java
D:\GitHub\teel-lab\backend\src\main\java\org\sailplatform\fsbackend\repository\PersonRepository.java
D:\GitHub\teel-lab\backend\src\main\java\org\sailplatform\fsbackend\FsbackendApplication.java
Original file line number Diff line number Diff line change
@@ -1 +1 @@
org/sailplatform/fsbackend/FsbackendApplicationTests.class
org\sailplatform\fsbackend\FsbackendApplicationTests.class
Original file line number Diff line number Diff line change
@@ -1 +1 @@
/Users/divyaprem/Documents/fullstack-interview/backend/src/test/java/org/sailplatform/fsbackend/FsbackendApplicationTests.java
D:\GitHub\teel-lab\backend\src\test\java\org\sailplatform\fsbackend\FsbackendApplicationTests.java

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
-------------------------------------------------------------------------------
Test set: org.sailplatform.fsbackend.FsbackendApplicationTests
-------------------------------------------------------------------------------
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.366 s - in org.sailplatform.fsbackend.FsbackendApplicationTests
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.266 s - in org.sailplatform.fsbackend.FsbackendApplicationTests
Binary file not shown.
Loading