kopia lustrzana https://github.com/reiver/greatape
feat: 🎨 enhance storage and logging factories
rodzic
56ded965d9
commit
8488e6f657
|
@ -6,11 +6,14 @@ import (
|
|||
"config"
|
||||
"db"
|
||||
"fmt"
|
||||
"logging"
|
||||
"server"
|
||||
)
|
||||
|
||||
func main() {
|
||||
storage := db.NewSqliteStorage()
|
||||
logger := logging.CreateLogger(logging.StdIOLogger)
|
||||
|
||||
storage := db.CreateStorage(db.SqliteStorage)
|
||||
storage.Connect(config.SQLITE_DB)
|
||||
storage.Migrate(
|
||||
&repos.User{},
|
||||
|
@ -22,6 +25,7 @@ func main() {
|
|||
|
||||
app := server.New()
|
||||
app.SetStorageProvider(storage)
|
||||
app.SetLogger(logger)
|
||||
|
||||
app.Bind(
|
||||
routes.Root,
|
||||
|
|
|
@ -1,8 +1,12 @@
|
|||
package contracts
|
||||
|
||||
type ILogger interface {
|
||||
Info(...any)
|
||||
Debug(...any)
|
||||
Error(...any)
|
||||
Fatal(...any)
|
||||
}
|
||||
type (
|
||||
LoggerType int
|
||||
|
||||
ILogger interface {
|
||||
Info(...any)
|
||||
Debug(...any)
|
||||
Error(...any)
|
||||
Fatal(...any)
|
||||
}
|
||||
)
|
||||
|
|
|
@ -91,6 +91,7 @@ type (
|
|||
Listen(address string)
|
||||
|
||||
SetStorageProvider(IStorage)
|
||||
SetLogger(ILogger)
|
||||
}
|
||||
|
||||
IRouter interface {
|
||||
|
|
|
@ -1,20 +1,24 @@
|
|||
package contracts
|
||||
|
||||
type IStorage interface {
|
||||
// Connect initiate the database connection
|
||||
Connect(path string)
|
||||
// Migrate migrates all the database tables
|
||||
Migrate(...interface{}) error
|
||||
Prepare(string) IQuery
|
||||
}
|
||||
type (
|
||||
StorageType int
|
||||
|
||||
type IQuery interface {
|
||||
Param(string) IResult
|
||||
Params(...string) IResult
|
||||
}
|
||||
IStorage interface {
|
||||
// Connect initiate the database connection
|
||||
Connect(path string)
|
||||
// Migrate migrates all the database tables
|
||||
Migrate(...interface{}) error
|
||||
Prepare(string) IQuery
|
||||
}
|
||||
|
||||
type IResult interface {
|
||||
Get(string) any
|
||||
Set(string, string)
|
||||
Length() int
|
||||
}
|
||||
IQuery interface {
|
||||
Param(string) IResult
|
||||
Params(...string) IResult
|
||||
}
|
||||
|
||||
IResult interface {
|
||||
Get(string) any
|
||||
Set(string, string)
|
||||
Length() int
|
||||
}
|
||||
)
|
||||
|
|
|
@ -1 +1,16 @@
|
|||
package db
|
||||
|
||||
import "contracts"
|
||||
|
||||
const (
|
||||
SqliteStorage contracts.StorageType = 0
|
||||
)
|
||||
|
||||
func CreateStorage(componentType contracts.StorageType) contracts.IStorage {
|
||||
switch componentType {
|
||||
case SqliteStorage:
|
||||
return NewSqliteStorage()
|
||||
default:
|
||||
panic("unknown_storage_type")
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@ use (
|
|||
./config
|
||||
./contracts
|
||||
./db
|
||||
./log
|
||||
./logging
|
||||
./server
|
||||
./utility
|
||||
)
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
package log
|
|
@ -1,3 +0,0 @@
|
|||
module log
|
||||
|
||||
go 1.19
|
|
@ -0,0 +1,16 @@
|
|||
package logging
|
||||
|
||||
import "contracts"
|
||||
|
||||
const (
|
||||
StdIOLogger contracts.LoggerType = 0
|
||||
)
|
||||
|
||||
func CreateLogger(componentType contracts.LoggerType) contracts.ILogger {
|
||||
switch componentType {
|
||||
case StdIOLogger:
|
||||
return New(true)
|
||||
default:
|
||||
panic("unknown_logger_type")
|
||||
}
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
module logging
|
||||
|
||||
go 1.19
|
|
@ -1,4 +1,4 @@
|
|||
package log
|
||||
package logging
|
||||
|
||||
import (
|
||||
"contracts"
|
|
@ -19,6 +19,7 @@ import (
|
|||
type httpServer struct {
|
||||
framework *fiber.App
|
||||
storage IStorage
|
||||
logger ILogger
|
||||
}
|
||||
|
||||
func authorization(c *fiber.Ctx) error {
|
||||
|
@ -87,6 +88,10 @@ func (server *httpServer) SetStorageProvider(storage IStorage) {
|
|||
server.storage = storage
|
||||
}
|
||||
|
||||
func (server *httpServer) SetLogger(logger ILogger) {
|
||||
server.logger = logger
|
||||
}
|
||||
|
||||
func (server *httpServer) Bind(routes ...IRoute) {
|
||||
for _, route := range routes {
|
||||
func(route IRoute) {
|
||||
|
|
Ładowanie…
Reference in New Issue