123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- package main
- import (
- "net/http"
- "time"
- "git.linuxforward.com/byom/byom-golang-lib/pkg/config"
- "git.linuxforward.com/byom/byom-golang-lib/pkg/database"
- "git.linuxforward.com/byom/byom-golang-lib/pkg/errors"
- "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/storage"
- "github.com/gin-gonic/gin"
- "github.com/minio/minio-go/v7"
- )
- func main() {
- // Initialize logger
- log, err := logger.NewLogger(&config.Log{
- Level: "info",
- Format: "text",
- NoColor: false,
- })
- if err != nil {
- panic(err)
- }
- // Initialize SQLite
- db, err := database.NewSQLiteDB(database.SQLiteConfig{
- Path: "app.db",
- })
- if err != nil {
- log.Fatal(err)
- }
- defer db.Close()
- // Initialize Minio
- minioClient, err := storage.NewMinioClient(storage.MinioConfig{
- Endpoint: "localhost:9000",
- AccessKeyID: "minioadmin",
- SecretAccessKey: "minioadmin",
- UseSSL: false,
- BucketName: "mybucket",
- })
- if err != nil {
- log.Fatal(err)
- }
- // Initialize Gin server with configuration
- srv, err := server.NewGinServer(log, server.ServerConfig{
- AllowedOrigins: []string{"http://localhost:3000"},
- RequestTimeout: 30 * time.Second,
- })
- if err != nil {
- log.Fatal(err)
- }
- // Add health check endpoint
- srv.AddHealthCheck()
- // Add file upload endpoint
- router := srv.Router()
- router.POST("/upload", func(c *gin.Context) {
- file, header, err := c.Request.FormFile("file")
- if err != nil {
- c.Error(errors.NewStorageError("read_form", minioClient.BucketName(), err))
- return
- }
- defer file.Close()
- // Upload the file to Minio using our helper method
- _, err = minioClient.PutObject(
- c.Request.Context(),
- header.Filename,
- file,
- header.Size,
- minio.PutObjectOptions{
- ContentType: header.Header.Get("Content-Type"),
- },
- )
- if err != nil {
- c.Error(errors.NewStorageError("upload", minioClient.BucketName(), err))
- return
- }
- c.JSON(http.StatusOK, gin.H{
- "message": "File uploaded successfully",
- "file": header.Filename,
- })
- })
- // Start server
- if err := router.Run(":8080"); err != nil {
- log.Fatal(err)
- }
- }
|