Last active
April 27, 2021 13:50
-
-
Save djberg96/5023d066406b662546b811f4c6042b23 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // Run "createdb pgstuff" first | |
| package main | |
| import( | |
| "fmt" | |
| "gorm.io/driver/postgres" | |
| "gorm.io/gorm" | |
| "time" | |
| ) | |
| type Model struct { | |
| ID uint `gorm:"primaryKey"` | |
| CreatedAt time.Time `json:"created_at,omitempty"` | |
| UpdatedAt time.Time `json:"updated_at,omitempty"` | |
| } | |
| type Service struct { | |
| Model | |
| Owner string | |
| Name string `gorm:"not null; index"` | |
| PeerDependencies []PeerDependency `gorm:"many2many:peer_memberships"` | |
| } | |
| type PeerDependency struct { | |
| Model | |
| Name string | |
| Owner string | |
| Services []Service `gorm:"many2many:peer_memberships"` | |
| } | |
| func main() { | |
| conf := &gorm.Config{ | |
| PrepareStmt: false, | |
| FullSaveAssociations: false, | |
| SkipDefaultTransaction: true, | |
| } | |
| pconf := postgres.Config{ | |
| DSN: "user=dberger password=dberger dbname=pgstuff", | |
| PreferSimpleProtocol: true, | |
| } | |
| db, err := gorm.Open(postgres.New(pconf), conf) | |
| if err != nil { | |
| panic("failed to connect database") | |
| } | |
| db.AutoMigrate(&Service{}, &PeerDependency{}) | |
| pd1 := PeerDependency{ | |
| Name: "databases", | |
| Owner: "[email protected]", | |
| Services: []Service{ | |
| {Name: "mysql", Owner: "[email protected]"}, | |
| {Name: "postgres", Owner: "[email protected]"}, | |
| }, | |
| } | |
| db.Create(&pd1) | |
| var pd PeerDependency | |
| db.Debug().Preload("Services").First(&pd) | |
| fmt.Printf("PD:\t %v\n\n", pd) | |
| fmt.Printf("SERVICES:\t %v\n\n", pd.Services) | |
| var service Service | |
| db.Preload("PeerDependencies").First(&service) | |
| fmt.Printf("SERVICE 1:\t %v\n\n", service) | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment