PACS System 0.1.0
PACS DICOM system library
Loading...
Searching...
No Matches
sqlite_security_storage.h
Go to the documentation of this file.
1// BSD 3-Clause License
2// Copyright (c) 2021-2025, 🍀☀🌕🌥 🌊
3// See the LICENSE file in the project root for full license information.
4
19#pragma once
20
21// Check for database_system availability
22// This header requires database_system for database_context and database_manager
23#ifndef PACS_WITH_DATABASE_SYSTEM
24// Forward declare empty class when database_system is not available
25namespace kcenon::pacs::storage {
26class sqlite_security_storage;
27} // namespace kcenon::pacs::storage
28#else // PACS_WITH_DATABASE_SYSTEM
29
31
32#include <database/core/database_context.h>
33#include <database/database_manager.h>
34
35#include <memory>
36#include <string>
37#include <vector>
38
39namespace kcenon::pacs::storage {
40
47class sqlite_security_storage : public security::security_storage_interface {
48public:
53 explicit sqlite_security_storage(std::string db_path);
54
55 ~sqlite_security_storage() override;
56
57 // User Management
58 [[nodiscard]] auto create_user(const security::User &user)
59 -> VoidResult override;
60 [[nodiscard]] auto get_user(std::string_view id)
61 -> Result<security::User> override;
62 [[nodiscard]] auto get_user_by_username(std::string_view username)
63 -> Result<security::User> override;
64 [[nodiscard]] auto update_user(const security::User &user)
65 -> VoidResult override;
66 [[nodiscard]] auto delete_user(std::string_view id) -> VoidResult override;
67
68 [[nodiscard]] auto get_users_by_role(security::Role role)
69 -> Result<std::vector<security::User>> override;
70
71private:
72 std::string db_path_;
73 std::shared_ptr<database::database_context> db_context_;
74 std::shared_ptr<database::database_manager> db_manager_;
75
76 [[nodiscard]] auto initialize_database() -> VoidResult;
77};
78
79} // namespace kcenon::pacs::storage
80
81#endif // PACS_WITH_DATABASE_SYSTEM
Storage interface for RBAC persistence.