![]() |
2 veckor sedan | |
---|---|---|
examples | 2 veckor sedan | |
pkg | 2 veckor sedan | |
.gitignore | 2 veckor sedan | |
README.md | 2 veckor sedan | |
go.mod | 2 veckor sedan | |
go.sum | 2 veckor sedan |
A production-ready Go library that provides pre-configured components for building robust web applications. This library simplifies the integration of common services and follows best practices for production environments.
go get git.linuxforward.com/byom/byom-golang-lib
Here's a simple example that demonstrates how to use the main components:
package main
import (
"time"
"git.linuxforward.com/byom/byom-golang-lib/pkg/logger"
"git.linuxforward.com/byom/byom-golang-lib/pkg/server"
"git.linuxforward.com/byom/byom-golang-lib/pkg/database"
)
func main() {
// Initialize logger
log, err := logger.NewLogger(logger.LogConfig{
Level: "info",
Formatter: "text",
})
if err != nil {
panic(err)
}
// Initialize database
db, err := database.NewSQLiteDB(database.SQLiteConfig{
Path: "app.db",
})
if err != nil {
log.Fatal(err)
}
defer db.Close()
// Initialize server
srv, err := server.NewGinServer(log, server.ServerConfig{
AllowedOrigins: []string{"http://localhost:3000"},
RequestTimeout: 30 * time.Second,
})
if err != nil {
log.Fatal(err)
}
// Add routes and start server
srv.AddHealthCheck()
if err := srv.Router().Run(":8080"); err != nil {
log.Fatal(err)
}
}
log, err := logger.NewLogger(logger.LogConfig{
Level: "info", // debug, info, warn, error
Formatter: "text", // text or json
})
db, err := database.NewSQLiteDB(database.SQLiteConfig{
Path: "app.db",
})
defer db.Close()
minioClient, err := storage.NewMinioClient(storage.MinioConfig{
Endpoint: "localhost:9000",
AccessKeyID: "minioadmin",
SecretAccessKey: "minioadmin",
UseSSL: false,
BucketName: "mybucket",
})
token, err := auth.GenerateJWT(auth.Claims{
UserID: "123",
Role: "admin",
})
Use the provided error types for consistent error handling:
if err != nil {
return errors.NewDatabaseError("query", err)
}
Use the config package for managing environment-specific configurations:
cfg, err := config.Load("config.yaml")
The server package includes common middleware for security and monitoring:
This library follows Semantic Versioning. Version numbers follow the format: MAJOR.MINOR.PATCH.
git checkout -b feature/amazing-feature
)git commit -m 'Add amazing feature'
)git push origin feature/amazing-feature
)Run the test suite:
go test ./...
For coverage report:
go test ./... -coverprofile=coverage.out
go tool cover -html=coverage.out
This project is licensed under the MIT License - see the LICENSE file for details.