From fbe73e2a68f79e246f9a702f6b16487e915b29a7 Mon Sep 17 00:00:00 2001 From: Nikolai Papin Date: Sun, 27 Jul 2025 16:14:12 +0300 Subject: [PATCH] feat: bucket precreation for minioclient --- backend/internal/minioClient/buckets.go | 47 +++++++++++++++++++++ backend/internal/minioClient/minioClient.go | 2 + 2 files changed, 49 insertions(+) create mode 100644 backend/internal/minioClient/buckets.go diff --git a/backend/internal/minioClient/buckets.go b/backend/internal/minioClient/buckets.go new file mode 100644 index 0000000..be052bb --- /dev/null +++ b/backend/internal/minioClient/buckets.go @@ -0,0 +1,47 @@ +// Copyright (c) 2025 Nikolai Papin +// +// This file is part of Easywish +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See +// the GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +package minioclient + +import ( + "context" + + "github.com/minio/minio-go/v7" +) + +var buckets map[string]string + +func setupBuckets(client *minio.Client) { + + buckets = map[string]string{ + "avatars": "avatars", + "images": "images", + } + + ctx := context.Background() + for _, value := range buckets { + + if bucketExists, err := client.BucketExists(ctx, value); err != nil { + panic("Failure to check if bucket '" + value + "' exists: " + err.Error()) + } else if !bucketExists { + err := client.MakeBucket(ctx, value, minio.MakeBucketOptions{}); if err != nil { + panic("Failure to create bucket '" + value + "': " + err.Error()) + } + } + + } +} diff --git a/backend/internal/minioClient/minioClient.go b/backend/internal/minioClient/minioClient.go index 501b6b8..90b36d7 100644 --- a/backend/internal/minioClient/minioClient.go +++ b/backend/internal/minioClient/minioClient.go @@ -53,5 +53,7 @@ func NewMinioClient() *minio.Client { panic("Failed to communicate with minio: " + err.Error()) } + setupBuckets(client) + return client }