Permalink
Browse files

fotoalbum Implementierung fortgesetzt > Tabelle und Speichern

  • Loading branch information...
1 parent d961b3c commit 7718a80ca2747af57625eb6bebf113a0ac4a382a @KyleRogers committed Sep 28, 2013
@@ -16,14 +16,15 @@ object FotoVorfuehrer extends Controller with AuthenticationElement with Wedding
def hochladen = StackAction(parse.multipartFormData){ implicit request =>
request.body.file("bilddatei").map { picture =>
// import java.io.File
-// val filename = picture.filename
+ val filename = picture.filename
+ picture.ref
// val contentType = picture.contentType
// picture.ref.moveTo(new File("/tmp/picture"))
- Redirect(routes.FotoVorfuehrer.fotoalben).flashing(
+ Redirect(routes.FotoVorfuehrer.fotoalben()).flashing(
"erfolgsMeldung" -> "Bild erfolgreich zu deinem Album hinzugefügt."
)
}.getOrElse {
- Redirect(routes.FotoVorfuehrer.fotoalben).flashing(
+ Redirect(routes.FotoVorfuehrer.fotoalben()).flashing(
"fehlerMeldung" -> "Keine Datei ausgewählt."
)
}
View
@@ -53,6 +53,20 @@ case class Benutzer(
}
object Benutzer {
+ def speichereFoto(benutzer: Benutzer, foto: Array[Byte]) {
+ DB.withConnection { implicit connection =>
+ SQL(
+ """
+ insert into fotoalben
+ (besitzer, foto) values
+ ({besitzerid}, {foto})
+ """
+ ).on(
+ 'besitzerid -> benutzer.id,
+ 'foto -> foto
+ ).executeUpdate()
+ }
+ }
def authentifiziere(email: String, passwort: String): Option[Benutzer] = {
(new PersistenteGästeliste).findeGastMitEMail(email).filter {
@@ -9,3 +9,8 @@ import anorm.{NotAssigned, Pk}
case class Fotoalbum(id: Pk[Long] = NotAssigned) {
}
+
+
+object Fotoalben {
+
+}
@@ -12,6 +12,7 @@ trait Gästeliste {
def gäste: List[Benutzer]
def vip: List[Benutzer]
def admins: List[Benutzer]
+ def gästeMitFotoalbum: Set[Benutzer]
def findeGastMitName(name: BenutzerName): Option[Benutzer]
def findeGastMitId(id: Long): Option[Benutzer]
def findeGastMitEMail(email: EMail): Option[Benutzer]
@@ -87,4 +88,16 @@ class PersistenteGästeliste extends Gästeliste {
).as(Benutzer.simple *)
}
}
+
+ def gästeMitFotoalbum: Set[Benutzer] = {
+ DB.withConnection { implicit connection =>
+ SQL(
+ """
+ SELECT u.* FROM users u
+ WHERE EXISTS (SELECT * FROM fotoalben f WHERE f.besitzer = u.id)
+ GROUP BY u.id
+ """
+ ).as(Benutzer.simple *).to[Set]
+ }
+ }
}
@@ -0,0 +1,14 @@
+# Neue Tabelle Fotoalben für die Fotos
+
+# --- !Ups
+CREATE TABLE fotoalben (
+ id bigint(20) NOT NULL AUTO_INCREMENT,
+ besitzer bigint(20) NOT NULL,
+ foto LONGBLOB NOT NULL,
+ PRIMARY KEY (id),
+ FOREIGN KEY (besitzer) REFERENCES users (id) ON DELETE CASCADE
+)
+
+
+# --- !Downs
+DROP TABLE fotoalben
@@ -50,9 +50,16 @@ class GastModelTest extends Specification {
Benutzer.authentifiziere(einGast.email, passwort = "falsch") must beNone
}
- }
+ "initial kein Album haben" in DatenbankMit("einemGast") {
+ gästeliste.gästeMitFotoalbum must beEmpty
+ }
- "Ein freigeschalteter Gast" should {
+ "ein Album haben wenn er ein Foto gespeichert hat" in DatenbankMit("einemGast") {
+ val file = new Array[Byte](5)
+ Benutzer.speichereFoto(einGast, file)
+
+ gästeliste.gästeMitFotoalbum must contain(einGast)
+ }
}

0 comments on commit 7718a80

Please sign in to comment.