chat_back_go/internal/repository/repository.go

52 lines
1.2 KiB
Go

package repository
import (
"github.com/jmoiron/sqlx"
"go.mongodb.org/mongo-driver/v2/mongo"
"time"
"git.urec56.ru/urec/chat_back_go/internal/domain"
"git.urec56.ru/urec/chat_back_go/internal/logger"
)
//go:generate mockgen -source=repository.go -destination=mocks/mock.go
type User interface {
GetByID(userID int) (domain.User, error)
GetAll(username string) ([]domain.User, error)
FindOne(username, email string) (domain.User, error)
Register(email, hashedPassword, username string, dateOfBirth time.Time) (domain.User, error)
}
type Chat interface{}
type Message interface {
Get(ID domain.UUID) (domain.RawMessage, error)
GetByIDs(IDs []domain.UUID) ([]domain.RawMessage, error)
GetSome(messagesInfo GetSome) ([]domain.RawMessage, error)
Send(message SendMessage) (domain.RawMessage, error)
Delete(ID domain.UUID) error
Edit(newMessage EditMessage) error
Pin(msg PinMessage) error
Unpin(msg UnpinMessage) error
GetPinnedIDs(chatID int) ([]domain.UUID, error)
}
type Repo interface {
User
Chat
Message
}
type Repository struct {
User
Chat
Message
}
func NewRepository(db *sqlx.DB, l *logger.Logger, mdb *mongo.Database) *Repository {
return &Repository{
User: newUserRepo(db, l),
Message: newMessageRepo(db, mdb, l),
}
}