controller.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package controller
  2. import (
  3. "fmt"
  4. "log"
  5. "git.aetherial.dev/aeth/keiji/pkg/helpers"
  6. )
  7. type Controller struct{
  8. WebRoot string
  9. Domain string
  10. database helpers.DocumentIO
  11. RedisConfig helpers.RedisConf
  12. Cache *helpers.AllCache
  13. }
  14. /*
  15. Retrieve the administrator table configuration from redis
  16. */
  17. func (c *Controller) AdminTables() *helpers.AdminTables {
  18. tables, err := helpers.GetAdminTables(c.RedisConfig)
  19. if err != nil {
  20. log.Fatal(err, "Administrator tables couldnt be couldnt be loaded. Exiting.")
  21. }
  22. return tables
  23. }
  24. /*
  25. Retrieve the post data and format it for the post management page
  26. */
  27. func (c *Controller) FormatDocTable() *helpers.AdminTables {
  28. var postTables helpers.AdminTables
  29. for i := range helpers.Topics {
  30. docs, err := helpers.GetAllDocuments(helpers.Topics[i], c.RedisConfig)
  31. if err != nil {
  32. log.Fatal(err, "Post tables couldnt be couldnt be loaded. Exiting.")
  33. }
  34. var categoryTable helpers.Table
  35. categoryTable.TableName = helpers.Topics[i]
  36. for idx := range docs {
  37. categoryTable.TableData = append(categoryTable.TableData, helpers.TableData{
  38. DisplayName: docs[idx].Ident,
  39. Link: fmt.Sprintf("/admin/posts/%s", docs[idx].Ident),
  40. })
  41. }
  42. postTables.Tables = append(postTables.Tables, categoryTable)
  43. }
  44. return &postTables
  45. }
  46. func NewController(root string, domain string, redisPort string, redisAddr string, database helpers.DocumentIO) *Controller {
  47. return &Controller{WebRoot: root, Cache: helpers.NewCache(),
  48. Domain: domain, RedisConfig: helpers.RedisConf{
  49. Port: redisPort,
  50. Addr: redisAddr,
  51. },
  52. database: database,
  53. }
  54. }