upd(crm): define service interfaces in service pkg
This commit is contained in:
+4
-16
@@ -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
@@ -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) {
|
||||
|
||||
@@ -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
@@ -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
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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"
|
||||
@@ -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{}
|
||||
|
||||
@@ -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{}
|
||||
|
||||
@@ -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{}
|
||||
|
||||
@@ -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{}
|
||||
|
||||
Reference in New Issue
Block a user