Skip to content

xolodniy/queryBuilder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

queryBuilder

Abstraction over the gorm.io

readme wip until first version isn't tested

Expected Usage:

  1. init model with query builder
func New(connURL string) *Model {
	postgres.New(postgres.Config{})
	db, err := gorm.Open(postgres.Open(connURL), &gorm.Config{})
	if err != nil {
		logrus.WithError(err).Fatal("can't connect to database")
	}
	return &Model{
		db: db,
		QB: queryBuilder.New(db, "business_network", common.ErrInternal, common.ErrNotFound),
	}
}
  1. Use qb on top-tier for make common simply queries without worries about tracing and logging errors
func (a *Application) DoSomethingWithUsers(filter model.User) error {
    var users []model.User
    if err := a.model.Where(filter).Find(&users); err != nil {
        return err
    }
    // do something
}

// FIXME: Does not work as expected. // TODO: Find solution for use custom project-related methods.

func (a *Application) DoSomethingWithUsers(filter model.User, limit int) error {
    users, err := a.model.Preload("Friends").CustomFindMethod(&users)
	if err != nil {
        return err
    }
    // do something
}