controller.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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. RedisConfig helpers.RedisConf
  11. Cache *helpers.AllCache
  12. }
  13. /*
  14. Retrieve the header configuration from redis
  15. */
  16. func (c *Controller) Headers() *helpers.HeaderCollection {
  17. headers, err := helpers.GetHeaders(c.RedisConfig)
  18. if err != nil {
  19. log.Fatal(err, "Headers couldnt be loaded. Exiting.")
  20. }
  21. return headers
  22. }
  23. /*
  24. Retrieve the menu configuration from redis
  25. */
  26. func (c *Controller) Menu() *helpers.MenuElement {
  27. links, err := helpers.GetMenuLinks(c.RedisConfig)
  28. if err != nil {
  29. log.Fatal(err, "Menu links couldnt be couldnt be loaded. Exiting.")
  30. }
  31. return links
  32. }
  33. /*
  34. Retrieve the administrator table configuration from redis
  35. */
  36. func (c *Controller) AdminTables() *helpers.AdminTables {
  37. tables, err := helpers.GetAdminTables(c.RedisConfig)
  38. if err != nil {
  39. log.Fatal(err, "Administrator tables couldnt be couldnt be loaded. Exiting.")
  40. }
  41. return tables
  42. }
  43. /*
  44. Retrieve the post data and format it for the post management page
  45. */
  46. func (c *Controller) FormatDocTable() *helpers.AdminTables {
  47. var postTables helpers.AdminTables
  48. for i := range helpers.Topics {
  49. docs, err := helpers.GetAllDocuments(helpers.Topics[i], c.RedisConfig)
  50. if err != nil {
  51. log.Fatal(err, "Post tables couldnt be couldnt be loaded. Exiting.")
  52. }
  53. var categoryTable helpers.Table
  54. categoryTable.TableName = helpers.Topics[i]
  55. for idx := range docs {
  56. categoryTable.TableData = append(categoryTable.TableData, helpers.TableData{
  57. DisplayName: docs[idx].Ident,
  58. Link: fmt.Sprintf("/admin/posts/%s", docs[idx].Ident),
  59. })
  60. }
  61. postTables.Tables = append(postTables.Tables, categoryTable)
  62. }
  63. return &postTables
  64. }
  65. /*
  66. Save a new image store item
  67. */
  68. func (c *Controller) SaveImage(img *helpers.ImageStoreItem) error {
  69. rds := helpers.NewRedisClient(c.RedisConfig)
  70. err := rds.AddImage(img)
  71. if err != nil {
  72. return err
  73. }
  74. return nil
  75. }
  76. func NewController(root string, domain string, redisPort string, redisAddr string) *Controller {
  77. return &Controller{WebRoot: root, Cache: helpers.NewCache(),
  78. Domain: domain, RedisConfig: helpers.RedisConf{
  79. Port: redisPort,
  80. Addr: redisAddr,
  81. },
  82. }
  83. }