[add] initial commit
This commit is contained in:
8
config/app.go
Normal file
8
config/app.go
Normal file
@@ -0,0 +1,8 @@
|
||||
package config
|
||||
|
||||
import "gelvin/app/application"
|
||||
|
||||
func configureApp() *application.Application {
|
||||
app := application.NewApplication(Environment().Version, Environment().UrlRoot, Environment().Mode)
|
||||
return app
|
||||
}
|
||||
33
config/config.go
Normal file
33
config/config.go
Normal file
@@ -0,0 +1,33 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"gelvin/app/application"
|
||||
"gelvin/app/controllers"
|
||||
"gelvin/app/models"
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
app *application.Application
|
||||
controller *controllers.Controller
|
||||
model *models.Model
|
||||
}
|
||||
|
||||
func (c Config) App() *application.Application {
|
||||
return c.app
|
||||
}
|
||||
|
||||
func (c Config) Controller() *controllers.Controller {
|
||||
return c.controller
|
||||
}
|
||||
|
||||
func (c Config) Model() *models.Model {
|
||||
return c.model
|
||||
}
|
||||
|
||||
func Configure() *Config {
|
||||
app := configureApp()
|
||||
controller := controllers.NewController(app)
|
||||
configureDb(app)
|
||||
configureRoutes(app, controller)
|
||||
return &Config{app, controller, controller.Model()}
|
||||
}
|
||||
9
config/database.go
Normal file
9
config/database.go
Normal file
@@ -0,0 +1,9 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"gelvin/app/application"
|
||||
)
|
||||
|
||||
func configureDb(app *application.Application) {
|
||||
app.SqliteDB("./db")
|
||||
}
|
||||
51
config/environment.go
Normal file
51
config/environment.go
Normal file
@@ -0,0 +1,51 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"gelvin/app/application"
|
||||
"os"
|
||||
)
|
||||
|
||||
const EnvPrefix = "GELVIN_"
|
||||
|
||||
type environment struct {
|
||||
Mode application.Mode
|
||||
UrlRoot string
|
||||
Version application.Version
|
||||
}
|
||||
|
||||
func Environment() environment {
|
||||
|
||||
var mode application.Mode
|
||||
switch getEnv("MODE") {
|
||||
case "TEST":
|
||||
mode = application.Test
|
||||
case "PRODUCTION":
|
||||
mode = application.Production
|
||||
default:
|
||||
mode = application.Debug
|
||||
}
|
||||
|
||||
var urlRoot string
|
||||
if urlRoot = getEnv("URL_ROOT"); urlRoot == "" {
|
||||
urlRoot = "/"
|
||||
}
|
||||
|
||||
version := parseVersion(getEnv("API_VERSION"))
|
||||
return environment{
|
||||
Mode: mode,
|
||||
UrlRoot: urlRoot,
|
||||
Version: version,
|
||||
}
|
||||
}
|
||||
|
||||
func getEnv(key string) string {
|
||||
return os.Getenv(EnvPrefix + key)
|
||||
}
|
||||
|
||||
func parseVersion(s string) application.Version {
|
||||
version := application.Version{Major: 1}
|
||||
if s != "" {
|
||||
// TODO
|
||||
}
|
||||
return version
|
||||
}
|
||||
30
config/routes.go
Normal file
30
config/routes.go
Normal file
@@ -0,0 +1,30 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"gelvin/app/application"
|
||||
"gelvin/app/controllers"
|
||||
"github.com/gin-contrib/cors"
|
||||
)
|
||||
|
||||
func configureRoutes(app *application.Application, controller *controllers.Controller) {
|
||||
root := app.UrlRoot()
|
||||
router := app.Engine()
|
||||
corsConfig := cors.DefaultConfig()
|
||||
|
||||
// cors
|
||||
corsConfig.AllowOrigins = []string{
|
||||
"http://localhost:8080",
|
||||
}
|
||||
router.Use(cors.New(corsConfig))
|
||||
|
||||
// sensors
|
||||
router.GET(root+"sensors", controller.GetSensors)
|
||||
router.GET(root+"sensors/:id", controller.GetSensor)
|
||||
router.POST(root+"sensors", controller.AddSensor)
|
||||
|
||||
// measurements
|
||||
router.GET(root+"measurements", controller.GetMeasurements)
|
||||
router.GET(root+"measurements/:id", controller.GetMeasurement)
|
||||
router.POST(root+"measurements", controller.AddMeasurement)
|
||||
router.POST(root+"measurements/:id", controller.AddMeasurementID)
|
||||
}
|
||||
Reference in New Issue
Block a user