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 }