first commit

This commit is contained in:
2026-06-22 14:31:01 +05:00
commit 109e01a656
35 changed files with 2120 additions and 0 deletions
+41
View File
@@ -0,0 +1,41 @@
package service
import (
"context"
"secunda-test/internal/domain"
)
type UserRepository interface {
Create(ctx context.Context, email, passwordHash, name string) (domain.User, error)
FindByEmail(ctx context.Context, email string) (domain.User, error)
FindByID(ctx context.Context, id int64) (domain.User, error)
}
type TeamRepository interface {
Create(ctx context.Context, name string, createdBy int64) (domain.Team, error)
AddMember(ctx context.Context, teamID, userID int64, role domain.Role) error
ListByUser(ctx context.Context, userID int64) ([]domain.Team, error)
MemberRole(ctx context.Context, teamID, userID int64) (domain.Role, bool, error)
}
type TaskRepository interface {
Create(ctx context.Context, task domain.Task) (domain.Task, error)
Get(ctx context.Context, id int64) (domain.Task, error)
Update(ctx context.Context, task domain.Task, changedBy int64) (domain.Task, error)
List(ctx context.Context, filter domain.TaskFilter) ([]domain.Task, error)
History(ctx context.Context, taskID int64) ([]domain.TaskHistory, error)
TeamSummary(ctx context.Context) ([]domain.TeamSummary, error)
TopCreators(ctx context.Context) ([]domain.TopCreator, error)
InvalidAssignees(ctx context.Context) ([]domain.Task, error)
}
type TaskCache interface {
GetTasks(ctx context.Context, filter domain.TaskFilter) ([]domain.Task, bool, error)
SetTasks(ctx context.Context, filter domain.TaskFilter, tasks []domain.Task) error
DeleteTeam(ctx context.Context, teamID int64) error
}
type EmailSender interface {
SendInvite(ctx context.Context, email, teamName string) error
}