package user

import (
	"context"
	"madsky.ru/go-finance/internal/database"
	"madsky.ru/go-finance/internal/user"
)

type Repository interface {
	Find(ctx context.Context) ([]*user.User, error)
	FindOne(ctx context.Context, id uint64) (*user.User, error)
	Create(ctx context.Context, dto *user.CreateUserDTO) (*user.User, error)
	Update(ctx context.Context, id uint64, issue *user.CreateUserDTO) (*user.User, error)
	Remove(ctx context.Context, id uint64) (uint64, error)
}

type repository struct {
	client database.Client
}

func NewRepository(client database.Client) Repository {
	return &repository{
		client: client,
	}
}

func (r *repository) Find(ctx context.Context) ([]*user.User, error) {
	//TODO implement me
	panic("implement me")
}

func (r *repository) FindOne(ctx context.Context, id uint64) (*user.User, error) {
	//TODO implement me
	panic("implement me")
}

func (r *repository) Create(ctx context.Context, dto *user.CreateUserDTO) (*user.User, error) {
	//TODO implement me
	panic("implement me")
}

func (r *repository) Update(ctx context.Context, id uint64, issue *user.CreateUserDTO) (*user.User, error) {
	//TODO implement me
	panic("implement me")
}

func (r repository) Remove(ctx context.Context, id uint64) (uint64, error) {
	//TODO implement me
	panic("implement me")
}
