59 lines
1.6 KiB
Go
59 lines
1.6 KiB
Go
package repositories
|
|
|
|
import (
|
|
"git.secnex.io/secnex/masterlog"
|
|
"git.secnex.io/secnex/taro-bot/database"
|
|
"git.secnex.io/secnex/taro-bot/models"
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
func CreateChannel(name, tenantId, externalId string) error {
|
|
channel := &models.Channel{
|
|
Name: name,
|
|
TenantID: uuid.MustParse(tenantId),
|
|
ExternalID: externalId,
|
|
}
|
|
return database.DB.Create(channel).Error
|
|
}
|
|
|
|
func UpsertChannel(name, tenantId, externalId string) (*models.Channel, error) {
|
|
masterlog.Debug("Upserting channel", map[string]interface{}{"name": name, "tenantId": tenantId, "externalId": externalId})
|
|
channel := &models.Channel{}
|
|
|
|
tenantUUID := uuid.MustParse(tenantId)
|
|
|
|
masterlog.Debug("Upserting channel", map[string]interface{}{"name": name, "tenantId": tenantUUID, "externalId": externalId})
|
|
|
|
err := database.DB.
|
|
Where("external_id = ?", externalId).
|
|
FirstOrCreate(&channel, models.Channel{
|
|
Name: name,
|
|
TenantID: tenantUUID,
|
|
ExternalID: externalId,
|
|
}).Error
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return channel, nil
|
|
}
|
|
|
|
func GetChannelByID(id string) (*models.Channel, error) {
|
|
var channel models.Channel
|
|
if err := database.DB.Where("id = ?", id).First(&channel).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
return &channel, nil
|
|
}
|
|
|
|
func GetChannelByExternalID(id string) (*models.Channel, error) {
|
|
var channel models.Channel
|
|
if err := database.DB.Where("external_id = ?", id).First(&channel).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
return &channel, nil
|
|
}
|
|
|
|
func DeleteTeamByExternalID(id string) error {
|
|
return database.DB.Where("external_id = ?", id).Delete(&models.Channel{}).Error
|
|
}
|