diff --git a/src/main/kotlin/Models.kt b/src/main/kotlin/Models.kt index 7beb431..edc2599 100644 --- a/src/main/kotlin/Models.kt +++ b/src/main/kotlin/Models.kt @@ -1,10 +1,7 @@ package dev.thebread -import dev.thebread.Model.PreparedStatementCase -import dev.thebread.Models.Stage import java.sql.PreparedStatement import java.sql.ResultSet -import java.time.LocalDate import java.util.Date @@ -28,9 +25,6 @@ abstract class Model> { fun assureStatements(): Map { return stmts!! } - fun setStatements(stmts: Map) { - Common.stmts = stmts - } abstract fun get(id: Int): T? abstract fun getAll(): Set abstract fun create(): T @@ -72,19 +66,20 @@ class Models { override fun create(): User { val stmt = assureStatements()[PreparedStatementCase.ADD_USER]!! stmt.setString(1, this.name) - if(this.local != null) stmt.setInt(2, this.local!!) - if(this.discord != null) stmt.setInt(3, this.discord!!) - if(this.google != null) stmt.setInt(4, this.google!!) + if(this.local != -1) stmt.setInt(2, this.local) + if(this.discord != -1) stmt.setInt(3, this.discord) + if(this.google != -1) stmt.setInt(4, this.google) val result = stmt.executeQuery() val user = User(result) stmt.clearParameters() + this.id = user.id return user } } class List() : Model() { lateinit var name: String - lateinit var description: String + var description: String? = null constructor(result: ResultSet) : this() { this.id = result.getInt("id") @@ -121,7 +116,7 @@ class Models { class Stage() : Model() { lateinit var name: String - lateinit var description: String + var description: String? = null var list: List? = null constructor(result: ResultSet) : this() { @@ -164,7 +159,7 @@ class Models { class Task() : Model() { lateinit var name: String - lateinit var description: String + var description: String? = null var stage: Stage? = null var due: Date? = null var dueStage: Stage? = null diff --git a/src/main/resources/prepare/add_stage.sql b/src/main/resources/prepare/add_stage.sql index 2704f3e..3e630f9 100644 --- a/src/main/resources/prepare/add_stage.sql +++ b/src/main/resources/prepare/add_stage.sql @@ -1,2 +1,2 @@ insert into task_stages -values (?1, ?2, ?3) \ No newline at end of file +values (?1, ?2, ?3); \ No newline at end of file diff --git a/src/main/resources/prepare/cleanup.sql b/src/main/resources/prepare/cleanup.sql index e69de29..1c8a0e7 100644 --- a/src/main/resources/prepare/cleanup.sql +++ b/src/main/resources/prepare/cleanup.sql @@ -0,0 +1 @@ +; \ No newline at end of file diff --git a/src/main/resources/prepare/get_list_for_user.sql b/src/main/resources/prepare/get_list_for_user.sql index e69de29..1c8a0e7 100644 --- a/src/main/resources/prepare/get_list_for_user.sql +++ b/src/main/resources/prepare/get_list_for_user.sql @@ -0,0 +1 @@ +; \ No newline at end of file diff --git a/src/main/resources/prepare/move_task_to_stage.sql b/src/main/resources/prepare/move_task_to_stage.sql index b18e4a4..56aa6ca 100644 --- a/src/main/resources/prepare/move_task_to_stage.sql +++ b/src/main/resources/prepare/move_task_to_stage.sql @@ -1,3 +1,3 @@ update tasks set stage = ?1 -where id = ?2 \ No newline at end of file +where id = ?2; \ No newline at end of file diff --git a/src/main/resources/prepare/remove_task.sql b/src/main/resources/prepare/remove_task.sql index e69de29..1c8a0e7 100644 --- a/src/main/resources/prepare/remove_task.sql +++ b/src/main/resources/prepare/remove_task.sql @@ -0,0 +1 @@ +; \ No newline at end of file diff --git a/src/main/resources/prepare/remove_user.sql b/src/main/resources/prepare/remove_user.sql index e69de29..1c8a0e7 100644 --- a/src/main/resources/prepare/remove_user.sql +++ b/src/main/resources/prepare/remove_user.sql @@ -0,0 +1 @@ +; \ No newline at end of file diff --git a/src/test/kotlin/CliTests.kt b/src/test/kotlin/CliTests.kt new file mode 100644 index 0000000..ce3b157 --- /dev/null +++ b/src/test/kotlin/CliTests.kt @@ -0,0 +1,3 @@ +class CliTests { + +} \ No newline at end of file diff --git a/src/test/kotlin/DatabaseTests.kt b/src/test/kotlin/DatabaseTests.kt index dab0e46..9bc0104 100644 --- a/src/test/kotlin/DatabaseTests.kt +++ b/src/test/kotlin/DatabaseTests.kt @@ -1,10 +1,42 @@ -import org.junit.jupiter.api.*; - -import dev.thebread.KlistApp; +import dev.thebread.Model +import dev.thebread.Model.PreparedStatementCase +import dev.thebread.Models import org.junit.jupiter.api.Test; -import java.sql.Connection; +import org.junit.jupiter.api.BeforeEach; +import java.sql.DriverManager +import kotlin.test.assertTrue class DatabaseTests { - private val app : KlistApp = KlistApp(null); + + @BeforeEach + fun setup() { + val conn = DriverManager.getConnection("jdbc:sqlite::memory:") + + val initSql = javaClass.getResource("/init.sql")!!.readText() + conn.createStatement().executeUpdate(initSql) + + Model.Common.stmts = PreparedStatementCase.entries.associateWith { case -> + conn.prepareStatement( + javaClass.getResource("/prepare/${ + case.toString().lowercase() + }.sql")!!.readText() + ) + } + } + + @Test + fun createUser() { + val user = Models.User() + user.name = "test" + user.create() + assertTrue { user.id != -1 && user.id != null } + val r = Models.User().get(user.id!!) + assertTrue { r != null && r.id != null && r.name == user.name } + } + + @Test + fun getUser() { + val user = Models.User().getAll() + } } \ No newline at end of file