From f110099bc13f112064fbafacc264ebbb93f6eaac Mon Sep 17 00:00:00 2001 From: itschip Date: Tue, 23 Dec 2025 22:10:36 +0100 Subject: [PATCH] tweak(cmd): only enable clickhouse with ENV --- cmd/lite/lite.go | 24 ++++++++++++++++-------- internal/clickhouse/client.go | 17 ++++++++++++++--- internal/http/httputil/mime.go | 3 +-- internal/http/middleware/mime.go | 6 +++--- internal/service/file/file_service.go | 2 ++ 5 files changed, 36 insertions(+), 16 deletions(-) diff --git a/cmd/lite/lite.go b/cmd/lite/lite.go index 504d620..a6b4712 100644 --- a/cmd/lite/lite.go +++ b/cmd/lite/lite.go @@ -80,8 +80,12 @@ var rootCmd = &cobra.Command{ Database: viper.GetString("clickhouse-database"), } - clickhouse.AutoMigrate(cmd.Context(), chConfig) - clickhouseClient := clickhouse.NewClient(chConfig) + clickhouseEnabled := shouldInitClickhouse(chConfig.Host) + if clickhouseEnabled { + clickhouse.AutoMigrate(cmd.Context(), chConfig) + } + + clickhouseClient := clickhouse.NewClient(chConfig, clickhouseEnabled) s3Provider := viper.GetString("s3-provider") storageLayer := storage.New(s3Provider) @@ -215,15 +219,19 @@ func init() { ) } -func main() { - if err := rootCmd.Execute(); err != nil { - panic(err) - } -} - func bindError(err error) { if err != nil { slog.Error("failed to bind env", slog.Any("error", err)) os.Exit(1) } } + +func shouldInitClickhouse(clickhouseHost string) bool { + return clickhouseHost != "" +} + +func main() { + if err := rootCmd.Execute(); err != nil { + panic(err) + } +} diff --git a/internal/clickhouse/client.go b/internal/clickhouse/client.go index f05ea81..8a0302d 100644 --- a/internal/clickhouse/client.go +++ b/internal/clickhouse/client.go @@ -4,6 +4,7 @@ import ( "context" "errors" "fmt" + "log/slog" "time" "github.com/ClickHouse/clickhouse-go/v2" @@ -18,7 +19,8 @@ type Config struct { } type Client struct { - conn driver.Conn + conn driver.Conn + Enabled bool } type Log struct { @@ -36,8 +38,17 @@ type LogField struct { Type string } -func NewClient(config *Config) *Client { - c := &Client{} +func NewClient(config *Config, enabled bool) *Client { + if !enabled { + slog.Warn("clickhosue is disabled, logging is not available") + return &Client{ + Enabled: false, + } + } + + c := &Client{ + Enabled: true, + } options := getClickhouseOptions(config) conn, err := connect(options) diff --git a/internal/http/httputil/mime.go b/internal/http/httputil/mime.go index b8a78d2..f9a5443 100644 --- a/internal/http/httputil/mime.go +++ b/internal/http/httputil/mime.go @@ -12,8 +12,7 @@ func GetMimeDetails(fileHeader *multipart.FileHeader, file multipart.File) (stri var err error var fileType string - // Get the file type from the header - buf := make([]byte, fileHeader.Size) + buf := make([]byte, 3072) _, err = file.Read(buf) if err != nil { return "", "", "", fmt.Errorf("error reading file: %w", err) diff --git a/internal/http/middleware/mime.go b/internal/http/middleware/mime.go index 8131c2e..b908354 100644 --- a/internal/http/middleware/mime.go +++ b/internal/http/middleware/mime.go @@ -40,15 +40,15 @@ func ValidateMime(fileKey string, whitelistedTypes []string) echo.MiddlewareFunc return func(next echo.HandlerFunc) echo.HandlerFunc { return func(ctx echo.Context) error { var err error - file, header, err := httputil.File(ctx.Request(), fileKey) + file, _, err := httputil.File(ctx.Request(), fileKey) if err != nil { - fmt.Printf("Failed to fine formdata file. Error: %v\n", err) + fmt.Printf("Failed to find FormData file. Error: %v\n", err) return ctx.JSON(http.StatusBadRequest, echo.Map{ "error": err.Error(), }) } - buf := make([]byte, header.Size) + buf := make([]byte, 3072) _, err = file.Read(buf) if err != nil { fmt.Printf("Failed to read buffer. Error: %v\n", err) diff --git a/internal/service/file/file_service.go b/internal/service/file/file_service.go index 9b2013b..0c4d60e 100644 --- a/internal/service/file/file_service.go +++ b/internal/service/file/file_service.go @@ -29,6 +29,7 @@ func NewService(db *bun.DB, storageLayer storage.StorageLayer) *Service { } } +// this is used in the public api only func (s *Service) CreateFile( ctx context.Context, organizationID string, @@ -103,6 +104,7 @@ func (s *Service) CreateFile( return nil } +// uhhh, this is used in the dashboard, not the public api func (s *Service) CreateStorageFile( ctx context.Context, organizationID string,