/models.go

https://github.com/max107/online-help · Go · 59 lines · 38 code · 10 blank · 11 comment · 2 complexity · 682513d736ce4b13e9644e42e08091dc MD5 · raw file

  1. package main
  2. import (
  3. _ "github.com/go-sql-driver/mysql"
  4. "github.com/jinzhu/gorm"
  5. _ "github.com/lib/pq"
  6. _ "github.com/mattn/go-sqlite3"
  7. "log"
  8. "time"
  9. )
  10. var db gorm.DB
  11. func initDatabase() {
  12. // db, err := gorm.Open("postgres", "user=gorm dbname=gorm sslmode=disable")
  13. // db, err := gorm.Open("mysql", "root:12345@/gorm?charset=utf8&parseTime=True")
  14. db, _ = gorm.Open("sqlite3", "./chat.db")
  15. // Get database connection handle [*sql.DB](http://golang.org/pkg/database/sql/#DB)
  16. db.DB()
  17. // Then you could invoke `*sql.DB`'s functions with it
  18. db.DB().Ping()
  19. db.DB().SetMaxIdleConns(10)
  20. db.DB().SetMaxOpenConns(100)
  21. // Disable table name's pluralization
  22. db.SingularTable(true)
  23. // Drop table if exists
  24. // db.DropTableIfExists(Message{})
  25. // Create table
  26. // db.CreateTable(Message{})
  27. }
  28. func getMessages(domain string) []Message {
  29. var messages []Message
  30. db.Where(&Message{Domain: domain}).Find(&messages)
  31. return messages
  32. }
  33. func saveMessage(msg Message) Message {
  34. log.Printf("Create new message: {from: %s, message: %s, domain: %s}", msg.From, msg.Message, msg.Domain)
  35. // returns true if record hasn’t been saved (primary key `Id` is blank)
  36. if db.NewRecord(msg) {
  37. db.Create(&msg)
  38. }
  39. return msg
  40. }
  41. func newMessage(from string, message string, domain string) Message {
  42. msg := Message{From: from, Message: message, Domain: domain, CreatedAt: time.Now()}
  43. // returns true if record hasn’t been saved (primary key `Id` is blank)
  44. if db.NewRecord(msg) {
  45. db.Create(&msg)
  46. log.Printf("Create new message: {from: %s, message: %s, domain: %s}", from, message, domain)
  47. }
  48. return msg
  49. }