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 { }