Skip to content
/ tote Public

A command for loading SQL file contents into Go programs.

License

Notifications You must be signed in to change notification settings

codemodus/tote

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tote

go get "github.com/codemodus/tote"

Tote is a CLI application for generating structs which store SQL queries as defined by the directory and file structure supplied (default is "./sqltote"). Only .sql files are read.

Available flags:

--in={dir}          Set the SQL storage directory.  // "./sqltote"
--out={dir}         Set the tote package directory. // "./"
--file={filename}   Set the tote file name.         // "sqltote.go"
--pkg={package}     Set the tote package name.
--prefix={name}     Set the tote struct prefix.

Normally, this command should be called using go:generate. If called from the command line, "pkg" must be set. The following usage will produce a package named "totepkg" within the "totepkg" directory:

//go:generate tote -in=resources/sql/tote -out=totepkg

The following usage will add a second file to the "totepkg" package:

//go:generate tote -in=other/sql/tote -out=totepkg -prefix=other -file=other.go

Queries are accessible in this way:

import "gitreposrus.com/myproject/totepkg"

func main() {
	// File originally located at "./resources/sql/tote/user/all.sql"
	fmt.Println(totepkg.User.All)

	// File originally located at "./resources/sql/tote/user/role/many_by_user.sql"
	fmt.Println(totepkg.UserRole.ManyByUser)

	// File originally located at "./other/sql/tote/user/one_by_name.sql"
	fmt.Println(totepkg.OtherUser.OneByName)
}

The main caveat seems to be naming collisions which was the primary motivation for the prefix flag. Stay aware and problems can be avoided.

This package started as a fork of smotes/purse.

About

A command for loading SQL file contents into Go programs.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages