Added db configurations and Dockerfile

This commit is contained in:
Fabio Scotto di Santolo
2025-06-03 18:17:47 +02:00
parent 0c17486015
commit eab9c25885
17 changed files with 889 additions and 51 deletions

View File

@@ -0,0 +1,85 @@
package service
import (
"context"
"fileserver/config"
"fmt"
"github.com/minio/minio-go/v7"
"os"
)
// GetFileFromMinIO retrieves a file from the specified MinIO bucket.
func GetFileFromMinIO(bucketName, objectName string) (*minio.Object, error) {
// Fetch the object from MinIO using the provided bucket name and object name
object, err := config.MinIO.GetObject(context.Background(), bucketName, objectName, minio.GetObjectOptions{})
if err != nil {
// Return error if there is any issue in fetching the object
return nil, fmt.Errorf("error getting object from MinIO: %v", err)
}
// Return the fetched object if successful
return object, nil
}
// UploadFileToMinIO uploads a file to MinIO under the specified bucket and object name.
func UploadFileToMinIO(ctx context.Context, bucketName, objectName, filePath string) error {
// Open the file from the given file path
file, err := os.Open(filePath)
if err != nil {
// Return error if unable to open the file
return fmt.Errorf("failed to open file: %v", err)
}
defer file.Close() // Ensure file is closed after use
// Check if the bucket exists, create it if not
if err = createBucketIfNotExists(ctx, bucketName); err != nil {
// Return error if bucket creation fails
return fmt.Errorf("failed to create bucket: %v", err)
}
// Upload the file to MinIO
_, err = config.MinIO.PutObject(ctx, bucketName, objectName, file, -1, minio.PutObjectOptions{ContentType: "application/octet-stream"})
if err != nil {
// Return error if uploading the file fails
return fmt.Errorf("failed to upload file: %v", err)
}
// Return nil if the file is successfully uploaded
return nil
}
// createBucketIfNotExists checks if the specified bucket exists and creates it if it doesn't.
func createBucketIfNotExists(ctx context.Context, bucketName string) error {
// Check if the bucket already exists
exists, err := config.MinIO.BucketExists(ctx, bucketName)
if err != nil {
// Return error if checking the bucket existence fails
return fmt.Errorf("failed to check if bucket exists: %v", err)
}
// If the bucket doesn't exist, create it
if !exists {
fmt.Println("Bucket does not exist. Creating bucket...")
// Create the bucket with the specified region
err = config.MinIO.MakeBucket(ctx, bucketName, minio.MakeBucketOptions{Region: "us-east-1"})
if err != nil {
// Return error if bucket creation fails
return fmt.Errorf("failed to create bucket: %v", err)
}
fmt.Println("Bucket created successfully!")
}
// Return nil if bucket already exists or is created successfully
return nil
}
// DeleteFileFromMinIO removes a file from the specified MinIO bucket.
func DeleteFileFromMinIO(ctx context.Context, bucketName, objectName string) error {
// Remove the object from the MinIO bucket
err := config.MinIO.RemoveObject(ctx, bucketName, objectName, minio.RemoveObjectOptions{})
if err != nil {
// Return error if deleting the object fails
return fmt.Errorf("error deleting object from MinIO: %v", err)
}
// Log success message after deletion
fmt.Println("File deleted successfully")
// Return nil if file is deleted successfully
return nil
}