Bot releases are hidden (Show)
Published by alimy over 1 year ago
Published by alimy over 1 year ago
PreparexContext
interface add Rebind(...)
methodPublished by alimy over 1 year ago
SetDefaultGenerator(g Generator)
function to set default generatorGenerate(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")
}
Published by alimy over 1 year ago
Published by alimy over 1 year ago
Published by alimy over 1 year ago
Published by alimy over 1 year ago
$
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;
Published by alimy over 1 year ago
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")
$name
in struct tag value to get default namespace's sql queryvar 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)
}
}
Published by alimy over 1 year ago
Published by alimy over 1 year ago
Published by alimy over 1 year ago