10Duke Scale C++ Client
Loading...
Searching...
No Matches
FluentReleaseBuilder.h
1#ifndef TENDUKE_SE_LICENSING_FLUENTRELEASEBUILDER_H
2#define TENDUKE_SE_LICENSING_FLUENTRELEASEBUILDER_H
3
4#include "./LicenseReleaseArguments.h"
5#include "../../Lease.h"
6
7#include <cstdint>
8#include <utility>
9#include <vector>
10
11namespace tenduke { namespace se { namespace licensing {
12
17template <typename Builder>
19{
20public:
25 explicit FluentReleaseBuilder(std::string licenseKey) : licenseKey(std::move(licenseKey)) {}
26
27public:
34 Builder & lease(
35 const std::string& leaseId,
36 std::int64_t finalUsedQty
37 ) {
38 arguments.emplace_back(
39 leaseId,
40 finalUsedQty
41 );
42 return static_cast<Builder &>(*this);
43 }
44
50 Builder & lease(const std::string leaseId)
51 {
52 return lease(leaseId, 1);
53 }
54
61 Builder & lease(
62 const ::tenduke::se::licensing::Lease &lease,
63 std::int64_t finalUsedQty
64 ) {
65 return this->lease(lease.leaseId, finalUsedQty);
66 }
67
73 Builder & lease(const ::tenduke::se::licensing::Lease &lease)
74 {
75 return this->lease(lease, 1);
76 }
77
83 Builder & leases(const std::vector<::tenduke::se::licensing::Lease> &licensesToRelease)
84 {
85 for (auto const& licenseToRelease : licensesToRelease) {
86 lease(licenseToRelease);
87 }
88 return static_cast<Builder &>(*this);
89 }
90
91protected:
93 const std::string licenseKey;
94
96 std::vector<::tenduke::se::licensing::LicenseReleaseArguments> arguments;
97};
98
99}}}
100
101#endif //TENDUKE_SE_LICENSING_FLUENTRELEASEBUILDER_H
Base for fluent builder of release parameters.
Definition FluentReleaseBuilder.h:19
Builder & lease(const ::tenduke::se::licensing::Lease &lease, std::int64_t finalUsedQty)
Adds lease to release, with given final-used quantity.
Definition FluentReleaseBuilder.h:61
Builder & lease(const std::string leaseId)
Adds lease id to release, with quantity of 1.
Definition FluentReleaseBuilder.h:50
Builder & lease(const ::tenduke::se::licensing::Lease &lease)
Adds lease to release with quantity of 1.
Definition FluentReleaseBuilder.h:73
const std::string licenseKey
Licensekey.
Definition FluentReleaseBuilder.h:93
FluentReleaseBuilder(std::string licenseKey)
Constructs new instance.
Definition FluentReleaseBuilder.h:25
std::vector<::tenduke::se::licensing::LicenseReleaseArguments > arguments
The individual arguments.
Definition FluentReleaseBuilder.h:96
Builder & lease(const std::string &leaseId, std::int64_t finalUsedQty)
Adds lease id to release, with final used quantity.
Definition FluentReleaseBuilder.h:34
Builder & leases(const std::vector<::tenduke::se::licensing::Lease > &licensesToRelease)
Adds leases to release, each with quantity of 1.
Definition FluentReleaseBuilder.h:83
Root for classes, functions and globals of 10Duke C++ Client.
Definition BackendConfiguration.h:7