add sqlite server
This commit is contained in:
@@ -2,6 +2,7 @@ package api
|
||||
|
||||
import (
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"go.uber.org/dig"
|
||||
)
|
||||
|
||||
/*
|
||||
@@ -12,8 +13,8 @@ Initializes Web API Routes.
|
||||
Args:
|
||||
*fiber.App: Fiber Application.
|
||||
*/
|
||||
func Init(app *fiber.App) {
|
||||
Routes(app)
|
||||
func Init(di *dig.Container, app *fiber.App) {
|
||||
Routes(di, app)
|
||||
}
|
||||
|
||||
type API struct {
|
||||
|
||||
@@ -19,8 +19,7 @@ Initializes web api controllers and its corresponding routes.
|
||||
Args:
|
||||
*fiber.App: Fiber Application
|
||||
*/
|
||||
func Routes(app *fiber.App) {
|
||||
c := dig.New()
|
||||
func Routes(di *dig.Container, app *fiber.App) {
|
||||
groups := app.Group(configs.Prefix)
|
||||
|
||||
basicAuthConfig := basicauth.New(basicauth.Config{
|
||||
@@ -35,9 +34,9 @@ func Routes(app *fiber.App) {
|
||||
|
||||
routeGroups.Api.Use(basicAuthConfig)
|
||||
|
||||
c.Provide(func() *common.RouteGroups {
|
||||
di.Provide(func() *common.RouteGroups {
|
||||
return routeGroups
|
||||
})
|
||||
|
||||
controller.InitializeControllers(c)
|
||||
controller.InitializeControllers(di)
|
||||
}
|
||||
|
||||
35
local/repository/api.go
Normal file
35
local/repository/api.go
Normal file
@@ -0,0 +1,35 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"acc-server-manager/local/model"
|
||||
"context"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type ApiRepository struct {
|
||||
db *gorm.DB
|
||||
}
|
||||
|
||||
func NewApiRepository(db *gorm.DB) *ApiRepository {
|
||||
return &ApiRepository{
|
||||
db: db,
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
GetFirst
|
||||
|
||||
Gets first row from API table.
|
||||
|
||||
Args:
|
||||
context.Context: Application context
|
||||
Returns:
|
||||
model.ApiModel: Api object from database.
|
||||
*/
|
||||
func (as ApiRepository) GetFirst(ctx context.Context) model.ApiModel {
|
||||
db := as.db.WithContext(ctx)
|
||||
apiModel := model.ApiModel{Api: "Works"}
|
||||
db.First(&apiModel)
|
||||
return apiModel
|
||||
}
|
||||
17
local/repository/repository.go
Normal file
17
local/repository/repository.go
Normal file
@@ -0,0 +1,17 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"go.uber.org/dig"
|
||||
)
|
||||
|
||||
/*
|
||||
InitializeRepositories
|
||||
|
||||
Initializes Dependency Injection modules for repositories
|
||||
|
||||
Args:
|
||||
*dig.Container: Dig Container
|
||||
*/
|
||||
func InitializeRepositories(c *dig.Container) {
|
||||
c.Provide(NewApiRepository)
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"acc-server-manager/local/repository"
|
||||
"acc-server-manager/local/utl/configs"
|
||||
"os/exec"
|
||||
|
||||
@@ -8,10 +9,13 @@ import (
|
||||
)
|
||||
|
||||
type ApiService struct {
|
||||
Repository *repository.ApiRepository
|
||||
}
|
||||
|
||||
func NewApiService() *ApiService {
|
||||
return &ApiService{}
|
||||
func NewApiService(repository *repository.ApiRepository) *ApiService {
|
||||
return &ApiService{
|
||||
Repository: repository,
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
17
local/utl/db/db.go
Normal file
17
local/utl/db/db.go
Normal file
@@ -0,0 +1,17 @@
|
||||
package db
|
||||
|
||||
import (
|
||||
"go.uber.org/dig"
|
||||
"gorm.io/driver/sqlite"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
func Start(di *dig.Container) {
|
||||
db, err := gorm.Open(sqlite.Open("acc.db"), &gorm.Config{})
|
||||
if err != nil {
|
||||
panic("failed to connect database")
|
||||
}
|
||||
di.Provide(func() *gorm.DB {
|
||||
return db
|
||||
})
|
||||
}
|
||||
@@ -1,22 +1,41 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
"acc-server-manager/local/api"
|
||||
"acc-server-manager/local/utl/common"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"github.com/gofiber/fiber/v2/middleware/cors"
|
||||
"github.com/gofiber/swagger"
|
||||
"go.uber.org/dig"
|
||||
)
|
||||
|
||||
func Start(r *fiber.App) *fiber.App {
|
||||
r.Get("/ping", func(c *fiber.Ctx) error {
|
||||
func Start(di *dig.Container) *fiber.App {
|
||||
app := fiber.New()
|
||||
|
||||
app.Use(cors.New())
|
||||
|
||||
app.Get("/swagger/*", swagger.HandlerDefault)
|
||||
|
||||
file, err := os.OpenFile("logs.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0666)
|
||||
if err != nil {
|
||||
log.Print("Cannot open file logs.log")
|
||||
}
|
||||
log.SetOutput(file)
|
||||
|
||||
api.Init(di, app)
|
||||
|
||||
app.Get("/ping", func(c *fiber.Ctx) error {
|
||||
return c.SendString("pong")
|
||||
})
|
||||
port := os.Getenv("PORT")
|
||||
err := r.Listen(":" + port)
|
||||
err = app.Listen(":" + port)
|
||||
if err != nil {
|
||||
msg := fmt.Sprintf("Running on %s:%s", common.GetIP(), port)
|
||||
println(msg)
|
||||
}
|
||||
return r
|
||||
return app
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user