3
0

upd(crm): define service interfaces in service pkg

This commit is contained in:
Tit Petric
2018-08-29 17:56:08 +02:00
parent 1a6a200010
commit f5c3c4184b
11 changed files with 96 additions and 91 deletions
+4 -16
View File
@@ -4,6 +4,7 @@ import (
"context"
"github.com/crusttech/crust/sam/rest/request"
"github.com/crusttech/crust/sam/service"
"github.com/crusttech/crust/sam/types"
"github.com/pkg/errors"
)
@@ -12,25 +13,12 @@ var _ = errors.Wrap
type (
Channel struct {
svc channelService
}
channelService interface {
FindByID(ctx context.Context, channelID uint64) (*types.Channel, error)
Find(ctx context.Context, filter *types.ChannelFilter) ([]*types.Channel, error)
Create(ctx context.Context, channel *types.Channel) (*types.Channel, error)
Update(ctx context.Context, channel *types.Channel) (*types.Channel, error)
deleter
archiver
svc service.ChannelService
}
)
func (Channel) New(channelSvc channelService) *Channel {
var ctrl = &Channel{}
ctrl.svc = channelSvc
return ctrl
func (Channel) New(channel service.ChannelService) *Channel {
return &Channel{channel}
}
func (ctrl *Channel) Create(ctx context.Context, r *request.ChannelCreate) (interface{}, error) {
+4 -26
View File
@@ -3,6 +3,7 @@ package rest
import (
"context"
"github.com/crusttech/crust/sam/rest/request"
"github.com/crusttech/crust/sam/service"
"github.com/crusttech/crust/sam/types"
"github.com/pkg/errors"
)
@@ -11,35 +12,12 @@ var _ = errors.Wrap
type (
Message struct {
svc messageService
}
messageService interface {
Find(ctx context.Context, filter *types.MessageFilter) ([]*types.Message, error)
Create(ctx context.Context, messages *types.Message) (*types.Message, error)
Update(ctx context.Context, messages *types.Message) (*types.Message, error)
React(ctx context.Context, messageID uint64, reaction string) error
Unreact(ctx context.Context, messageID uint64, reaction string) error
Pin(ctx context.Context, messageID uint64) error
Unpin(ctx context.Context, messageID uint64) error
Flag(ctx context.Context, messageID uint64) error
Unflag(ctx context.Context, messageID uint64) error
Attach(ctx context.Context) (*types.Attachment, error)
Detach(ctx context.Context, messageID uint64) error
deleter
svc service.MessageService
}
)
func (Message) New(messageSvc messageService) *Message {
var ctrl = &Message{}
ctrl.svc = messageSvc
return ctrl
func (Message) New(message service.MessageService) *Message {
return &Message{message}
}
func (ctrl *Message) Create(ctx context.Context, r *request.MessageCreate) (interface{}, error) {
+4 -16
View File
@@ -3,6 +3,7 @@ package rest
import (
"context"
"github.com/crusttech/crust/sam/rest/request"
"github.com/crusttech/crust/sam/service"
"github.com/crusttech/crust/sam/types"
"github.com/pkg/errors"
)
@@ -11,25 +12,12 @@ var _ = errors.Wrap
type (
Organisation struct {
svc organisationService
}
organisationService interface {
FindByID(ctx context.Context, organisationID uint64) (*types.Organisation, error)
Find(ctx context.Context, filter *types.OrganisationFilter) ([]*types.Organisation, error)
Create(ctx context.Context, organisation *types.Organisation) (*types.Organisation, error)
Update(ctx context.Context, organisation *types.Organisation) (*types.Organisation, error)
deleter
archiver
svc service.OrganisationService
}
)
func (Organisation) New(organisationSvc organisationService) *Organisation {
var ctrl = &Organisation{}
ctrl.svc = organisationSvc
return ctrl
func (Organisation) New(organisation service.OrganisationService) *Organisation {
return &Organisation{organisation}
}
func (ctrl *Organisation) Read(ctx context.Context, r *request.OrganisationRead) (interface{}, error) {
+4 -18
View File
@@ -3,6 +3,7 @@ package rest
import (
"context"
"github.com/crusttech/crust/sam/rest/request"
"github.com/crusttech/crust/sam/service"
"github.com/crusttech/crust/sam/types"
"github.com/pkg/errors"
)
@@ -11,27 +12,12 @@ var _ = errors.Wrap
type (
Team struct {
svc teamService
}
teamService interface {
FindByID(ctx context.Context, teamID uint64) (*types.Team, error)
Find(ctx context.Context, filter *types.TeamFilter) ([]*types.Team, error)
Create(ctx context.Context, team *types.Team) (*types.Team, error)
Update(ctx context.Context, team *types.Team) (*types.Team, error)
Merge(ctx context.Context, teamID, targetTeamID uint64) error
Move(ctx context.Context, teamID, organisationID uint64) error
deleter
archiver
svc service.TeamService
}
)
func (Team) New(teamSvc teamService) *Team {
var ctrl = &Team{}
ctrl.svc = teamSvc
return ctrl
func (Team) New(team service.TeamService) *Team {
return &Team{team}
}
func (ctrl *Team) Read(ctx context.Context, r *request.TeamRead) (interface{}, error) {
+7 -14
View File
@@ -4,6 +4,7 @@ import (
"context"
"github.com/crusttech/crust/sam/rest/request"
"github.com/crusttech/crust/sam/service"
"github.com/crusttech/crust/sam/types"
"github.com/pkg/errors"
)
@@ -13,24 +14,16 @@ var _ = errors.Wrap
type (
User struct {
svc struct {
user userService
message userMessageService
user service.UserService
message service.MessageService
}
}
userService interface {
Find(ctx context.Context, filter *types.UserFilter) ([]*types.User, error)
}
userMessageService interface {
Direct(ctx context.Context, recipientID uint64, in *types.Message) (out *types.Message, err error)
}
)
func (User) New(userSvc userService, msgSvc userMessageService) *User {
var ctrl = &User{}
ctrl.svc.user = userSvc
ctrl.svc.message = msgSvc
func (User) New(user service.UserService, message service.MessageService) *User {
ctrl := &User{}
ctrl.svc.user = user
ctrl.svc.message = message
return ctrl
}
+13
View File
@@ -18,6 +18,17 @@ type (
//}
}
ChannelService interface {
FindByID(ctx context.Context, channelID uint64) (*types.Channel, error)
Find(ctx context.Context, filter *types.ChannelFilter) ([]*types.Channel, error)
Create(ctx context.Context, channel *types.Channel) (*types.Channel, error)
Update(ctx context.Context, channel *types.Channel) (*types.Channel, error)
deleter
archiver
}
channelRepository interface {
repository.Transactionable
repository.Channel
@@ -371,3 +382,5 @@ func (svc channel) makeSystemMessage(ch *types.Channel, format string, a ...inte
//
// return err != nil && user.Valid()
//}
var _ ChannelService = &channel{}
@@ -1,4 +1,4 @@
package rest
package service
import (
"context"
+25
View File
@@ -13,6 +13,29 @@ type (
rpo messageRepository
}
MessageService interface {
Find(ctx context.Context, filter *types.MessageFilter) ([]*types.Message, error)
Create(ctx context.Context, messages *types.Message) (*types.Message, error)
Update(ctx context.Context, messages *types.Message) (*types.Message, error)
React(ctx context.Context, messageID uint64, reaction string) error
Unreact(ctx context.Context, messageID uint64, reaction string) error
Pin(ctx context.Context, messageID uint64) error
Unpin(ctx context.Context, messageID uint64) error
Flag(ctx context.Context, messageID uint64) error
Unflag(ctx context.Context, messageID uint64) error
Attach(ctx context.Context) (*types.Attachment, error)
Detach(ctx context.Context, messageID uint64) error
Direct(ctx context.Context, recipientID uint64, in *types.Message) (out *types.Message, err error)
deleter
}
messageRepository interface {
repository.Transactionable
repository.Message
@@ -225,3 +248,5 @@ func (svc message) Detach(ctx context.Context, attachmentID uint64) error {
return svc.rpo.DeleteAttachmentByID(attachmentID)
}
var _ MessageService = &message{}
+13
View File
@@ -11,6 +11,17 @@ type (
rpo organisationRepository
}
OrganisationService interface {
FindByID(ctx context.Context, organisationID uint64) (*types.Organisation, error)
Find(ctx context.Context, filter *types.OrganisationFilter) ([]*types.Organisation, error)
Create(ctx context.Context, organisation *types.Organisation) (*types.Organisation, error)
Update(ctx context.Context, organisation *types.Organisation) (*types.Organisation, error)
deleter
archiver
}
organisationRepository interface {
repository.Transactionable
repository.Organisation
@@ -66,3 +77,5 @@ func (svc organisation) Unarchive(ctx context.Context, id uint64) error {
// @todo: permissions check if current user can unarchive organisation
return svc.rpo.UnarchiveOrganisationByID(id)
}
var _ OrganisationService = &organisation{}
+15
View File
@@ -11,6 +11,19 @@ type (
rpo teamRepository
}
TeamService interface {
FindByID(ctx context.Context, teamID uint64) (*types.Team, error)
Find(ctx context.Context, filter *types.TeamFilter) ([]*types.Team, error)
Create(ctx context.Context, team *types.Team) (*types.Team, error)
Update(ctx context.Context, team *types.Team) (*types.Team, error)
Merge(ctx context.Context, teamID, targetTeamID uint64) error
Move(ctx context.Context, teamID, organisationID uint64) error
deleter
archiver
}
teamRepository interface {
repository.Transactionable
repository.Team
@@ -74,3 +87,5 @@ func (svc team) Move(ctx context.Context, id, targetOrganisationID uint64) error
// @todo: permission check if current user can move team to another organisation
return svc.rpo.MoveTeamByID(id, targetOrganisationID)
}
var _ TeamService = &team{}
+6
View File
@@ -16,6 +16,10 @@ type (
rpo userRepository
}
UserService interface {
Find(ctx context.Context, filter *types.UserFilter) ([]*types.User, error)
}
userRepository interface {
repository.Transactionable
repository.Contextable
@@ -88,3 +92,5 @@ func (svc user) Unsuspend(ctx context.Context, id uint64) error {
// @todo: notify users that user has been unsuspended
return svc.rpo.UnsuspendUserByID(id)
}
var _ UserService = &user{}