mirror of
https://github.com/gotify/server.git
synced 2026-05-06 21:42:07 +08:00
Add database wrapper
This commit is contained in:
committed by
Jannis Mattheis
parent
e44970e684
commit
dffe12418b
53
database/message.go
Normal file
53
database/message.go
Normal file
@@ -0,0 +1,53 @@
|
||||
package database
|
||||
|
||||
import (
|
||||
"github.com/jmattheis/memo/model"
|
||||
)
|
||||
|
||||
// GetMessageByID returns the messages for the given id or nil.
|
||||
func (d *GormDatabase) GetMessageByID(id uint) *model.Message {
|
||||
msg := new(model.Message)
|
||||
d.DB.Find(msg, id)
|
||||
if msg.ID == id {
|
||||
return msg
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// CreateMessage creates a message.
|
||||
func (d *GormDatabase) CreateMessage(message *model.Message) error {
|
||||
return d.DB.Create(message).Error
|
||||
}
|
||||
|
||||
// GetMessagesByUser returns all messages from a user.
|
||||
func (d *GormDatabase) GetMessagesByUser(userID uint) []*model.Message {
|
||||
var messages []*model.Message
|
||||
d.DB.Joins("JOIN applications ON applications.user_id = ?", userID).
|
||||
Where("messages.application_id = applications.id").Order("date desc").Find(&messages)
|
||||
return messages
|
||||
}
|
||||
|
||||
// GetMessagesByApplication returns all messages from an application.
|
||||
func (d *GormDatabase) GetMessagesByApplication(tokenID string) []*model.Message {
|
||||
var messages []*model.Message
|
||||
d.DB.Where("application_id = ?", tokenID).Order("date desc").Find(&messages)
|
||||
return messages
|
||||
}
|
||||
|
||||
// DeleteMessageByID deletes a message by its id.
|
||||
func (d *GormDatabase) DeleteMessageByID(id uint) error {
|
||||
return d.DB.Where("id = ?", id).Delete(&model.Message{}).Error
|
||||
}
|
||||
|
||||
// DeleteMessagesByApplication deletes all messages from an application.
|
||||
func (d *GormDatabase) DeleteMessagesByApplication(applicationID string) error {
|
||||
return d.DB.Where("application_id = ?", applicationID).Delete(&model.Message{}).Error
|
||||
}
|
||||
|
||||
// DeleteMessagesByUser deletes all messages from a user.
|
||||
func (d *GormDatabase) DeleteMessagesByUser(userID uint) error {
|
||||
for _, app := range d.GetApplicationsByUser(userID) {
|
||||
d.DB.Model(app).Association("Messages").Clear()
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user