Skip to content
Snippets Groups Projects
Commit 206bc7cb authored by Tobias Ullerich's avatar Tobias Ullerich
Browse files

Add project delete

parent 0a616821
No related branches found
No related tags found
No related merge requests found
...@@ -12,7 +12,7 @@ import de.tobias.playpad.server.plugin.Plugin ...@@ -12,7 +12,7 @@ import de.tobias.playpad.server.plugin.Plugin
import de.tobias.playpad.server.project.{Design, Pad, Page, Project} import de.tobias.playpad.server.project.{Design, Pad, Page, Project}
import de.tobias.playpad.server.server.account._ import de.tobias.playpad.server.server.account._
import de.tobias.playpad.server.server.plugin.{PluginGet, PluginList} import de.tobias.playpad.server.server.plugin.{PluginGet, PluginList}
import de.tobias.playpad.server.server.project.{ProjectGet, ProjectHandler} import de.tobias.playpad.server.server.project._
import de.tobias.playpad.server.settings.SettingsHandler import de.tobias.playpad.server.settings.SettingsHandler
import de.tobias.playpad.server.transformer.JsonTransformer import de.tobias.playpad.server.transformer.JsonTransformer
import spark.Spark._ import spark.Spark._
...@@ -62,6 +62,8 @@ object PlayPadServer extends App { ...@@ -62,6 +62,8 @@ object PlayPadServer extends App {
// Project // Project
get("/projects", new ProjectGet(databaseConnection, sessionDao), new JsonTransformer) get("/projects", new ProjectGet(databaseConnection, sessionDao), new JsonTransformer)
post("/projects", new ProjectPost(databaseConnection, sessionDao), new JsonTransformer)
delete("/projects", new ProjectDelete(databaseConnection, sessionDao), new JsonTransformer)
// Plugins // Plugins
get("/plugins/:id", new PluginGet(pluginDao), new JsonTransformer) get("/plugins/:id", new PluginGet(pluginDao), new JsonTransformer)
......
...@@ -35,4 +35,26 @@ class ProjectLoader { ...@@ -35,4 +35,26 @@ class ProjectLoader {
projects projects
} }
def getAccountId(connection: Connection, id: UUID): Int = {
val sql = s"SELECT account_id FROM $PROJECT WHERE $PROJECT_ID = ?"
val preparedStatement = connection.prepareStatement(sql)
preparedStatement.setString(1, id.toString)
val result = preparedStatement.executeQuery()
while (result.next()) {
val account_id = result.getInt(PROJECT_ACCOUNT_ID)
result.close()
preparedStatement.close()
return account_id
}
result.close()
preparedStatement.close()
-1
}
} }
package de.tobias.playpad.server.project.saver.sql package de.tobias.playpad.server.project.saver.sql
import java.sql.Connection import java.sql.Connection
import java.util.UUID
import de.tobias.playpad.server.project.Project import de.tobias.playpad.server.project.Project
import de.tobias.playpad.server.project.utils.SqlDef._ import de.tobias.playpad.server.project.utils.SqlDef._
...@@ -17,4 +18,7 @@ class ProjectSaver { ...@@ -17,4 +18,7 @@ class ProjectSaver {
val pageSaver = new PageSaver val pageSaver = new PageSaver
project.pages.foreach(pageSaver.save(connection, _)) project.pages.foreach(pageSaver.save(connection, _))
} }
def delete(connection: Connection, project: UUID): Unit = {
SqlHelper.delete(connection, PROJECT, project)
}
} }
...@@ -23,7 +23,7 @@ object SqlHelper { ...@@ -23,7 +23,7 @@ object SqlHelper {
} }
private def createQuery[T](connection: Connection, table: String, field: String, value: T): PreparedStatement = { private def createQuery[T](connection: Connection, table: String, field: String, value: T): PreparedStatement = {
val sql = "INSERT INTO %s (id, %s) VALUES(?, ?) ON DUPLICATE KEY UPDATE %s=?".format(table, field, field) val sql = s"INSERT INTO $table (id, $field) VALUES(?, ?) ON DUPLICATE KEY UPDATE $field=?"
val preparedStatement = connection.prepareStatement(sql) val preparedStatement = connection.prepareStatement(sql)
value match { value match {
...@@ -48,6 +48,22 @@ object SqlHelper { ...@@ -48,6 +48,22 @@ object SqlHelper {
preparedStatement preparedStatement
} }
def delete(connection: Connection, table: String, id: Int): Unit = {
val sql = s"DELETE FROM $table WHERE id = ?"
val preparedStatement = connection.prepareStatement(sql)
preparedStatement.setInt(1, id)
preparedStatement.execute()
preparedStatement.close()
}
def delete(connection: Connection, table: String, uuid: UUID): Unit = {
val sql = s"DELETE FROM $table WHERE id = ?"
val preparedStatement = connection.prepareStatement(sql)
preparedStatement.setString(1, uuid.toString)
preparedStatement.execute()
preparedStatement.close()
}
def createTables(connection: Connection): Unit = { def createTables(connection: Connection): Unit = {
def createTable(sql: String) = { def createTable(sql: String) = {
val preparedStatement = connection.prepareStatement(sql) val preparedStatement = connection.prepareStatement(sql)
......
package de.tobias.playpad.server.server.project
import java.sql.Connection
import java.util.UUID
import com.j256.ormlite.dao.Dao
import de.tobias.playpad.server.account.Session
import de.tobias.playpad.server.project.loader.sql.ProjectLoader
import de.tobias.playpad.server.project.saver.sql.ProjectSaver
import de.tobias.playpad.server.server.{Result, Status}
import spark.{Request, Response, Route}
/**
* Created by tobias on 17.02.17.
*/
class ProjectDelete(connection: Connection, sessionDao: Dao[Session, Int]) extends Route {
override def handle(request: Request, response: Response): AnyRef = {
val sessionKey = request.queryParams("session")
val session = Session.getSession(sessionKey, sessionDao)
session match {
case Some(s) =>
val projectId = UUID.fromString(request.queryParams("project"))
val projectLoader = new ProjectLoader
val account_id = projectLoader.getAccountId(connection, projectId)
if (account_id == s.getAccount.id) {
val projectSaver = new ProjectSaver
projectSaver.delete(connection, projectId)
return new Result(Status.OK, "added project")
}
new Result(Status.ERROR, "session mismatch")
case None =>
new Result(Status.ERROR, "session invalid")
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment