/
slack_channel_repository.go
104 lines (83 loc) · 2.69 KB
/
slack_channel_repository.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
package repository
import (
"errors"
"github.com/google/uuid"
"github.com/openline-ai/openline-customer-os/packages/server/customer-os-postgres-repository/entity"
"gorm.io/gorm"
)
type slackChannelRepository struct {
db *gorm.DB
}
type SlackChannelRepository interface {
GetSlackChannel(tenant, channelId string) (*entity.SlackChannel, error)
GetSlackChannels(tenant string) ([]*entity.SlackChannel, error)
GetPaginatedSlackChannels(tenant string, skip, limit int) ([]*entity.SlackChannel, int64, error)
CreateSlackChannel(entity *entity.SlackChannel) error
UpdateSlackChannelOrganization(entityId uuid.UUID, organizationId string) error
UpdateSlackChannelName(entityId uuid.UUID, channelName string) error
}
func NewSlackChannelRepository(db *gorm.DB) SlackChannelRepository {
return &slackChannelRepository{db: db}
}
func (r *slackChannelRepository) GetSlackChannel(tenant, channelId string) (*entity.SlackChannel, error) {
var entities []entity.SlackChannel
err := r.db.
Where("tenant_name = ?", tenant).
Where("channel_id = ?", channelId).
Find(&entities).Error
if err != nil {
return nil, err
}
if len(entities) == 0 {
return nil, nil
}
if len(entities) > 1 {
return nil, errors.New("multiple slack channels found")
}
return &entities[0], nil
}
func (r *slackChannelRepository) GetSlackChannels(tenant string) ([]*entity.SlackChannel, error) {
var entities []*entity.SlackChannel
err := r.db.
Where("tenant_name = ?", tenant).
Find(&entities).Error
if err != nil {
return nil, err
}
return entities, nil
}
func (r *slackChannelRepository) GetPaginatedSlackChannels(tenant string, skip, limit int) ([]*entity.SlackChannel, int64, error) {
var err error
var total int64
var entities []*entity.SlackChannel
err = r.db.
Model(&entity.SlackChannel{}).
Where("tenant_name = ?", tenant).
Count(&total).Error
if err != nil {
return nil, 0, err
}
err = r.db.
Model(&entity.SlackChannel{}).
Offset(skip).
Limit(limit).
Where("tenant_name = ?", tenant).
Find(&entities).Error
if err != nil {
return nil, 0, err
}
return entities, total, nil
}
func (r *slackChannelRepository) CreateSlackChannel(entity *entity.SlackChannel) error {
err := r.db.Create(entity).Error
if err != nil {
return err
}
return nil
}
func (r *slackChannelRepository) UpdateSlackChannelOrganization(entityId uuid.UUID, organizationId string) error {
return r.db.Model(&entity.SlackChannel{}).Where("id = ?", entityId).Update("organization_id", organizationId).Error
}
func (r *slackChannelRepository) UpdateSlackChannelName(entityId uuid.UUID, channelName string) error {
return r.db.Model(&entity.SlackChannel{}).Where("id = ?", entityId).Update("channel_name", channelName).Error
}