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
import de.tobias.playpad.server.project.{Design, Pad, Page, Project}
import de.tobias.playpad.server.server.account._
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.transformer.JsonTransformer
import spark.Spark._
......@@ -62,6 +62,8 @@ object PlayPadServer extends App {
// Project
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
get("/plugins/:id", new PluginGet(pluginDao), new JsonTransformer)
......
......@@ -35,4 +35,26 @@ class ProjectLoader {
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
import java.sql.Connection
import java.util.UUID
import de.tobias.playpad.server.project.Project
import de.tobias.playpad.server.project.utils.SqlDef._
......@@ -17,4 +18,7 @@ class ProjectSaver {
val pageSaver = new PageSaver
project.pages.foreach(pageSaver.save(connection, _))
}
def delete(connection: Connection, project: UUID): Unit = {
SqlHelper.delete(connection, PROJECT, project)
}
}
......@@ -23,7 +23,7 @@ object SqlHelper {
}
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)
value match {
......@@ -48,6 +48,22 @@ object SqlHelper {
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 createTable(sql: String) = {
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