12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- package main
- import (
- "net/http"
- "time"
- "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(logger.LogConfig{
- Level: "info",
- Formatter: "text",
- })
- 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)
- }
- }
|