func main() { r := gin.Default() api := api2go.NewAPIWithRouting( "v0", api2go.NewStaticResolver("/"), gingonic.New(r), ) db, err := storage.InitDB() if err != nil { panic(err) } defer db.Close() userStorage := storage.NewUserStorage(db) chocStorage := storage.NewChocolateStorage(db) api.AddResource(model.User{}, resource.UserResource{ChocStorage: chocStorage, UserStorage: userStorage}) api.AddResource(model.Chocolate{}, resource.ChocolateResource{ChocStorage: chocStorage, UserStorage: userStorage}) r.GET("/ping", func(c *gin.Context) { c.String(200, "pong") }) r.Run(":31415") // listen and serve on 0.0.0.0:31415 }
"github.com/manyminds/api2go" _ "github.com/mattn/go-sqlite3" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) // there are a lot of functions because each test can be run individually and sets up the complete // environment. That is because we run all the specs randomized. var _ = Describe("CrudExample", func() { var rec *httptest.ResponseRecorder var db *gorm.DB BeforeEach(func() { api = api2go.NewAPIWithBaseURL("v0", "http://localhost:31415") var err error db, err = storage.InitDB() if err != nil { panic(err) } userStorage := storage.NewUserStorage(db) chocStorage := storage.NewChocolateStorage(db) api.AddResource(model.User{}, resource.UserResource{ChocStorage: chocStorage, UserStorage: userStorage}) api.AddResource(model.Chocolate{}, resource.ChocolateResource{ChocStorage: chocStorage, UserStorage: userStorage}) rec = httptest.NewRecorder() }) AfterEach(func() { db.Exec("DROP TABLE chocolates") db.Exec("DROP TABLE users") db.Close() })