queries.go 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package main
  2. import (
  3. "fmt"
  4. "github.com/jmoiron/sqlx"
  5. )
  6. // Queries contains all prepared SQL queries.
  7. type Queries struct {
  8. UpsertSubscriber *sqlx.Stmt `query:"upsert-subscriber"`
  9. BlacklistSubscriber *sqlx.Stmt `query:"blacklist-subscriber"`
  10. GetSubscriber *sqlx.Stmt `query:"get-subscriber"`
  11. GetSubscribersByEmails *sqlx.Stmt `query:"get-subscribers-by-emails"`
  12. GetSubscriberLists *sqlx.Stmt `query:"get-subscriber-lists"`
  13. QuerySubscribers string `query:"query-subscribers"`
  14. QuerySubscribersCount string `query:"query-subscribers-count"`
  15. QuerySubscribersByList string `query:"query-subscribers-by-list"`
  16. QuerySubscribersByListCount string `query:"query-subscribers-by-list-count"`
  17. UpdateSubscriber *sqlx.Stmt `query:"update-subscriber"`
  18. DeleteSubscribers *sqlx.Stmt `query:"delete-subscribers"`
  19. Unsubscribe *sqlx.Stmt `query:"unsubscribe"`
  20. QuerySubscribersIntoLists string `query:"query-subscribers-into-lists"`
  21. CreateList *sqlx.Stmt `query:"create-list"`
  22. GetLists *sqlx.Stmt `query:"get-lists"`
  23. UpdateList *sqlx.Stmt `query:"update-list"`
  24. DeleteLists *sqlx.Stmt `query:"delete-lists"`
  25. CreateCampaign *sqlx.Stmt `query:"create-campaign"`
  26. GetCampaigns *sqlx.Stmt `query:"get-campaigns"`
  27. GetCampaignForPreview *sqlx.Stmt `query:"get-campaign-for-preview"`
  28. GetCampaignStats *sqlx.Stmt `query:"get-campaign-stats"`
  29. NextCampaigns *sqlx.Stmt `query:"next-campaigns"`
  30. NextCampaignSubscribers *sqlx.Stmt `query:"next-campaign-subscribers"`
  31. GetOneCampaignSubscriber *sqlx.Stmt `query:"get-one-campaign-subscriber"`
  32. UpdateCampaign *sqlx.Stmt `query:"update-campaign"`
  33. UpdateCampaignStatus *sqlx.Stmt `query:"update-campaign-status"`
  34. UpdateCampaignCounts *sqlx.Stmt `query:"update-campaign-counts"`
  35. RegisterCampaignView *sqlx.Stmt `query:"register-campaign-view"`
  36. DeleteCampaign *sqlx.Stmt `query:"delete-campaign"`
  37. CreateUser *sqlx.Stmt `query:"create-user"`
  38. GetUsers *sqlx.Stmt `query:"get-users"`
  39. UpdateUser *sqlx.Stmt `query:"update-user"`
  40. DeleteUser *sqlx.Stmt `query:"delete-user"`
  41. InsertMedia *sqlx.Stmt `query:"insert-media"`
  42. GetMedia *sqlx.Stmt `query:"get-media"`
  43. DeleteMedia *sqlx.Stmt `query:"delete-media"`
  44. CreateTemplate *sqlx.Stmt `query:"create-template"`
  45. GetTemplates *sqlx.Stmt `query:"get-templates"`
  46. UpdateTemplate *sqlx.Stmt `query:"update-template"`
  47. SetDefaultTemplate *sqlx.Stmt `query:"set-default-template"`
  48. DeleteTemplate *sqlx.Stmt `query:"delete-template"`
  49. CreateLink *sqlx.Stmt `query:"create-link"`
  50. RegisterLinkClick *sqlx.Stmt `query:"register-link-click"`
  51. // GetStats *sqlx.Stmt `query:"get-stats"`
  52. }
  53. // connectDB initializes a database connection.
  54. func connectDB(host string, port int, user, pwd, dbName string) (*sqlx.DB, error) {
  55. db, err := sqlx.Connect("postgres",
  56. fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s", host, port, user, pwd, dbName))
  57. if err != nil {
  58. return nil, err
  59. }
  60. return db, nil
  61. }