func SelectOne(s gorp.SqlExecutor, builder squirrel.SelectBuilder, src interface{}) error { sql, args, err := builder.ToSql() if err != nil { return err } return s.SelectOne(src, sql, args...) }
func (q SqlQuery) Query(ctx context.Context, sql sq.SelectBuilder) (*sqlx.Rows, error) { sql = sql.PlaceholderFormat(sq.Dollar) query, args, err := sql.ToSql() if err != nil { return nil, errors.Wrap(err, 1) } return q.QueryRaw(ctx, query, args) }
// Get gets a single row returned by the provided sql builder into the provided dest. // dest must be a non-slice value of the correct record type. func (q SqlQuery) Get(ctx context.Context, sql sq.SelectBuilder, dest interface{}) error { sql = sql.PlaceholderFormat(sq.Dollar) query, args, err := sql.ToSql() if err != nil { return errors.Wrap(err, 1) } return q.GetRaw(ctx, query, args, dest) }
// loadValue uses QueryBuilder to run SELECT query and fetch single value from database, // use it for getting ID or counter func LoadValue(qb *squirrel.SelectBuilder, buf interface{}) error { query, args, err := qb.ToSql() if err != nil { return err } err = components.App.Db.Unsafe().QueryRow(query, args...).Scan(buf) if err != nil && err != sql.ErrNoRows { return err } return nil }
func LoadStruct(qb *squirrel.SelectBuilder, buf interface{}) error { query, args, err := qb.ToSql() if err != nil { return err } err = components.App.Db.Unsafe().Get(buf, query, args...) if err != nil { return err } return nil }
func (q SqlQuery) Get(ctx context.Context, sql sq.SelectBuilder, dest interface{}) error { db := sqlx.NewDb(q.DB, "postgres") sql = sql.PlaceholderFormat(sq.Dollar) query, args, err := sql.ToSql() if err != nil { return err } return db.Get(dest, query, args...) }
func (q SqlQuery) Select(ctx context.Context, sql sq.SelectBuilder, dest interface{}) error { db := sqlx.NewDb(q.DB, "postgres") sql = sql.PlaceholderFormat(sq.Dollar) query, args, err := sql.ToSql() if err != nil { return err } log.WithField(ctx, "sql", query).Info("Executing query") return db.Select(dest, query, args...) }