Przeglądaj źródła

Implement load from dump

Thomas Dy 7 lat temu
rodzic
commit
0261f8fe5c
3 zmienionych plików z 25 dodań i 8 usunięć
  1. 19 3
      app/controllers/Cards.scala
  2. 1 0
      conf/routes
  3. 5 5
      public/partials/contribute.html

+ 19 - 3
app/controllers/Cards.scala

@@ -11,10 +11,14 @@ import models._
 
 object Cards extends Controller {
 
-  val cardForm = Form(mapping(
+  val cardMapping = mapping(
     "word" -> text,
-    "taboos" -> seq(text).transform(_.toSet, (set: Set[String]) => set.toSeq)
-  )(Card.apply)(Card.unapply))
+    "taboo" -> seq(text).transform(_.toSet, (set: Set[String]) => set.toSeq)
+  )(Card.apply)(Card.unapply)
+
+  val cardForm = Form(cardMapping)
+
+  val cardsForm = Form(seq(cardMapping))
 
   def add = Action(parse.json) { implicit request =>
     cardForm.bindFromRequest.fold(
@@ -33,6 +37,18 @@ object Cards extends Controller {
     ))
   }
 
+  def load = Action(parse.json) { implicit request =>
+    cardsForm.bindFromRequest.fold(
+      { case error => BadRequest("invalid format") },
+      { case cards =>
+        cards.foreach { card =>
+          Card.add(card)
+        }
+        Ok("ok")
+      }
+    )
+  }
+
   def dump = Action {
     Ok(Json.toJson(Card.list()))
   }

+ 1 - 0
conf/routes

@@ -10,6 +10,7 @@ GET     /stats                           controllers.Application.stats
 
 GET     /cards                           controllers.Cards.dump
 POST    /cards                           controllers.Cards.add
+PUT     /cards                           controllers.Cards.load
 GET     /cards/random                    controllers.Cards.random
 GET     /cards/exists                    controllers.Cards.exists(word: String)
 

+ 5 - 5
public/partials/contribute.html

@@ -17,11 +17,11 @@
         </div>
         <div class="form-group">
           <label>Taboo Words</label>
-          <input type="text" class="form-control" ng-model="card.taboos[0]" placeholder="Taboo Word" required>
-          <input type="text" class="form-control" ng-model="card.taboos[1]" placeholder="Taboo Word" required>
-          <input type="text" class="form-control" ng-model="card.taboos[2]" placeholder="Taboo Word" required>
-          <input type="text" class="form-control" ng-model="card.taboos[3]" placeholder="Taboo Word" required>
-          <input type="text" class="form-control" ng-model="card.taboos[4]" placeholder="Taboo Word" required>
+          <input type="text" class="form-control" ng-model="card.taboo[0]" placeholder="Taboo Word" required>
+          <input type="text" class="form-control" ng-model="card.taboo[1]" placeholder="Taboo Word" required>
+          <input type="text" class="form-control" ng-model="card.taboo[2]" placeholder="Taboo Word" required>
+          <input type="text" class="form-control" ng-model="card.taboo[3]" placeholder="Taboo Word" required>
+          <input type="text" class="form-control" ng-model="card.taboo[4]" placeholder="Taboo Word" required>
         </div>
         <input ng-disabled="submitting" class="btn btn-primary" type="submit" value="{{submitting ? 'Submitting...' : 'Submit'}}">
         <span ng-show="thanks">Thank you!</span>