-
Notifications
You must be signed in to change notification settings - Fork 12
/
slack_service.go
60 lines (51 loc) · 2.02 KB
/
slack_service.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
package service
import (
"context"
"github.com/neo4j/neo4j-go-driver/v5/neo4j"
"github.com/openline-ai/openline-customer-os/packages/server/customer-os-api/repository"
"github.com/openline-ai/openline-customer-os/packages/server/customer-os-common-module/grpc_client"
"github.com/openline-ai/openline-customer-os/packages/server/customer-os-common-module/logger"
"github.com/openline-ai/openline-customer-os/packages/server/customer-os-common-module/tracing"
"github.com/openline-ai/openline-customer-os/packages/server/customer-os-common-module/utils"
"github.com/opentracing/opentracing-go"
"github.com/opentracing/opentracing-go/log"
)
type SlackService interface {
GetPaginatedSlackChannels(ctx context.Context, tenant string, page, limit int) (*utils.Pagination, error)
}
type slackService struct {
log logger.Logger
repositories *repository.Repositories
grpcClients *grpc_client.Clients
services *Services
}
func NewSlackService(log logger.Logger, repositories *repository.Repositories, grpcClients *grpc_client.Clients, services *Services) SlackService {
return &slackService{
log: log,
repositories: repositories,
grpcClients: grpcClients,
services: services,
}
}
func (s *slackService) GetPaginatedSlackChannels(ctx context.Context, tenant string, page, limit int) (*utils.Pagination, error) {
span, ctx := opentracing.StartSpanFromContext(ctx, "SlackService.GetSlackChannels")
defer span.Finish()
tracing.SetDefaultServiceSpanTags(ctx, span)
span.LogFields(log.Object("page", page))
span.LogFields(log.Object("limit", limit))
channels, totalCount, err := s.services.CommonServices.SlackChannelService.GetPaginatedSlackChannels(ctx, tenant, page, limit)
if err != nil {
tracing.TraceErr(span, err)
return nil, err
}
var paginatedResult = utils.Pagination{
Limit: page,
Page: limit,
TotalRows: totalCount,
Rows: channels,
}
return &paginatedResult, nil
}
func (s *slackService) getNeo4jDriver() neo4j.DriverWithContext {
return *s.repositories.Drivers.Neo4jDriver
}