This repository has been archived by the owner on Oct 4, 2019. It is now read-only.
forked from steemit/steem
-
Notifications
You must be signed in to change notification settings - Fork 35
/
worker_api_objects.hpp
145 lines (123 loc) · 5.37 KB
/
worker_api_objects.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#pragma once
#include <golos/chain/worker_objects.hpp>
#include <golos/api/comment_api_object.hpp>
namespace golos { namespace plugins { namespace worker_api {
using namespace golos::chain;
using golos::api::comment_api_object;
#ifndef WORKER_API_SPACE_ID
#define WORKER_API_SPACE_ID 15
#endif
enum worker_api_plugin_object_type {
worker_proposal_metadata_object_type = (WORKER_API_SPACE_ID << 8)
};
class worker_proposal_metadata_object : public object<worker_proposal_metadata_object_type, worker_proposal_metadata_object> {
public:
worker_proposal_metadata_object() = delete;
template <typename Constructor, typename Allocator>
worker_proposal_metadata_object(Constructor&& c, allocator <Allocator> a) {
c(*this);
};
id_type id;
account_name_type author;
comment_id_type post;
time_point_sec created;
time_point_sec modified;
share_type net_rshares;
};
using worker_proposal_metadata_id_type = object_id<worker_proposal_metadata_object>;
using worker_proposal_metadata_index = multi_index_container<
worker_proposal_metadata_object,
indexed_by<
ordered_unique<
tag<by_id>,
member<worker_proposal_metadata_object, worker_proposal_metadata_id_type, &worker_proposal_metadata_object::id>>,
ordered_unique<
tag<by_post>,
member<worker_proposal_metadata_object, comment_id_type, &worker_proposal_metadata_object::post>>,
ordered_unique<
tag<by_net_rshares>,
composite_key<
worker_proposal_metadata_object,
member<worker_proposal_metadata_object, share_type, &worker_proposal_metadata_object::net_rshares>,
member<worker_proposal_metadata_object, worker_proposal_metadata_id_type, &worker_proposal_metadata_object::id>>,
composite_key_compare<
std::greater<share_type>,
std::less<worker_proposal_metadata_id_type>>>>,
allocator<worker_proposal_metadata_object>>;
struct worker_proposal_api_object {
worker_proposal_api_object(const worker_proposal_metadata_object& o, const comment_api_object& p)
: post(p),
created(o.created),
modified(o.modified),
net_rshares(o.net_rshares) {
}
worker_proposal_api_object() {
}
void fill_worker_proposal(const worker_proposal_object& wpo) {
type = wpo.type;
state = wpo.state;
}
comment_api_object post;
worker_proposal_type type;
worker_proposal_state state;
comment_api_object approved_techspec_post;
time_point_sec created;
time_point_sec modified;
share_type net_rshares;
};
struct worker_techspec_api_object {
worker_techspec_api_object(const worker_techspec_object& o, const comment_api_object& p)
: post(p),
state(o.state),
created(o.created),
modified(o.modified),
net_rshares(o.net_rshares),
specification_cost(o.specification_cost),
development_cost(o.development_cost),
approves(o.approves),
disapproves(o.disapproves),
worker(o.worker),
work_beginning_time(o.work_beginning_time),
completion_date(o.completion_date),
payments_count(o.payments_count),
payments_interval(o.payments_interval),
month_consumption(o.month_consumption),
payment_beginning_time(o.payment_beginning_time),
next_cashout_time(o.next_cashout_time),
finished_payments_count(o.finished_payments_count) {
}
worker_techspec_api_object() {
}
comment_api_object post;
comment_api_object worker_proposal_post;
worker_techspec_state state;
time_point_sec created;
time_point_sec modified;
share_type net_rshares;
asset specification_cost;
asset development_cost;
uint16_t approves = 0;
uint16_t disapproves = 0;
account_name_type worker;
time_point_sec work_beginning_time;
comment_api_object worker_result_post;
time_point_sec completion_date;
uint16_t payments_count = 0;
uint32_t payments_interval = 0;
asset month_consumption;
time_point_sec payment_beginning_time;
time_point_sec next_cashout_time = time_point_sec::maximum();
uint16_t finished_payments_count = 0;
};
} } } // golos::plugins::worker_api
CHAINBASE_SET_INDEX_TYPE(
golos::plugins::worker_api::worker_proposal_metadata_object,
golos::plugins::worker_api::worker_proposal_metadata_index)
FC_REFLECT((golos::plugins::worker_api::worker_proposal_api_object),
(post)(type)(state)(approved_techspec_post)(created)(modified)(net_rshares)
)
FC_REFLECT((golos::plugins::worker_api::worker_techspec_api_object),
(post)(worker_proposal_post)(state)(created)(modified)(net_rshares)(specification_cost)(development_cost)(approves)(disapproves)
(worker)(work_beginning_time)(worker_result_post)(completion_date)(payments_count)(payments_interval)(month_consumption)
(payment_beginning_time)(next_cashout_time)(finished_payments_count)
)