Go-Back-Skeleton/vendor/github.com/go-pg/pg
2017-10-21 18:31:02 +02:00
..
internal update dependencies 2017-10-21 18:31:02 +02:00
orm update dependencies 2017-10-21 18:31:02 +02:00
types vendor dependencies with dep 2017-09-25 20:20:52 +02:00
.travis.yml vendor dependencies with dep 2017-09-25 20:20:52 +02:00
bench_test.go vendor dependencies with dep 2017-09-25 20:20:52 +02:00
CHANGELOG.md vendor dependencies with dep 2017-09-25 20:20:52 +02:00
conv_test.go vendor dependencies with dep 2017-09-25 20:20:52 +02:00
db.go update dependencies 2017-10-21 18:31:02 +02:00
db_context.go vendor dependencies with dep 2017-09-25 20:20:52 +02:00
db_no_context.go vendor dependencies with dep 2017-09-25 20:20:52 +02:00
db_test.go vendor dependencies with dep 2017-09-25 20:20:52 +02:00
doc.go vendor dependencies with dep 2017-09-25 20:20:52 +02:00
error.go vendor dependencies with dep 2017-09-25 20:20:52 +02:00
example_array_test.go vendor dependencies with dep 2017-09-25 20:20:52 +02:00
example_hstore_test.go vendor dependencies with dep 2017-09-25 20:20:52 +02:00
example_model_test.go update dependencies 2017-10-21 18:31:02 +02:00
example_placeholders_test.go vendor dependencies with dep 2017-09-25 20:20:52 +02:00
example_test.go vendor dependencies with dep 2017-09-25 20:20:52 +02:00
exampledb_model_test.go vendor dependencies with dep 2017-09-25 20:20:52 +02:00
exampledb_query_test.go vendor dependencies with dep 2017-09-25 20:20:52 +02:00
export_test.go vendor dependencies with dep 2017-09-25 20:20:52 +02:00
hook.go update dependencies 2017-10-21 18:31:02 +02:00
hook_test.go vendor dependencies with dep 2017-09-25 20:20:52 +02:00
LICENSE vendor dependencies with dep 2017-09-25 20:20:52 +02:00
listener.go vendor dependencies with dep 2017-09-25 20:20:52 +02:00
listener_test.go vendor dependencies with dep 2017-09-25 20:20:52 +02:00
loader_test.go vendor dependencies with dep 2017-09-25 20:20:52 +02:00
main_test.go vendor dependencies with dep 2017-09-25 20:20:52 +02:00
Makefile vendor dependencies with dep 2017-09-25 20:20:52 +02:00
messages.go vendor dependencies with dep 2017-09-25 20:20:52 +02:00
options.go update dependencies 2017-10-21 18:31:02 +02:00
options_test.go vendor dependencies with dep 2017-09-25 20:20:52 +02:00
pg.go vendor dependencies with dep 2017-09-25 20:20:52 +02:00
pool_test.go vendor dependencies with dep 2017-09-25 20:20:52 +02:00
race_test.go vendor dependencies with dep 2017-09-25 20:20:52 +02:00
README.md vendor dependencies with dep 2017-09-25 20:20:52 +02:00
result.go vendor dependencies with dep 2017-09-25 20:20:52 +02:00
stmt.go update dependencies 2017-10-21 18:31:02 +02:00
time.go vendor dependencies with dep 2017-09-25 20:20:52 +02:00
tx.go update dependencies 2017-10-21 18:31:02 +02:00
tx_test.go vendor dependencies with dep 2017-09-25 20:20:52 +02:00

PostgreSQL client and ORM for Golang

Build Status GoDoc

Features:

Get Started

Look & Feel

package pg_test

import (
   "fmt"

   "github.com/go-pg/pg"
)

type User struct {
   Id     int64
   Name   string
   Emails []string
}

func (u User) String() string {
   return fmt.Sprintf("User<%d %s %v>", u.Id, u.Name, u.Emails)
}

type Story struct {
   Id       int64
   Title    string
   AuthorId int64
   Author   *User
}

func (s Story) String() string {
   return fmt.Sprintf("Story<%d %s %s>", s.Id, s.Title, s.Author)
}

func ExampleDB_Model() {
   db := pg.Connect(&pg.Options{
      User: "postgres",
   })

   err := createSchema(db)
   if err != nil {
      panic(err)
   }

   user1 := &User{
      Name:   "admin",
      Emails: []string{"admin1@admin", "admin2@admin"},
   }
   err = db.Insert(user1)
   if err != nil {
      panic(err)
   }

   err = db.Insert(&User{
      Name:   "root",
      Emails: []string{"root1@root", "root2@root"},
   })
   if err != nil {
      panic(err)
   }

   story1 := &Story{
      Title:    "Cool story",
      AuthorId: user1.Id,
   }
   err = db.Insert(story1)
   if err != nil {
      panic(err)
   }

   // Select user by primary key.
   user := User{Id: user1.Id}
   err = db.Select(&user)
   if err != nil {
      panic(err)
   }

   // Select all users.
   var users []User
   err = db.Model(&users).Select()
   if err != nil {
      panic(err)
   }

   // Select story and associated author in one query.
   var story Story
   err = db.Model(&story).
      Column("story.*", "Author").
      Where("story.id = ?", story1.Id).
      Select()
   if err != nil {
      panic(err)
   }

   fmt.Println(user)
   fmt.Println(users)
   fmt.Println(story)
   // Output: User<1 admin [admin1@admin admin2@admin]>
   // [User<1 admin [admin1@admin admin2@admin]> User<2 root [root1@root root2@root]>]
   // Story<1 Cool story User<1 admin [admin1@admin admin2@admin]>>
}

func createSchema(db *pg.DB) error {
   for _, model := range []interface{}{&User{}, &Story{}} {
      err := db.CreateTable(model, nil)
      if err != nil {
         return err
      }
   }
   return nil
}

See also