diff --git a/pandamonium-theorem-prover/persistence/build.gradle b/pandamonium-theorem-prover/persistence/build.gradle index d12ca47..531bfff 100644 --- a/pandamonium-theorem-prover/persistence/build.gradle +++ b/pandamonium-theorem-prover/persistence/build.gradle @@ -21,6 +21,8 @@ dependencies { compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '2.0.5.RELEASE' compile group: 'org.springframework', name: 'spring-aspects', version: '5.1.5.RELEASE' compile group: 'org.hibernate', name: 'hibernate-core', version: '5.4.1.Final' + compile group: 'com.vladmihalcea', name: 'hibernate-types-52', version: '2.4.1' + compile fileTree(dir: 'lib', include: '**/*.jar') diff --git a/pandamonium-theorem-prover/persistence/src/main/java/edu/msudenver/tsp/persistence/controller/AccountController.java b/pandamonium-theorem-prover/persistence/src/main/java/edu/msudenver/tsp/persistence/controller/AccountController.java new file mode 100644 index 0000000..8404acb --- /dev/null +++ b/pandamonium-theorem-prover/persistence/src/main/java/edu/msudenver/tsp/persistence/controller/AccountController.java @@ -0,0 +1,26 @@ +package edu.msudenver.tsp.persistence.controller; + +import edu.msudenver.tsp.persistence.dto.AccountsDto; +import edu.msudenver.tsp.persistence.repository.AccountsRepository; +import lombok.AllArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.Optional; + +@RestController +@AllArgsConstructor +@RequestMapping("/accounts") +public class AccountController { + private final AccountsRepository accountsRepository; + + @GetMapping("/") + public @ResponseBody Iterable getListOfAccounts() { + return accountsRepository.findAll(); + } + + @GetMapping("/{id}") + public @ResponseBody + Optional getAccountById(@PathVariable("id") final Integer id) { + return accountsRepository.findById(id); + } +} diff --git a/pandamonium-theorem-prover/persistence/src/main/java/edu/msudenver/tsp/persistence/dto/AccountsDto.java b/pandamonium-theorem-prover/persistence/src/main/java/edu/msudenver/tsp/persistence/dto/AccountsDto.java new file mode 100644 index 0000000..6d689a5 --- /dev/null +++ b/pandamonium-theorem-prover/persistence/src/main/java/edu/msudenver/tsp/persistence/dto/AccountsDto.java @@ -0,0 +1,28 @@ +package edu.msudenver.tsp.persistence.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import javax.persistence.Entity; +import javax.persistence.EntityListeners; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import java.io.Serializable; +import java.util.Date; + +@Entity(name = "accounts") +@EntityListeners(AuditingEntityListener.class) +@Data +@EqualsAndHashCode(callSuper = true) +public class AccountsDto extends BaseDto implements Serializable { + @Size(max = 50) private String username; + @Size(max = 256) private String password; + @NotNull @JsonProperty("administrator_status") private boolean administratorStatus; + @Temporal(TemporalType.DATE) @JsonProperty("last_login") private Date lastLogin; + + public static final long serialVersionUID = 7095627971593953734L; +} diff --git a/pandamonium-theorem-prover/persistence/src/main/java/edu/msudenver/tsp/persistence/dto/BaseDto.java b/pandamonium-theorem-prover/persistence/src/main/java/edu/msudenver/tsp/persistence/dto/BaseDto.java index 12ad524..f6fbdda 100644 --- a/pandamonium-theorem-prover/persistence/src/main/java/edu/msudenver/tsp/persistence/dto/BaseDto.java +++ b/pandamonium-theorem-prover/persistence/src/main/java/edu/msudenver/tsp/persistence/dto/BaseDto.java @@ -1,9 +1,17 @@ package edu.msudenver.tsp.persistence.dto; +import com.vladmihalcea.hibernate.type.array.IntArrayType; +import com.vladmihalcea.hibernate.type.array.StringArrayType; +import com.vladmihalcea.hibernate.type.json.JsonBinaryType; +import com.vladmihalcea.hibernate.type.json.JsonNodeBinaryType; +import com.vladmihalcea.hibernate.type.json.JsonNodeStringType; +import com.vladmihalcea.hibernate.type.json.JsonStringType; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import org.hibernate.annotations.TypeDef; +import org.hibernate.annotations.TypeDefs; import javax.persistence.*; @@ -12,10 +20,18 @@ import javax.persistence.*; @AllArgsConstructor @NoArgsConstructor(access = AccessLevel.PROTECTED) @MappedSuperclass +@TypeDefs({ + @TypeDef(name = "string-array", typeClass = StringArrayType.class), + @TypeDef(name = "int-array", typeClass = IntArrayType.class), + @TypeDef(name = "json", typeClass = JsonStringType.class), + @TypeDef(name = "jsonb", typeClass = JsonBinaryType.class), + @TypeDef(name = "jsonb-node", typeClass = JsonNodeBinaryType.class), + @TypeDef(name = "json-node", typeClass = JsonNodeStringType.class), +}) public class BaseDto { @Id @GeneratedValue(strategy = GenerationType.AUTO) Integer id; @Version - int version; + Integer version; } diff --git a/pandamonium-theorem-prover/persistence/src/main/java/edu/msudenver/tsp/persistence/dto/Definition.java b/pandamonium-theorem-prover/persistence/src/main/java/edu/msudenver/tsp/persistence/dto/Definition.java index 2f6e80e..e346772 100644 --- a/pandamonium-theorem-prover/persistence/src/main/java/edu/msudenver/tsp/persistence/dto/Definition.java +++ b/pandamonium-theorem-prover/persistence/src/main/java/edu/msudenver/tsp/persistence/dto/Definition.java @@ -1,6 +1,17 @@ package edu.msudenver.tsp.persistence.dto; -import java.io.Serializable; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import java.io.Serializable; +import java.util.List; + +@Getter +@Setter +@ToString public class Definition implements Serializable { + private List definitions; + + public static final long serialVersionUID = -2208496232532214840L; } diff --git a/pandamonium-theorem-prover/persistence/src/main/java/edu/msudenver/tsp/persistence/dto/DefinitionDto.java b/pandamonium-theorem-prover/persistence/src/main/java/edu/msudenver/tsp/persistence/dto/DefinitionDto.java index 1031cc7..196fd0c 100644 --- a/pandamonium-theorem-prover/persistence/src/main/java/edu/msudenver/tsp/persistence/dto/DefinitionDto.java +++ b/pandamonium-theorem-prover/persistence/src/main/java/edu/msudenver/tsp/persistence/dto/DefinitionDto.java @@ -2,8 +2,10 @@ package edu.msudenver.tsp.persistence.dto; import lombok.Data; import lombok.EqualsAndHashCode; +import org.hibernate.annotations.Type; import org.springframework.data.jpa.domain.support.AuditingEntityListener; +import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.EntityListeners; import javax.validation.constraints.Size; @@ -14,9 +16,9 @@ import java.io.Serializable; @Data @EqualsAndHashCode(callSuper = true) public class DefinitionDto extends BaseDto implements Serializable { - @Size(min = 1, max = 200, message = "Must be between 1 and 200 characters") String name; - Definition definition; - Notation notation; + @Size(min = 1, max = 200, message = "Must be between 1 and 200 characters") private String name; + @Type(type = "jsonb") @Column(columnDefinition = "jsonb") private Definition definition; + @Type(type = "jsonb") @Column(columnDefinition = "jsonb") private Notation notation; public static final long serialVersionUID = -5314619286352932857L; } diff --git a/pandamonium-theorem-prover/persistence/src/main/java/edu/msudenver/tsp/persistence/dto/Notation.java b/pandamonium-theorem-prover/persistence/src/main/java/edu/msudenver/tsp/persistence/dto/Notation.java index c5d43e0..0545f3c 100644 --- a/pandamonium-theorem-prover/persistence/src/main/java/edu/msudenver/tsp/persistence/dto/Notation.java +++ b/pandamonium-theorem-prover/persistence/src/main/java/edu/msudenver/tsp/persistence/dto/Notation.java @@ -1,6 +1,16 @@ package edu.msudenver.tsp.persistence.dto; -import java.io.Serializable; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import java.io.Serializable; +import java.util.List; + +@Getter +@Setter +@ToString public class Notation implements Serializable { + private List notations; + public static final long serialVersionUID = 2301438318932336121L; } diff --git a/pandamonium-theorem-prover/persistence/src/main/java/edu/msudenver/tsp/persistence/repository/AccountsRepository.java b/pandamonium-theorem-prover/persistence/src/main/java/edu/msudenver/tsp/persistence/repository/AccountsRepository.java new file mode 100644 index 0000000..a2d0704 --- /dev/null +++ b/pandamonium-theorem-prover/persistence/src/main/java/edu/msudenver/tsp/persistence/repository/AccountsRepository.java @@ -0,0 +1,9 @@ +package edu.msudenver.tsp.persistence.repository; + +import edu.msudenver.tsp.persistence.dto.AccountsDto; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface AccountsRepository extends JpaRepository { +} diff --git a/pandamonium-theorem-prover/persistence/src/main/java/edu/msudenver/tsp/persistence/repository/DefinitionRepository.java b/pandamonium-theorem-prover/persistence/src/main/java/edu/msudenver/tsp/persistence/repository/DefinitionRepository.java index 4559155..45fee17 100644 --- a/pandamonium-theorem-prover/persistence/src/main/java/edu/msudenver/tsp/persistence/repository/DefinitionRepository.java +++ b/pandamonium-theorem-prover/persistence/src/main/java/edu/msudenver/tsp/persistence/repository/DefinitionRepository.java @@ -1,7 +1,6 @@ package edu.msudenver.tsp.persistence.repository; -import edu.msudenver.tsp.persistence.dto.Definition; import edu.msudenver.tsp.persistence.dto.DefinitionDto; import edu.msudenver.tsp.persistence.dto.Notation; import org.springframework.data.jpa.repository.JpaRepository; @@ -12,7 +11,7 @@ public interface DefinitionRepository extends JpaRepository