52 lines
1.2 KiB
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),
|
|
}
|
|
}
|