queries.go 2.9 KB

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