diff --git a/Backend/build.gradle.kts b/Backend/build.gradle.kts index a147e2d..90f0403 100644 --- a/Backend/build.gradle.kts +++ b/Backend/build.gradle.kts @@ -5,7 +5,7 @@ plugins { id("io.spring.dependency-management") version "1.0.10.RELEASE" kotlin("jvm") version "1.4.21" kotlin("plugin.spring") version "1.4.21" - kotlin("plugin.jpa") version "1.4.21" + // kotlin("plugin.jpa") version "1.4.21" } group = "org.hydev.ios" @@ -17,16 +17,20 @@ repositories { } dependencies { - implementation("org.springframework.boot:spring-boot-starter-data-jpa") implementation("org.springframework.boot:spring-boot-starter-web") implementation("com.fasterxml.jackson.module:jackson-module-kotlin") implementation("org.jetbrains.kotlin:kotlin-reflect") implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8") - runtimeOnly("org.mariadb.jdbc:mariadb-java-client") testImplementation("org.springframework.boot:spring-boot-starter-test") - - // https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-validation implementation("org.springframework.boot", "spring-boot-starter-validation", "2.4.1") + + // MongoDB + implementation(group = "org.springframework.data", name = "spring-data-mongodb", version = "3.1.2") + implementation(group = "org.springframework.boot", name = "spring-boot-starter-data-mongodb") + + // MariaDB + // implementation("org.springframework.boot:spring-boot-starter-data-jpa") + // runtimeOnly("org.mariadb.jdbc:mariadb-java-client") } tasks.withType { diff --git a/Backend/src/main/kotlin/org/hydev/ios/alarmclock/AlarmClockApplication.kt b/Backend/src/main/kotlin/org/hydev/ios/alarmclock/AlarmClockApplication.kt index c0c5a74..c525f1d 100644 --- a/Backend/src/main/kotlin/org/hydev/ios/alarmclock/AlarmClockApplication.kt +++ b/Backend/src/main/kotlin/org/hydev/ios/alarmclock/AlarmClockApplication.kt @@ -1,9 +1,12 @@ package org.hydev.ios.alarmclock +import org.hydev.ios.alarmclock.data.UserRepo import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.boot.runApplication +import org.springframework.data.mongodb.repository.config.EnableMongoRepositories @SpringBootApplication +@EnableMongoRepositories(basePackageClasses = [UserRepo::class]) class AlarmClockApplication fun main(args: Array) diff --git a/Backend/src/main/kotlin/org/hydev/ios/alarmclock/data/Test.kt b/Backend/src/main/kotlin/org/hydev/ios/alarmclock/data/Test.kt new file mode 100644 index 0000000..e4c83de --- /dev/null +++ b/Backend/src/main/kotlin/org/hydev/ios/alarmclock/data/Test.kt @@ -0,0 +1,21 @@ +package org.hydev.ios.alarmclock.data + +import org.springframework.web.bind.annotation.GetMapping +import org.springframework.web.bind.annotation.RequestMapping +import org.springframework.web.bind.annotation.RestController + +/** + * TODO: Write a description for this class! + * + * @author HyDEV Team (https://github.com/HyDevelop) + * @author Hykilpikonna (https://github.com/hykilpikonna) + * @author Vanilla (https://github.com/VergeDX) + * @since 2021-01-12 09:28 + */ +@RestController +@RequestMapping("/api") +class Test +{ + @GetMapping("/echo") + fun echo(message: String?) = message +} diff --git a/Backend/src/main/kotlin/org/hydev/ios/alarmclock/data/User.kt b/Backend/src/main/kotlin/org/hydev/ios/alarmclock/data/User.kt index 09337ac..34545e5 100644 --- a/Backend/src/main/kotlin/org/hydev/ios/alarmclock/data/User.kt +++ b/Backend/src/main/kotlin/org/hydev/ios/alarmclock/data/User.kt @@ -2,17 +2,18 @@ package org.hydev.ios.alarmclock.data import org.hydev.ios.alarmclock.bad import org.hydev.ios.alarmclock.passwordHash +import org.springframework.data.annotation.Id import org.springframework.data.domain.Example import org.springframework.data.domain.ExampleMatcher import org.springframework.data.domain.ExampleMatcher.GenericPropertyMatchers.ignoreCase -import org.springframework.data.jpa.repository.JpaRepository +import org.springframework.data.mongodb.core.index.Indexed +import org.springframework.data.mongodb.core.mapping.Document +import org.springframework.data.mongodb.repository.MongoRepository import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RequestParam import org.springframework.web.bind.annotation.RestController -import javax.persistence.* import javax.validation.constraints.Email -import javax.validation.constraints.NotNull /** * The database model for an user @@ -22,21 +23,18 @@ import javax.validation.constraints.NotNull * @author Vanilla (https://github.com/VergeDX) * @since 2021-01-09 10:48 */ -@Entity +@Document(collation = "user") data class User( - @Id @GeneratedValue(strategy = GenerationType.IDENTITY) + @Id var id: Long = 0, - @NotNull @Column(length = 32) var name: String, - @NotNull @Column(length = 256) + @Indexed(unique = true) var email: String, - @NotNull @Column(length = 100) var passHash: String = "", - @NotNull @Column(length = 32) var passSalt: String = "" ) { @@ -48,7 +46,7 @@ data class User( } } -interface UserRepo: JpaRepository +interface UserRepo: MongoRepository @RestController @RequestMapping("/api/user") diff --git a/Backend/src/main/resources/application.properties b/Backend/src/main/resources/application.properties index 88f3e57..703e479 100644 --- a/Backend/src/main/resources/application.properties +++ b/Backend/src/main/resources/application.properties @@ -1,6 +1,9 @@ -spring.datasource.url=jdbc:mariadb://192.168.0.22:3306/clock -spring.datasource.username=root -spring.datasource.password=Yay, you found my database password. You're the best hacker in the world. -spring.datasource.driver-class-name=org.mariadb.jdbc.Driver -spring.jpa.hibernate.ddl-auto=update +#spring.datasource.url=jdbc:mariadb://192.168.0.22:3306/clock +#spring.datasource.username=root +#spring.datasource.password= +#spring.datasource.driver-class-name=org.mariadb.jdbc.Driver +#spring.jpa.hibernate.ddl-auto=update + +spring.data.mongodb.uri=mongodb://hykilp:@192.168.0.22:27017/?authSource=admin&retryWrites=true +spring.data.mongodb.database=clock