/models/preferences.go

http://github.com/TheOnly92/bloody.go · Go · 70 lines · 60 code · 8 blank · 2 comment · 18 complexity · e300273e6d9bf98cbe4ec7cf9a67567b MD5 · raw file

  1. package main
  2. import (
  3. "launchpad.net/gobson/bson"
  4. "launchpad.net/mgo"
  5. )
  6. type Preference struct {
  7. Name string
  8. Value string
  9. }
  10. type PreferenceModel struct {
  11. c mgo.Collection
  12. }
  13. func PreferenceInit() *PreferenceModel {
  14. p := new(PreferenceModel)
  15. p.c = mSession.DB(config.Get("mongodb")).C("preferences")
  16. return p
  17. }
  18. func (preference *PreferenceModel) GetByName(name string) *Preference {
  19. var result *Preference
  20. err := preference.c.Find(bson.M{"name": name}).One(&result)
  21. if err == mgo.NotFound {
  22. // See if there's default value
  23. value := preference.Get(name)
  24. result = &Preference{name, value}
  25. } else if err != nil {
  26. panic(err)
  27. }
  28. return result
  29. }
  30. func (preference *PreferenceModel) Get(name string) string {
  31. var result *Preference
  32. err := preference.c.Find(bson.M{"name": name}).One(&result)
  33. if err == mgo.NotFound {
  34. // Default values
  35. switch name {
  36. case "dateFormat":
  37. return "2006 Jan 02 15:04"
  38. case "postsPerPage":
  39. return "10"
  40. case "enableComment":
  41. return "on"
  42. case "markdown":
  43. return "0"
  44. }
  45. } else if err != nil {
  46. panic(err)
  47. }
  48. return result.Value
  49. }
  50. func (preference *PreferenceModel) Update(name string, value string) {
  51. result := preference.GetByName(name)
  52. result.Value = value
  53. err := preference.c.Update(bson.M{"name":name},result)
  54. if err == mgo.NotFound {
  55. err = preference.c.Insert(&Preference{name, value})
  56. if err != nil {
  57. panic(err)
  58. }
  59. } else if err != nil {
  60. panic(err)
  61. }
  62. }