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), } }