func Services(config *AppConfig, l logger.ILog) component.Core {
	db := Database(config.Database, l)
	q := query.New(db)
	b := bind.New()
	resp := response.New()
	t := webtoken.New(config.JWT.Secret)
	p := passhash.New()
	core := component.NewCore(l, db, q, b, resp, t, p)
	return core
}
*****************************************************************************
Application Logic
*****************************************************************************
Services will set up the production services.
package webapi
import (
	"encoding/json"
	"fmt"
	"log"
	"net/http"
	"os"
	"time"
	"app/webapi/component"
	"app/webapi/component/auth"
	"app/webapi/component/root"
	"app/webapi/component/user"
	"app/webapi/internal/basemigrate"
	"app/webapi/internal/bind"
	"app/webapi/internal/response"
	"app/webapi/middleware"
	"app/webapi/model"
	"app/webapi/pkg/database"
	"app/webapi/pkg/logger"
	"app/webapi/pkg/passhash"
	"app/webapi/pkg/query"
	"app/webapi/pkg/router"
	"app/webapi/pkg/server"
	"app/webapi/pkg/webtoken"
)
type AppConfig struct {
	Database database.Connection    `json:"Database"`
	Server   server.Config          `json:"Server"`
	JWT      webtoken.Configuration `json:"JWT"`
}
func (c *AppConfig) ParseJSON(b []byte) error {
	return json.Unmarshal(b, &c)
}