xolodniy / queryBuilder

Abstraction over the gorm.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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
}

About

Abstraction over the gorm.io


Languages

Language:Go 100.0%