From 1b4e0c7669bb02b07515d4790f7cceaac72d2b10 Mon Sep 17 00:00:00 2001 From: Tigor Hutasuhut Date: Tue, 9 Apr 2024 23:17:23 +0700 Subject: [PATCH] config: update more configuration options --- api/api.go | 6 +++++- api/download_subreddit_images.go | 17 ++++++++++++++++- cli/serve.go | 2 +- config/default.go | 20 +++++++++++++++----- 4 files changed, 37 insertions(+), 8 deletions(-) diff --git a/api/api.go b/api/api.go index 1b62487..e803b65 100644 --- a/api/api.go +++ b/api/api.go @@ -7,6 +7,7 @@ import ( "github.com/robfig/cron/v3" "github.com/teivah/broadcast" + "github.com/tigorlazuardi/redmage/config" "github.com/tigorlazuardi/redmage/db/queries" "github.com/tigorlazuardi/redmage/pkg/errs" "github.com/tigorlazuardi/redmage/pkg/log" @@ -20,15 +21,18 @@ type API struct { scheduleMap map[cron.EntryID]queries.Subreddit downloadBroadcast *broadcast.Relay[DownloadStatusMessage] + + config *config.Config } -func New(q *queries.Queries, db *sql.DB) *API { +func New(q *queries.Queries, db *sql.DB, cfg *config.Config) *API { return &API{ queries: q, db: db, scheduler: cron.New(), scheduleMap: make(map[cron.EntryID]queries.Subreddit, 8), downloadBroadcast: broadcast.NewRelay[DownloadStatusMessage](), + config: cfg, } } diff --git a/api/download_subreddit_images.go b/api/download_subreddit_images.go index a5625ad..c8178c1 100644 --- a/api/download_subreddit_images.go +++ b/api/download_subreddit_images.go @@ -1,12 +1,27 @@ package api -import "context" +import ( + "context" + "errors" + + "github.com/tigorlazuardi/redmage/db/queries" + "github.com/tigorlazuardi/redmage/pkg/errs" +) type DownloadSubredditParams struct { Countback int NSFW bool + Devices []queries.Device } +var ( + ErrNoDevices = errors.New("api: downloading subreddit images requires at least one device") + ErrDownloadDirNotSet = errors.New("api: downloading subreddit images require download directory to be set") +) + func (api *API) DownloadSubredditImages(ctx context.Context, subredditName string, params DownloadSubredditParams) error { + if len(params.Devices) == 0 { + return errs.Wrap(ErrNoDevices) + } return nil } diff --git a/cli/serve.go b/cli/serve.go index 54ada16..49dc586 100644 --- a/cli/serve.go +++ b/cli/serve.go @@ -28,7 +28,7 @@ var serveCmd = &cobra.Command{ queries := queries.New(db) - api := api.New(queries, db) + api := api.New(queries, db, cfg) server := server.New(cfg, api, PublicDir) diff --git a/config/default.go b/config/default.go index dc22f96..4dafb59 100644 --- a/config/default.go +++ b/config/default.go @@ -1,16 +1,26 @@ package config var DefaultConfig = map[string]any{ - "log.enable": true, - "log.source": true, - "log.format": "pretty", - "log.level": "info", - "log.output": "stderr", + "flags.containerized": false, + + "log.enable": true, + "log.source": true, + "log.format": "pretty", + "log.level": "info", + "log.output": "stderr", + "log.file.enable": true, + "log.file.path": "redmage.log", "db.driver": "sqlite3", "db.string": "data.db", "db.automigrate": true, + "download.concurrency": 5, + "download.directory": "", + "download.timeout.firstbyte": "30s", + "download.timeout.idleconnection": "5s", + "download.timeout.idlespeed": 10 * 1024, // 10KB + "http.port": "8080", "http.host": "0.0.0.0", "http.shutdown_timeout": "5s",