scala-news-reader

rss/atom news reader in scala

git clone https://9o.is/git/scala-news-reader.git

Category.scala

(1291B)


      1 package com.joereader.model
      2 
      3 import field._
      4 import net.liftweb._
      5 import common._
      6 import record.field._
      7 import mongodb.record._
      8 import net.liftweb.mongodb.record.field._
      9 
     10 /**
     11  * Categories with a list of users that write for that category.
     12  */
     13 
     14 class Category private () extends MongoRecord[Category] {
     15   def meta = Category
     16 
     17   object id extends StringField(this.asInstanceOf[Category], 12) {
     18     override def name = "_id"
     19     override def defaultValue = "0"
     20     override def shouldDisplay_? = false
     21     override def setFilter = trim _ :: toLower _ :: super.setFilter
     22   }
     23   
     24   // Users that fall under this category
     25   object writers extends BlogWriterUserListField(this) {
     26     // remove category record if no users are listed
     27     override def remove(bwu: BlogWriterUser): Category = {
     28       super.remove(bwu)
     29       if(get.isEmpty) {owner.delete_!; owner} else owner
     30     }
     31   }
     32 
     33   override def update: Category = super.update
     34 }
     35 
     36 object Category extends Category with MongoMetaRecord[Category] {
     37   override def collectionName = "category.categories"
     38   override def find(in: String): Box[Category] = find(id.name, in)
     39 
     40   def random(n: Int): Seq[Category] = {
     41     val all = Category.findAll
     42     val random =
     43       Seq.fill(n)(scala.util.Random.nextInt(all.size)).distinct
     44     random.map(all)
     45   }
     46 }