Initial commit: Эфир мессенджер
This commit is contained in:
63
internal/repository/interface.go
Normal file
63
internal/repository/interface.go
Normal file
@@ -0,0 +1,63 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
"messenger/internal/models"
|
||||
)
|
||||
|
||||
type UserRepository interface {
|
||||
Create(ctx context.Context, user *models.User) error
|
||||
FindByID(ctx context.Context, id int64) (*models.User, error)
|
||||
FindByLogin(ctx context.Context, login string) (*models.User, error)
|
||||
SearchByLogin(ctx context.Context, query string, limit int) ([]*models.User, error)
|
||||
UpdateLastSeen(ctx context.Context, userID int64) error
|
||||
UpdateRole(ctx context.Context, userID int64, role models.UserRole) error
|
||||
Delete(ctx context.Context, userID int64) error
|
||||
Exists(ctx context.Context, login string) (bool, error)
|
||||
}
|
||||
|
||||
type ProfileRepository interface {
|
||||
Create(ctx context.Context, profile *models.Profile) error
|
||||
FindByUserID(ctx context.Context, userID int64) (*models.Profile, error)
|
||||
Update(ctx context.Context, profile *models.Profile) error
|
||||
UpdateAvatar(ctx context.Context, userID int64, avatarURL *string) error
|
||||
}
|
||||
|
||||
type ChatRepository interface {
|
||||
Create(ctx context.Context, chat *models.Chat) error
|
||||
FindByID(ctx context.Context, id int64) (*models.Chat, error)
|
||||
GetUserChats(ctx context.Context, userID int64) ([]*models.Chat, error)
|
||||
UpdateTitle(ctx context.Context, chatID int64, title string) error
|
||||
Delete(ctx context.Context, chatID int64) error
|
||||
|
||||
// Member operations
|
||||
AddMember(ctx context.Context, chatID, userID int64, role models.MemberRole) error
|
||||
RemoveMember(ctx context.Context, chatID, userID int64) error
|
||||
GetMembers(ctx context.Context, chatID int64) ([]*models.ChatMember, error)
|
||||
GetMemberRole(ctx context.Context, chatID, userID int64) (*models.MemberRole, error)
|
||||
UpdateMemberRole(ctx context.Context, chatID, userID int64, role models.MemberRole) error
|
||||
IsMember(ctx context.Context, chatID, userID int64) (bool, error)
|
||||
|
||||
// Private chat specific
|
||||
FindPrivateChat(ctx context.Context, userID1, userID2 int64) (*models.Chat, error)
|
||||
}
|
||||
|
||||
type MessageRepository interface {
|
||||
Create(ctx context.Context, message *models.Message) error
|
||||
FindByID(ctx context.Context, id int64) (*models.Message, error)
|
||||
GetChatHistory(ctx context.Context, chatID int64, limit int, before time.Time) ([]*models.Message, error)
|
||||
GetLastMessage(ctx context.Context, chatID int64) (*models.Message, error)
|
||||
MarkAsRead(ctx context.Context, messageID int64) error
|
||||
Delete(ctx context.Context, messageID int64) error
|
||||
Update(ctx context.Context, message *models.Message) error
|
||||
GetUnreadCount(ctx context.Context, chatID, userID int64) (int, error)
|
||||
}
|
||||
|
||||
type AttachmentRepository interface {
|
||||
Create(ctx context.Context, attachment *models.Attachment) error
|
||||
FindByID(ctx context.Context, id int64) (*models.Attachment, error)
|
||||
UpdateMessageID(ctx context.Context, attachmentID, messageID int64) error
|
||||
Delete(ctx context.Context, attachmentID int64) error
|
||||
GetByMessageID(ctx context.Context, messageID int64) (*models.Attachment, error)
|
||||
}
|
||||
Reference in New Issue
Block a user