yesql

Yesql parse SQL files with multiple named queries and automatically prepare and scan them into structs.

BSD-2-CLAUSE License

Stars
6
Committers
2

Bot releases are visible (Hide)

yesql - v1.0.0

Published by alimy over 1 year ago

  • first v1.0 release
yesql - v0.9.1

Published by alimy over 1 year ago

  • PreparexContext interface add Rebind(...) method
yesql - v0.9.0

Published by alimy over 1 year ago

  • fixed generate code of sql query string is not correct error
  • add SetDefaultGenerator(g Generator) function to set default generator
  • rename Generate(g Generator, sqlFilePath string, dstPath string, pkgName string, opts ...option) error => Generate(sqlFilePath string, dstPath string, pkgName string, opts ...option) error

To generate code just do this:

package main

import (
	"log"

	"github.com/alimy/yesql"
)

//go:generate go run $GOFILE
func main() {
	log.Println("Yesql generate code start")
	if err := yesql.Generate("yesql.sql", "auto", "yesql"); err != nil {
		log.Fatalf("generate code occurs error: %s", err)
	}
	log.Println("Yesql generate code finish")
}

yesql - v0.8.0

Published by alimy over 1 year ago

  • add struct type generate automatic by sql file support
yesql - v0.7.0

Published by alimy over 1 year ago

  • optimize sql parser abstract
  • rename SetDefaultQueryHooks(...) => SetDefaultQueryHook(...)
  • optimize SetDefaultPrepareHook(...) logic that reset default prepare hook if give nil param
yesql - v0.6.0

Published by alimy over 1 year ago

  • remove SetDefaultPrepareScanner(scanner PrepareScanner)
  • add SetDefaultPrepareHook(hook PrepareHook)
yesql - v0.5.1

Published by alimy over 1 year ago

  • trim $ when -- name: value is start with $ in sql file
-- name: $comments
-- name of $comments will equal to comments becase '$' is special character for struct tag value
SELECT *
FROM comments;
yesql - v0.5.0

Published by alimy over 1 year ago

  • re-define SQLQuery.ListQuery(namespace string) (QueryMap, error) => SQLQuery.ListQuery(namespace ...string) (QueryMap, error)
var query SQLQuery

// get default QueryMap
defaultQuery, _ := query.ListQuery()

// get deafult QueryMap by empty namespace
defaultQuery, _ = query.ListQuery("")

// get QueryMap by namespace
namespaceQuery, _ := query.ListQuery("namespace")
  • use $name in struct tag value to get default namespace's sql query
var yesqlBytes = `
-- name: simple
-- raw: 1
SELECT * FROM simple;

-- name: multiline@namespace
SELECT *
FROM multiline
WHERE line = 42;
`

func TestScan(t *testing.T) {
	var q struct {
		yesql.Namespace   `yesql:"namespace"`
		Ignore      string
		SimpleQuery string `yesql:"$simple"`
		RawQuery    string `yesql:"multiline"`
	}
	queries := yesql.MustParseBytes(yesqlBytes)
	err := yesql.Scan(&q, queries, NewPrepareHook(nil))
	if err != nil {
		t.Errorf("[q] failed to scan raw query to struct: %s", err)
	}
	if q.SimpleQuery != `SELECT * FROM simple;` {
		t.Errorf("[q] want simple query but got %s", q.SimpleQuery)
	}
	if q.RawQuery != `SELECT * FROM multiline WHERE line = 42;` {
		t.Errorf("[q] want raw query but got %s", q.RawQuery)
	}
}
yesql - v0.4.0

Published by alimy over 1 year ago

  • add PrepareContext/PreparexContext abstract interface
yesql - v0.2.0

Published by alimy over 1 year ago

  • rename type yesql.Namespace to yesql.Scope
  • add Use(...)/UseSqlx(...)/SetDefaultQueryHooks(...) help function
yesql - v0.1.0

Published by alimy over 1 year ago

  • just first release
Package Rankings
Top 9.51% on Proxy.golang.org
Badges
Extracted from project README
Go GoDoc Sourcegraph
Related Projects