emojiquery.go 809 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package database
  2. import (
  3. log "maunium.net/go/maulogger/v2"
  4. "maunium.net/go/mautrix/id"
  5. )
  6. type EmojiQuery struct {
  7. db *Database
  8. log log.Logger
  9. }
  10. const (
  11. emojiSelect = "SELECT discord_id, discord_name, matrix_url FROM emoji"
  12. )
  13. func (eq *EmojiQuery) New() *Emoji {
  14. return &Emoji{
  15. db: eq.db,
  16. log: eq.log,
  17. }
  18. }
  19. func (eq *EmojiQuery) GetByDiscordID(discordID string) *Emoji {
  20. query := emojiSelect + " WHERE discord_id=$1"
  21. return eq.get(query, discordID)
  22. }
  23. func (eq *EmojiQuery) GetByMatrixURL(matrixURL id.ContentURI) *Emoji {
  24. query := emojiSelect + " WHERE matrix_url=$1"
  25. return eq.get(query, matrixURL.String())
  26. }
  27. func (eq *EmojiQuery) get(query string, args ...interface{}) *Emoji {
  28. row := eq.db.QueryRow(query, args...)
  29. if row == nil {
  30. return nil
  31. }
  32. return eq.New().Scan(row)
  33. }