From a6ed0a6f02068c10939010a614027ca3be6a75a0 Mon Sep 17 00:00:00 2001 From: Mikayla Dobson <93477693+innocuous-symmetry@users.noreply.github.com> Date: Wed, 25 Jan 2023 16:56:10 -0600 Subject: [PATCH] post and get on user table --- pom.xml | 6 ++ .../DataSourceConfig.java | 2 +- .../recipin/config/SpringFoxConfig.java | 20 +++++ .../recipin/controllers/RecipeController.java | 35 ++++++++ .../recipin/controllers/UserController.java | 23 ++++- .../recipin/models/Recipe.java | 13 +-- .../recipin/models/User.java | 86 ++++++++++++++++--- .../recipin/repositories/DBSeed.java | 11 --- .../repositories/RecipeRepository.java | 6 ++ .../recipin/repositories/UserRepository.java | 4 +- 10 files changed, 168 insertions(+), 38 deletions(-) rename src/main/java/com/innocuoussymmetry/recipin/{repositories => config}/DataSourceConfig.java (93%) create mode 100644 src/main/java/com/innocuoussymmetry/recipin/config/SpringFoxConfig.java create mode 100644 src/main/java/com/innocuoussymmetry/recipin/controllers/RecipeController.java create mode 100644 src/main/java/com/innocuoussymmetry/recipin/repositories/RecipeRepository.java diff --git a/pom.xml b/pom.xml index 0b020a5..68f997c 100644 --- a/pom.xml +++ b/pom.xml @@ -41,6 +41,12 @@ spring-boot-starter-test test + + + io.springfox + springfox-boot-starter + 3.0.0 + diff --git a/src/main/java/com/innocuoussymmetry/recipin/repositories/DataSourceConfig.java b/src/main/java/com/innocuoussymmetry/recipin/config/DataSourceConfig.java similarity index 93% rename from src/main/java/com/innocuoussymmetry/recipin/repositories/DataSourceConfig.java rename to src/main/java/com/innocuoussymmetry/recipin/config/DataSourceConfig.java index 64f2cc9..01c9772 100644 --- a/src/main/java/com/innocuoussymmetry/recipin/repositories/DataSourceConfig.java +++ b/src/main/java/com/innocuoussymmetry/recipin/config/DataSourceConfig.java @@ -1,4 +1,4 @@ -package com.innocuoussymmetry.recipin.repositories; +package com.innocuoussymmetry.recipin.config; import org.springframework.boot.jdbc.DataSourceBuilder; import org.springframework.context.annotation.Bean; diff --git a/src/main/java/com/innocuoussymmetry/recipin/config/SpringFoxConfig.java b/src/main/java/com/innocuoussymmetry/recipin/config/SpringFoxConfig.java new file mode 100644 index 0000000..07fe4e6 --- /dev/null +++ b/src/main/java/com/innocuoussymmetry/recipin/config/SpringFoxConfig.java @@ -0,0 +1,20 @@ +package com.innocuoussymmetry.recipin.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.spi.DocumentationType; + +@Configuration +public class SpringFoxConfig { + @Bean + public Docket api() { + return new Docket(DocumentationType.SWAGGER_2) + .select() + .apis(RequestHandlerSelectors.any()) + .paths(PathSelectors.any()) + .build(); + } +} diff --git a/src/main/java/com/innocuoussymmetry/recipin/controllers/RecipeController.java b/src/main/java/com/innocuoussymmetry/recipin/controllers/RecipeController.java new file mode 100644 index 0000000..8bb3851 --- /dev/null +++ b/src/main/java/com/innocuoussymmetry/recipin/controllers/RecipeController.java @@ -0,0 +1,35 @@ +package com.innocuoussymmetry.recipin.controllers; + +import com.innocuoussymmetry.recipin.models.Recipe; +import com.innocuoussymmetry.recipin.repositories.RecipeRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Optional; + +@RestController +@RequestMapping("/recipe") +public class RecipeController { + private final RecipeRepository recipeRepository; + + @Autowired + public RecipeController(RecipeRepository repository) { + this.recipeRepository = repository; + } + + @GetMapping() + public Iterable getAllRecipes() { + return this.recipeRepository.findAll(); + } + + @GetMapping("/{id}") + public Recipe getRecipeById(@PathVariable Integer id) { + Optional recipe = this.recipeRepository.findById(id); + return recipe.orElse(null); + } + + @PostMapping() + public Recipe addNewRecipe(@RequestBody Recipe recipe) { + return this.recipeRepository.save(recipe); + } +} diff --git a/src/main/java/com/innocuoussymmetry/recipin/controllers/UserController.java b/src/main/java/com/innocuoussymmetry/recipin/controllers/UserController.java index 7bca9c1..9de4a11 100644 --- a/src/main/java/com/innocuoussymmetry/recipin/controllers/UserController.java +++ b/src/main/java/com/innocuoussymmetry/recipin/controllers/UserController.java @@ -3,9 +3,8 @@ package com.innocuoussymmetry.recipin.controllers; import com.innocuoussymmetry.recipin.models.User; import com.innocuoussymmetry.recipin.repositories.UserRepository; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Bean; import org.springframework.web.bind.annotation.*; - +import java.util.Map; import java.util.Optional; @RestController @@ -24,7 +23,7 @@ public class UserController { } @GetMapping("/{id}") - public User getUserById(Integer id) { + public User getUserById(@PathVariable Integer id) { Optional maybe = userRepository.findById(id); if (maybe.isEmpty()) { return null; @@ -32,4 +31,22 @@ public class UserController { return maybe.get(); } + + @PutMapping("/{id}") + public User updateUserById(@PathVariable Integer id, @RequestBody Map updates) { + Optional maybe = userRepository.findById(id); + + if (maybe.isEmpty()) { + return null; + } + + User updatedUser = maybe.get(); + return new User(updates); + } + + @PostMapping() + public User addNewUser(@RequestBody Map user) { + User newUser = new User(user); + return userRepository.save(newUser); + } } diff --git a/src/main/java/com/innocuoussymmetry/recipin/models/Recipe.java b/src/main/java/com/innocuoussymmetry/recipin/models/Recipe.java index cc3078e..9bba563 100644 --- a/src/main/java/com/innocuoussymmetry/recipin/models/Recipe.java +++ b/src/main/java/com/innocuoussymmetry/recipin/models/Recipe.java @@ -2,6 +2,8 @@ package com.innocuoussymmetry.recipin.models; import jakarta.persistence.*; import java.util.List; + +@Entity @Table(name="recipe") public class Recipe { @Id @@ -21,9 +23,6 @@ public class Recipe { @Column(name="description") private String description; - @Column(name="ingredientnames") - private List ingredientNames; - public String getName() { return this.name; } @@ -55,12 +54,4 @@ public class Recipe { public void setDescription(String description) { this.description = description; } - - public List getIngredientNames() { - return this.ingredientNames; - } - - public void setIngredientNames(List ingredientNames) { - this.ingredientNames = ingredientNames; - } } \ No newline at end of file diff --git a/src/main/java/com/innocuoussymmetry/recipin/models/User.java b/src/main/java/com/innocuoussymmetry/recipin/models/User.java index dd1d5eb..8a65ec0 100644 --- a/src/main/java/com/innocuoussymmetry/recipin/models/User.java +++ b/src/main/java/com/innocuoussymmetry/recipin/models/User.java @@ -2,8 +2,11 @@ package com.innocuoussymmetry.recipin.models; import jakarta.persistence.*; +import java.util.Date; +import java.util.Map; + @Entity -@Table(name="users") +@Table(name="appusers") public class User { @Id @Column(name="id") @@ -11,10 +14,10 @@ public class User { private Integer id; @Column(name="firstname") - private String firstName; + private String firstname; @Column(name="lastname") - private String lastName; + private String lastname; @Column(name="handle") private String handle; @@ -23,25 +26,63 @@ public class User { private String email; @Column(name="isadmin") - private boolean isAdmin; + private Boolean isadmin; @Column(name="password") private String password; + @Column(name="active") + private Boolean active; + + @Column(name="datecreated") + private Date datecreated; + + @Column(name="datemodified") + private Date datemodified; + + public User() { + this.datecreated = new Date(); + this.datemodified = new Date(); + } + + public User(Map user) { + this.firstname = user.get("firstname"); + this.lastname = user.get("lastname"); + this.email = user.get("email"); + this.handle = user.get("handle"); + this.isadmin = Boolean.getBoolean(user.get("isadmin")); + this.password = user.get("password"); + this.active = Boolean.getBoolean(user.get("active")); + this.datecreated = (user.get("datecreated") != null) ? new Date(user.get("datecreated")) : new Date(); + this.datemodified = (user.get("datemodified") != null) ? new Date(user.get("datemodified")) : new Date(); + } + + public User(String firstname, String lastname, String email, String handle, Boolean isadmin, String password, Boolean active) { + this.firstname = firstname; + this.lastname = lastname; + this.email = email; + this.handle = handle; + this.isadmin = isadmin; + this.password = password; + this.active = active; + this.datecreated = new Date(); + this.datemodified = new Date(); + } + public String getFirstName() { - return firstName; + return firstname; } public void setFirstName(String name) { - this.firstName = name; + this.firstname = name; } public String getLastName() { - return lastName; + return lastname; } public void setLastName(String name) { - this.lastName = name; + this.lastname = name; } public String getHandle() { @@ -60,12 +101,16 @@ public class User { this.email = email; } + public boolean getIsActive() { return active; } + + public void setIsActive(boolean active) { this.active = active; } + public boolean getIsAdmin() { - return isAdmin; + return isadmin; } public void setIsAdmin(boolean isAdmin) { - this.isAdmin = isAdmin; + this.isadmin = isAdmin; } public String getPassword() { @@ -75,4 +120,25 @@ public class User { public void setPassword(String password) { this.password = password; } + + public Date getDatecreated() { + return datecreated; + } + + public void setDatecreated(Date datecreated) { + this.datecreated = datecreated; + } + + public Date getDatemodified() { + return datemodified; + } + + public void setDatemodified(Date datemodified) { + this.datemodified = datemodified; + } + + @Override + public String toString() { + return "Email: " + this.email + " firstname: " + this.firstname + " lastname: " + this.lastname + " handle: " + this.handle + " password: " + this.password; + } } \ No newline at end of file diff --git a/src/main/java/com/innocuoussymmetry/recipin/repositories/DBSeed.java b/src/main/java/com/innocuoussymmetry/recipin/repositories/DBSeed.java index 628ab6e..280db30 100644 --- a/src/main/java/com/innocuoussymmetry/recipin/repositories/DBSeed.java +++ b/src/main/java/com/innocuoussymmetry/recipin/repositories/DBSeed.java @@ -1,21 +1,10 @@ package com.innocuoussymmetry.recipin.repositories; -import org.hibernate.cfg.Environment; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.PropertySource; -import org.springframework.stereotype.Component; - import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.sql.*; -import java.awt.EventQueue; -import java.util.stream.Stream; -@Configuration -@PropertySource("classpath:/resources/app.properties") public class DBSeed { private String constring; private Connection conn; diff --git a/src/main/java/com/innocuoussymmetry/recipin/repositories/RecipeRepository.java b/src/main/java/com/innocuoussymmetry/recipin/repositories/RecipeRepository.java new file mode 100644 index 0000000..e26e86a --- /dev/null +++ b/src/main/java/com/innocuoussymmetry/recipin/repositories/RecipeRepository.java @@ -0,0 +1,6 @@ +package com.innocuoussymmetry.recipin.repositories; + +import com.innocuoussymmetry.recipin.models.Recipe; +import org.springframework.data.repository.CrudRepository; + +public interface RecipeRepository extends CrudRepository { } diff --git a/src/main/java/com/innocuoussymmetry/recipin/repositories/UserRepository.java b/src/main/java/com/innocuoussymmetry/recipin/repositories/UserRepository.java index 5c99bd5..898500d 100644 --- a/src/main/java/com/innocuoussymmetry/recipin/repositories/UserRepository.java +++ b/src/main/java/com/innocuoussymmetry/recipin/repositories/UserRepository.java @@ -2,6 +2,6 @@ package com.innocuoussymmetry.recipin.repositories; import com.innocuoussymmetry.recipin.models.*; import org.springframework.data.repository.CrudRepository; +import org.springframework.web.bind.annotation.RequestBody; -public interface UserRepository extends CrudRepository { -} +public interface UserRepository extends CrudRepository { }