diff --git a/examples/quick-start/README.md b/examples/quick-start/README.md new file mode 100644 index 0000000..640b64f --- /dev/null +++ b/examples/quick-start/README.md @@ -0,0 +1,10 @@ + +# Quick start example + +This package contains sample usage for Jet framework. + +Jet generated files of interest are in ./gen folder. + +quick-start.go contains code explained at [README.md](../../README.md#quick-start), +with difference of redirecting json output to files(dest.json and dest2.json) rather then to a +standard output. \ No newline at end of file diff --git a/examples/quick-start/quick-start.go b/examples/quick-start/quick-start.go index edbd582..5317bda 100644 --- a/examples/quick-start/quick-start.go +++ b/examples/quick-start/quick-start.go @@ -5,6 +5,7 @@ import ( "encoding/json" "fmt" _ "github.com/lib/pq" + "io/ioutil" // dot import so go code would resemble as much as native SQL // dot import is not mandatory @@ -12,15 +13,26 @@ import ( . "github.com/go-jet/jet/examples/quick-start/.gen/jetdb/dvds/table" "github.com/go-jet/jet/examples/quick-start/.gen/jetdb/dvds/model" - "github.com/go-jet/jet/tests/dbconfig" +) + +const ( + Host = "localhost" + Port = 5432 + User = "jet" + Password = "jet" + DBName = "jetdb" ) func main() { - db, err := sql.Open("postgres", dbconfig.ConnectString) + // Connect to database + var connectString = fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s sslmode=disable", Host, Port, User, Password, DBName) + + db, err := sql.Open("postgres", connectString) panicOnError(err) defer db.Close() + // Write query stmt := SELECT( Actor.ActorID, Actor.FirstName, Actor.LastName, Actor.LastUpdate, Film.AllColumns, @@ -42,24 +54,13 @@ func main() { Film.FilmID.ASC(), ) - query, args, err := stmt.Sql() - panicOnError(err) - - fmt.Println("Parameterized query: ") - fmt.Println(query) - fmt.Println("Arguments: ") - fmt.Println(args) - - debugSQL, err := stmt.DebugSql() - panicOnError(err) - - fmt.Println("Debug sql: ") - fmt.Println(debugSQL) - + // Execute query and store result var dest []struct { model.Actor + Films []struct { model.Film + Language model.Language Categories []model.Category } @@ -68,9 +69,8 @@ func main() { err = stmt.Query(db, &dest) panicOnError(err) - fmt.Println("dest to json: ") - jsonText, _ := json.MarshalIndent(dest, "", "\t") - fmt.Println(string(jsonText)) + printStatementInfo(stmt) + jsonSave("./dest.json", dest) // New Destination @@ -84,9 +84,35 @@ func main() { err = stmt.Query(db, &dest2) panicOnError(err) - fmt.Println("dest2 to json: ") - jsonText, _ = json.MarshalIndent(dest2, "", "\t") - fmt.Println(string(jsonText)) + jsonSave("./dest2.json", dest2) +} + +func jsonSave(path string, v interface{}) { + jsonText, _ := json.MarshalIndent(v, "", "\t") + + err := ioutil.WriteFile(path, jsonText, 0644) + + if err != nil { + panic(err) + } +} + +func printStatementInfo(stmt Statement) { + query, args, err := stmt.Sql() + panicOnError(err) + + fmt.Println("Parameterized query: ") + fmt.Println(query) + fmt.Println("Arguments: ") + fmt.Println(args) + + debugSQL, err := stmt.DebugSql() + panicOnError(err) + + fmt.Println("\n\n==============================") + + fmt.Println("\n\nDebug sql: ") + fmt.Println(debugSQL) } func panicOnError(err error) {