From 1bc65d745fd4b6dbc7754bb98748ea368ecb0c24 Mon Sep 17 00:00:00 2001 From: tobias <thinkdifferent055@gmail.com> Date: Sun, 19 Feb 2017 22:33:40 +0100 Subject: [PATCH] Add Project List Route --- .../tobias/playpad/server/PlayPadServer.scala | 3 +- .../tobias/playpad/server/project/Pad.scala | 1 - .../server/project/ProjectReference.scala | 13 ++++++ .../project/loader/sql/ProjectLoader.scala | 24 ++++++++++- .../server/server/project/ProjectList.scala | 43 +++++++++++++++++++ 5 files changed, 81 insertions(+), 3 deletions(-) create mode 100644 src/main/scala/de/tobias/playpad/server/project/ProjectReference.scala create mode 100644 src/main/scala/de/tobias/playpad/server/server/project/ProjectList.scala diff --git a/src/main/scala/de/tobias/playpad/server/PlayPadServer.scala b/src/main/scala/de/tobias/playpad/server/PlayPadServer.scala index 64bb096..1f4b24d 100644 --- a/src/main/scala/de/tobias/playpad/server/PlayPadServer.scala +++ b/src/main/scala/de/tobias/playpad/server/PlayPadServer.scala @@ -60,7 +60,8 @@ object PlayPadServer extends App { webSocket("/project", new ProjectSyncHandler(sessionDao, databaseConnection)) // Project - get("/projects", new ProjectGet(databaseConnection, sessionDao), new JsonTransformer) + get("/projects/:id", new ProjectGet(databaseConnection, sessionDao), new JsonTransformer) + get("/projects", new ProjectList(databaseConnection, sessionDao), new JsonTransformer) post("/projects", new ProjectPost(databaseConnection, sessionDao), new JsonTransformer) delete("/projects", new ProjectDelete(databaseConnection, sessionDao), new JsonTransformer) diff --git a/src/main/scala/de/tobias/playpad/server/project/Pad.scala b/src/main/scala/de/tobias/playpad/server/project/Pad.scala index d0a03da..009b866 100644 --- a/src/main/scala/de/tobias/playpad/server/project/Pad.scala +++ b/src/main/scala/de/tobias/playpad/server/project/Pad.scala @@ -13,6 +13,5 @@ class Pad() { var position: Int = _ var pageIndex: Int = _ - var design: Design = _ var page: Page = _ } diff --git a/src/main/scala/de/tobias/playpad/server/project/ProjectReference.scala b/src/main/scala/de/tobias/playpad/server/project/ProjectReference.scala new file mode 100644 index 0000000..469faaa --- /dev/null +++ b/src/main/scala/de/tobias/playpad/server/project/ProjectReference.scala @@ -0,0 +1,13 @@ +package de.tobias.playpad.server.project + +import java.util.UUID + +/** + * Created by tobias on 19.02.17. + */ +class ProjectReference { + + var id: UUID = UUID.randomUUID() + var name: String = _ + +} diff --git a/src/main/scala/de/tobias/playpad/server/project/loader/sql/ProjectLoader.scala b/src/main/scala/de/tobias/playpad/server/project/loader/sql/ProjectLoader.scala index 7504c62..4f7e823 100644 --- a/src/main/scala/de/tobias/playpad/server/project/loader/sql/ProjectLoader.scala +++ b/src/main/scala/de/tobias/playpad/server/project/loader/sql/ProjectLoader.scala @@ -3,7 +3,7 @@ package de.tobias.playpad.server.project.loader.sql import java.sql.Connection import java.util.UUID -import de.tobias.playpad.server.project.Project +import de.tobias.playpad.server.project.{Project, ProjectReference} import de.tobias.playpad.server.project.utils.SqlDef._ /** @@ -36,6 +36,28 @@ class ProjectLoader(val connection: Connection) { projects } + def list(accountId: Int): List[ProjectReference] = { + val sql = s"SELECT * FROM $PROJECT WHERE $PROJECT_ACCOUNT_ID = ?" + val preparedStatement = connection.prepareStatement(sql) + preparedStatement.setInt(1, accountId) + val result = preparedStatement.executeQuery() + + var projects: List[ProjectReference] = List() + + while (result.next()) { + val project = new ProjectReference() + project.id = UUID.fromString(result.getString(PROJECT_ID)) + project.name = result.getString(PROJECT_NAME) + + projects = project :: projects + } + + result.close() + preparedStatement.close() + + projects + } + def getAccountId(id: UUID): Int = { val sql = s"SELECT account_id FROM $PROJECT WHERE $PROJECT_ID = ?" diff --git a/src/main/scala/de/tobias/playpad/server/server/project/ProjectList.scala b/src/main/scala/de/tobias/playpad/server/server/project/ProjectList.scala new file mode 100644 index 0000000..99f506e --- /dev/null +++ b/src/main/scala/de/tobias/playpad/server/server/project/ProjectList.scala @@ -0,0 +1,43 @@ +package de.tobias.playpad.server.server.project + +import java.sql.Connection +import java.util.UUID + +import com.google.gson.{JsonArray, JsonObject} +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.json.ProjectSaver +import de.tobias.playpad.server.server.{Result, Status} +import spark.{Request, Response, Route} + +/** + * Created by tobias on 17.02.17. + */ +class ProjectList(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 projectLoader = new ProjectLoader(connection) + val projects = projectLoader.list(s.getAccount.id) + + val array = new JsonArray() + projects.foreach(project => { + val json = new JsonObject() + json.addProperty("uuid", project.id.toString) + json.addProperty("name", project.name) + array.add(json) + }) + + array + case None => + new Result(Status.ERROR, "Session invalid") + } + } + +} -- GitLab