scala-news-reader
rss/atom news reader in scala
git clone https://9o.is/git/scala-news-reader.git
BlogWriter.scala
(1561B)
1 package com.joereader.model
2
3 import net.liftweb.record.field._
4 import net.liftweb.mongodb.record._
5 import net.liftweb.mongodb.record.field._
6 import com.joereader.model.field._
7
8 import org.bson.types.ObjectId
9
10 /**
11 * BlogWriter is a writer of a blog. Users follow this instead of
12 * another user because not all blog writers are registered.
13 */
14 class BlogWriter private() extends BsonRecord[BlogWriter] {
15 def meta = BlogWriter
16
17 // name from rss feed
18 object name extends StringField(this, 255)
19
20 // if email is present, assume he was invited
21 object email extends StringField(this, 255)
22
23 // youtube introduction video id
24 object introVid extends StringField(this, 20)
25
26 // hex value of primary color
27 object color extends StringField(this, 255) {
28 override def defaultValue = "#5bc1e9"
29 override def get = if(super.get.isEmpty) defaultValue else super.get
30 }
31
32 // the user representing this blog writer
33 object user extends ObjectIdRefField(this, User) with ObjectIdRefFieldExtra[BlogWriter, User]
34
35 object followers extends ObjectIdRefListField(this, User) with ObjectIdRefListFieldExtra[BlogWriter, User]
36
37 object categories extends MongoListField[BlogWriter, String](this) with MongoListFieldExtra[BlogWriter, String]
38
39 // url to image found in rss feed of blog writer
40 object img extends StringField(this, 255)
41
42 /*
43 * Have override so MongoListFieldExtra can use name to
44 * compare with other blog writers.
45 */
46 override def toString = name.get
47 }
48
49 object BlogWriter extends BlogWriter with BsonMetaRecord[BlogWriter]