93 lines
2.4 KiB
Go
93 lines
2.4 KiB
Go
package repository
|
|
|
|
import (
|
|
"context"
|
|
|
|
dbgen "github.com/SamuelTariku/FortuneBet-Backend/gen/db"
|
|
"github.com/SamuelTariku/FortuneBet-Backend/internal/domain"
|
|
"github.com/jackc/pgx/v5/pgtype"
|
|
)
|
|
|
|
func convertCreateCompany(company domain.CreateCompany) dbgen.CreateCompanyParams {
|
|
return dbgen.CreateCompanyParams{
|
|
Name: company.Name,
|
|
AdminID: company.AdminID,
|
|
WalletID: company.WalletID,
|
|
}
|
|
}
|
|
|
|
func convertDBCompany(dbCompany dbgen.Company) domain.Company {
|
|
return domain.Company{
|
|
ID: dbCompany.ID,
|
|
Name: dbCompany.Name,
|
|
AdminID: dbCompany.AdminID,
|
|
WalletID: dbCompany.WalletID,
|
|
}
|
|
}
|
|
|
|
func (s *Store) CreateCompany(ctx context.Context, company domain.CreateCompany) (domain.Company, error) {
|
|
dbCompany, err := s.queries.CreateCompany(ctx, convertCreateCompany(company))
|
|
if err != nil {
|
|
return domain.Company{}, err
|
|
}
|
|
return convertDBCompany(dbCompany), nil
|
|
}
|
|
|
|
func (s *Store) GetAllCompanies(ctx context.Context) ([]domain.Company, error) {
|
|
dbCompanies, err := s.queries.GetAllCompanies(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var companies []domain.Company = make([]domain.Company, 0, len(dbCompanies))
|
|
for _, dbCompany := range dbCompanies {
|
|
companies = append(companies, convertDBCompany(dbCompany))
|
|
}
|
|
|
|
return companies, nil
|
|
}
|
|
|
|
func (s *Store) SearchCompanyByName(ctx context.Context, name string) ([]domain.Company, error) {
|
|
dbCompanies, err := s.queries.SearchCompanyByName(ctx, pgtype.Text{
|
|
String: name,
|
|
Valid: true,
|
|
})
|
|
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
var companies []domain.Company = make([]domain.Company, 0, len(dbCompanies))
|
|
|
|
for _, dbCompany := range dbCompanies {
|
|
companies = append(companies, convertDBCompany(dbCompany))
|
|
}
|
|
return companies, nil
|
|
}
|
|
|
|
func (s *Store) GetCompanyByID(ctx context.Context, id int64) (domain.Company, error) {
|
|
dbCompany, err := s.queries.GetCompanyByID(ctx, id)
|
|
|
|
if err != nil {
|
|
return domain.Company{}, err
|
|
}
|
|
return convertDBCompany(dbCompany), nil
|
|
}
|
|
|
|
func (s *Store) UpdateCompany(ctx context.Context, id int64, company domain.UpdateCompany) (domain.Company, error) {
|
|
dbCompany, err := s.queries.UpdateCompany(ctx, dbgen.UpdateCompanyParams{
|
|
ID: id,
|
|
Name: company.Name,
|
|
AdminID: company.AdminID,
|
|
})
|
|
|
|
if err != nil {
|
|
return domain.Company{}, err
|
|
}
|
|
|
|
return convertDBCompany(dbCompany), nil
|
|
}
|
|
|
|
func (s *Store) DeleteCompany(ctx context.Context, id int64) error {
|
|
return s.queries.DeleteCompany(ctx, id)
|
|
}
|