add sqlite server

This commit is contained in:
Fran Jurmanović
2024-07-12 20:40:30 +02:00
parent 475a2bb4c4
commit edd1806de9
10 changed files with 124 additions and 34 deletions

View File

@@ -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 {

View File

@@ -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
View 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
}

View 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)
}

View File

@@ -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
View 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
})
}

View File

@@ -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
}