feat: add configurable data directory and file-based logging
Introduce the `WARPBOX_DATA_DIR` environment variable to define where runtime data is stored. This directory will house uploaded files, the bbolt metadata database, and application logs. Changes include: - Added `WARPBOX_DATA_DIR` to configuration, defaulting to `./data`. - Implemented a custom logging package that writes JSONL logs to the data directory. - Updated `.gitignore` and `.env.example` to support the new data directory. - Documented the runtime data structure in `README.md`. - Updated the frontend upload script to handle form submission and display results.
This commit is contained in:
@@ -17,7 +17,10 @@ func New(cfg config.Config, logger *slog.Logger) (*http.Server, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
uploadService := services.NewUploadService(cfg.MaxUploadSize)
|
||||
uploadService, err := services.NewUploadService(cfg.MaxUploadSize, cfg.DataDir, cfg.BaseURL, logger)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
app := handlers.NewApp(cfg, logger, renderer, uploadService)
|
||||
|
||||
router := http.NewServeMux()
|
||||
@@ -32,11 +35,18 @@ func New(cfg config.Config, logger *slog.Logger) (*http.Server, error) {
|
||||
middleware.Logger(logger),
|
||||
)
|
||||
|
||||
return &http.Server{
|
||||
server := &http.Server{
|
||||
Addr: cfg.Addr,
|
||||
Handler: handler,
|
||||
ReadTimeout: cfg.ReadTimeout,
|
||||
WriteTimeout: cfg.WriteTimeout,
|
||||
IdleTimeout: cfg.IdleTimeout,
|
||||
}, nil
|
||||
}
|
||||
server.RegisterOnShutdown(func() {
|
||||
if err := uploadService.Close(); err != nil {
|
||||
logger.Error("failed to close upload service", "source", "shutdown", "error", err.Error())
|
||||
}
|
||||
})
|
||||
|
||||
return server, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user