Browse Source

Modernize AuthConfig parameter to pass-by-value (clang-tidy modernize-pass-by-value)

Fszontagh 3 months ago
parent
commit
5f45d2c4be

+ 0 - 19
.kdev4/stable-diffusion.cpp-rest.kdev4

@@ -1,19 +0,0 @@
-[Buildset]
-BuildItems=@Variant(\x00\x00\x00\t\x00\x00\x00\x00\x01\x00\x00\x00\x0b\x00\x00\x00\x00\x01\x00\x00\x002\x00s\x00t\x00a\x00b\x00l\x00e\x00-\x00d\x00i\x00f\x00f\x00u\x00s\x00i\x00o\x00n\x00.\x00c\x00p\x00p\x00-\x00r\x00e\x00s\x00t)
-
-[CMake]
-Build Directory Count=1
-Current Build Directory Index-Host System=0
-
-[CMake][CMake Build Directory 0]
-Build Directory Path=/data/stable-diffusion.cpp-rest/build
-Build Type=
-CMake Binary=/usr/bin/cmake
-CMake Executable=/usr/bin/cmake
-Environment Profile=
-Extra Arguments=
-Install Directory=/usr/local
-Runtime=Host System
-
-[Project]
-VersionControlSupport=kdevgit

+ 0 - 15
.nanocoder/commands/refactor.md

@@ -1,15 +0,0 @@
----
-description: Refactor JavaScript/TypeScript code
-aliases: [refactor-js, clean]
-parameters: [target]
----
-
-Refactor {{target}} to improve:
-
-1. Code structure and organization
-2. Modern ES6+ syntax usage
-3. Performance optimizations
-4. Type safety (for TypeScript)
-5. Reusability and maintainability
-
-Follow current project conventions and patterns.

+ 0 - 15
.nanocoder/commands/review.md

@@ -1,15 +0,0 @@
----
-description: Review code and suggest improvements
-aliases: [code-review, cr]
-parameters: [files]
----
-
-Review the code in {{files}} and provide detailed feedback on:
-
-1. Code quality and best practices
-2. Potential bugs or issues
-3. Performance considerations
-4. Readability and maintainability
-5. Security concerns
-
-Provide specific, actionable suggestions for improvement.

+ 0 - 16
.nanocoder/commands/test.md

@@ -1,16 +0,0 @@
----
-description: Generate comprehensive unit tests
-aliases: [unittest, test-gen]
-parameters: [filename]
----
-
-Generate comprehensive unit tests for {{filename}}.
-
-Consider:
-1. Test all public functions and methods
-2. Include edge cases and error scenarios
-3. Use appropriate mocking where needed
-4. Follow existing test framework conventions
-5. Ensure good test coverage
-
-If no filename provided, suggest which files need tests.

+ 4 - 4
include/auth_middleware.h

@@ -59,7 +59,7 @@ public:
      * @param config Authentication configuration
      * @param userManager User manager instance
      */
-    explicit AuthMiddleware(const AuthConfig& config,
+    explicit AuthMiddleware(AuthConfig config,
                            std::shared_ptr<UserManager> userManager);
 
     /**
@@ -224,7 +224,7 @@ public:
      *
      * @param config New configuration
      */
-    void updateConfig(const AuthConfig& config);
+    void updateConfig(AuthConfig config);
 
 private:
     AuthConfig m_config;                           ///< Authentication configuration
@@ -330,7 +330,7 @@ private:
      * @param config Configuration to validate
      * @return true if valid, false otherwise
      */
-    static bool validateConfig(const AuthConfig& config);
+    static bool validateConfig(AuthConfig config);
 
     /**
      * @brief Initialize default paths
@@ -387,7 +387,7 @@ namespace AuthMiddlewareFactory {
      * @return std::unique_ptr<AuthMiddleware> Auth middleware instance
      */
     std::unique_ptr<AuthMiddleware> createMultiMethod(std::shared_ptr<UserManager> userManager,
-                                                      const AuthConfig& config);
+                                                      AuthConfig config);
 
     /**
      * @brief Create authentication middleware for development (no auth required)

+ 2 - 1
include/server_config.h

@@ -53,6 +53,7 @@ struct ServerConfig {
     std::string loraDir            = "";  // LoRA directory (default: loras)
     std::string taesdDir           = "";  // TAESD directory (default: TAESD)
     std::string vaeDir             = "";  // VAE directory (default: vae)
+    // TODO: Implement --diffusion-models-dir command line argument and usage in model manager
     std::string diffusionModelsDir = "";  // Diffusion models directory (default: diffusion_models)
 
     // Queue and output directories
@@ -70,4 +71,4 @@ struct ServerConfig {
     AuthConfig auth;
 };
 
-#endif  // SERVER_CONFIG_H
+#endif  // SERVER_CONFIG_H

+ 10 - 5
src/auth_middleware.cpp

@@ -9,9 +9,9 @@
 #include <sstream>
 #include "logger.h"
 
-AuthMiddleware::AuthMiddleware(const AuthConfig& config,
+AuthMiddleware::AuthMiddleware(AuthConfig config,
                                std::shared_ptr<UserManager> userManager)
-    : m_config(config), m_userManager(userManager) {
+    : m_config(std::move(config)), m_userManager(userManager) {
 }
 
 AuthMiddleware::~AuthMiddleware() = default;
@@ -482,7 +482,7 @@ std::string AuthMiddleware::getUserAgent(const httplib::Request& req) {
     return req.get_header_value("User-Agent");
 }
 
-bool AuthMiddleware::validateConfig(const AuthConfig& config) {
+bool AuthMiddleware::validateConfig(AuthConfig config) {
     // Validate JWT configuration
     if (config.authMethod == AuthMethod::JWT) {
         if (config.jwtSecret.empty()) {
@@ -637,8 +637,8 @@ AuthConfig AuthMiddleware::getConfig() const {
     return m_config;
 }
 
-void AuthMiddleware::updateConfig(const AuthConfig& config) {
-    m_config = config;
+void AuthMiddleware::updateConfig(AuthConfig config) {
+    m_config = std::move(config);
 }
 
 // Factory functions
@@ -656,6 +656,11 @@ namespace AuthMiddlewareFactory {
         return std::make_unique<AuthMiddleware>(config, userManager);
     }
 
+    std::unique_ptr<AuthMiddleware> createMultiMethod(std::shared_ptr<UserManager> userManager,
+                                                      AuthConfig config) {
+        return std::make_unique<AuthMiddleware>(std::move(config), userManager);
+    }
+
     std::unique_ptr<AuthMiddleware> createJwtOnly(std::shared_ptr<UserManager> userManager,
                                                   const std::string& jwtSecret,
                                                   int jwtExpirationMinutes) {

+ 27 - 16
src/main.cpp

@@ -66,14 +66,15 @@ ServerConfig parseArguments(int argc, char* argv[]) {
     ServerConfig config;
 
     // Track which parameters were explicitly set
-    bool modelsDirSet   = false;
-    bool checkpointsSet = false;
-    bool controlnetSet  = false;
-    bool embeddingsSet  = false;
-    bool esrganSet      = false;
-    bool loraSet        = false;
-    bool taesdSet       = false;
-    bool vaeSet         = false;
+    bool modelsDirSet        = false;
+    bool checkpointsSet      = false;
+    bool controlnetSet       = false;
+    bool embeddingsSet       = false;
+    bool esrganSet           = false;
+    bool loraSet             = false;
+    bool taesdSet            = false;
+    bool vaeSet              = false;
+    bool diffusionModelsSet  = false;
 
     for (int i = 1; i < argc; i++) {
         std::string arg = argv[i];
@@ -106,6 +107,9 @@ ServerConfig parseArguments(int argc, char* argv[]) {
         } else if (arg == "--vae-dir" && i + 1 < argc) {
             config.vaeDir = argv[++i];
             vaeSet        = true;
+        } else if (arg == "--diffusion-models-dir" && i + 1 < argc) {
+            config.diffusionModelsDir = argv[++i];
+            diffusionModelsSet        = true;
         } else if (arg == "--max-concurrent" && i + 1 < argc) {
             config.maxConcurrentGenerations = std::stoi(argv[++i]);
         } else if (arg == "--queue-dir" && i + 1 < argc) {
@@ -201,6 +205,7 @@ ServerConfig parseArguments(int argc, char* argv[]) {
                       << "  --lora-dir <dir>               LoRA models directory (default: loras)\n"
                       << "  --taesd-dir <dir>              TAESD models directory (default: TAESD)\n"
                       << "  --vae-dir <dir>                VAE models directory (default: vae)\n"
+                      << "  --diffusion-models-dir <dir>   Diffusion models directory (default: diffusion_models)\n"
                       << "\n"
                       << "Other Options:\n"
                       << "  --help, -h                     Show this help message\n"
@@ -257,15 +262,19 @@ ServerConfig parseArguments(int argc, char* argv[]) {
     if (!vaeSet) {
         config.vaeDir = "vae";
     }
+    if (!diffusionModelsSet) {
+        config.diffusionModelsDir = "diffusion_models";
+    }
 
     // Resolve all directory paths (absolute paths used as-is, relative resolved from models-dir)
-    config.checkpoints   = resolveDirectoryPath(config.checkpoints, config.modelsDir);
-    config.controlnetDir = resolveDirectoryPath(config.controlnetDir, config.modelsDir);
-    config.embeddingsDir = resolveDirectoryPath(config.embeddingsDir, config.modelsDir);
-    config.esrganDir     = resolveDirectoryPath(config.esrganDir, config.modelsDir);
-    config.loraDir       = resolveDirectoryPath(config.loraDir, config.modelsDir);
-    config.taesdDir      = resolveDirectoryPath(config.taesdDir, config.modelsDir);
-    config.vaeDir        = resolveDirectoryPath(config.vaeDir, config.modelsDir);
+    config.checkpoints        = resolveDirectoryPath(config.checkpoints, config.modelsDir);
+    config.controlnetDir      = resolveDirectoryPath(config.controlnetDir, config.modelsDir);
+    config.embeddingsDir      = resolveDirectoryPath(config.embeddingsDir, config.modelsDir);
+    config.esrganDir          = resolveDirectoryPath(config.esrganDir, config.modelsDir);
+    config.loraDir            = resolveDirectoryPath(config.loraDir, config.modelsDir);
+    config.taesdDir           = resolveDirectoryPath(config.taesdDir, config.modelsDir);
+    config.vaeDir             = resolveDirectoryPath(config.vaeDir, config.modelsDir);
+    config.diffusionModelsDir = resolveDirectoryPath(config.diffusionModelsDir, config.modelsDir);
 
     return config;
 }
@@ -318,6 +327,7 @@ int main(int argc, char* argv[]) {
         std::cout << "  LoRA:         " << config.loraDir << std::endl;
         std::cout << "  TAESD:        " << config.taesdDir << std::endl;
         std::cout << "  VAE:          " << config.vaeDir << std::endl;
+        std::cout << "  Diffusion:    " << config.diffusionModelsDir << std::endl;
         std::cout << std::endl;
     }
 
@@ -366,6 +376,7 @@ int main(int argc, char* argv[]) {
     validateDirectory(config.loraDir, "LoRA", false);
     validateDirectory(config.taesdDir, "TAESD", false);
     validateDirectory(config.vaeDir, "VAE", false);
+    validateDirectory(config.diffusionModelsDir, "Diffusion Models", false);
 
     // Validate UI directory if specified
     if (!config.uiDir.empty()) {
@@ -519,4 +530,4 @@ int main(int argc, char* argv[]) {
     }
 
     return 0;
-}
+}

+ 3 - 0
src/model_manager.cpp

@@ -837,6 +837,9 @@ bool ModelManager::configureFromServerConfig(const ServerConfig& config) {
     if (!config.vaeDir.empty()) {
         directories[ModelType::VAE] = config.vaeDir;
     }
+    if (!config.diffusionModelsDir.empty()) {
+        directories[ModelType::DIFFUSION_MODELS] = config.diffusionModelsDir;
+    }
 
     // Validate all directories first
     for (const auto& [type, path] : directories) {