Categorygithub.com/cs3238-tsuzu/sqlx-selector/v2
modulepackage
2.2.2
Repository: https://github.com/cs3238-tsuzu/sqlx-selector.git
Documentation: pkg.go.dev

# README

sqlx-selector

  • SELECT columns helper library for sqlx
  • Maybe useful for queries using JOIN

Installation

go get github.com/cs3238-tsuzu/sqlx-selector/v2

Usage

with sqlx

package main

import (
	"fmt"
	"time"

	sqlxselect "github.com/cs3238-tsuzu/sqlx-selector/v2"
)

func main() {
	type User struct {
		ID             string `db:"id"`
		Name           string `db:"name"`
		OrganizationID string `db:"org_id"`
	}
	type Organization struct {
		ID   string `db:"id"`
		Name string `db:"name"`
	}

	var joined struct {
		User          *User         `db:"u"`
		Organization  *Organization `db:"org"`
		UserUpdatedAt time.Time     `db:"updated_at"`
	}

	fmt.Println(
		`SELECT ` +
			sqlxselect.New(&joined).
				SelectAs("u.updated_at", "updated_at").
				SelectStructAs("u.*", "u.*", "id", "name"). // select only id and name
				SelectStructAs("org.*", "org.*").
				String() +
			`FROM users AS u INNER JOIN organizations AS org ON u.org_id = org.id LIMIT 1`,
	)
}

# Functions

New generates SqlxSelector with default mapper.
NewWithMapper generates SqlxSelector with specified mapper.

# Variables

Backquote for MySQL.
DefaultColumnEscaper is used in New/NewWithMapper.
Doublequote for SQLite and PostgreSQL.

# Structs

SqlxSelector is a generator of columns in SELECT query.

# Type aliases

ColumnEscaper is a helper to escape column names.