Skip to content

Commit 156cbb2

Browse files
committed
chore: xlxs render based on the received data
1 parent bdbd275 commit 156cbb2

File tree

9 files changed

+520
-90
lines changed

9 files changed

+520
-90
lines changed

Cargo.lock

Lines changed: 216 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ crate-type = ["cdylib"]
1212
pyo3 = { version = "0.23.4", features = ["extension-module"] }
1313
rayon = "1.10.0"
1414
base64 = "0.21.7"
15+
tempfile ="3"
16+
serde = { version = "1.0", features = ["derive"] }
17+
serde_json = "1.0"
1518
# tokio = { version = "1.43.0", features = ["rt-multi-thread"] }
1619

1720
# [dependencies.pyo3-asyncio]
Lines changed: 39 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,56 @@
1+
import json
12
import pyo3_rust
2-
3-
import app.usecases.render_full_xlsx.single_reports.report_1 as report_1
4-
import app.usecases.render_full_xlsx.single_reports.report_2 as report_2
5-
import app.usecases.render_full_xlsx.single_reports.report_3 as report_3
6-
7-
# import app.grpc_client_impl.grpc_client as grpc_client
3+
import app.usecases.render_full_xlsx.single_reports.cpu_system_usage as cpu_system_usage
4+
import app.usecases.render_full_xlsx.single_reports.cpu_user_usage as cpu_user_usage
85
from app.grpc_client_impl.grpc_client import GRPCClientSingleton
96

10-
117
def render_full_xlsx(date_from: int, date_to: int):
12-
grpc_client =GRPCClientSingleton.get_instance()
8+
grpc_client = GRPCClientSingleton.get_instance()
139
system_usage = grpc_client.get_cpu_system_usage(date_from=date_from, date_to=date_to)
1410
user_usage = grpc_client.get_cpu_user_usage(date_from=date_from, date_to=date_to)
1511

16-
reports = [report_1, report_2, report_3]
12+
reports = [cpu_system_usage, cpu_user_usage]
1713
report_paths = [r.__name__ for r in reports]
1814

19-
final_excel = pyo3_rust.render_parallel_xlsx(reports=report_paths, date_from=date_from, date_to=date_to)
15+
system_usage_json_str = map_get_cpu_system_usage_response_to_json(system_usage)
16+
user_usage_json_str = map_get_cpu_user_usage_response_to_json(user_usage) # Create JSON for user usage
17+
18+
# Pass a list of JSON strings corresponding to the report paths
19+
data_list_json_str = [system_usage_json_str, user_usage_json_str]
20+
21+
final_excel = pyo3_rust.render_parallel_xlsx(
22+
module_paths=report_paths,
23+
date_from=date_from,
24+
date_to=date_to,
25+
data=json.dumps(data_list_json_str) # Serialize the list of JSON strings
26+
)
2027

2128
if not isinstance(final_excel, bytes):
2229
raise TypeError("Expected bytes from Rust function, got {}".format(type(final_excel)))
2330

24-
# We can check if the .xlsx file was properly created.
2531
with open("final_report.xlsx", "wb") as f:
2632
f.write(final_excel)
2733

2834
return final_excel
35+
36+
def map_get_cpu_system_usage_response_to_json(system_usage):
37+
usage_data = []
38+
for usage in system_usage.usages:
39+
usage_data.append({
40+
"cpu": usage.cpu,
41+
"avg_usage": usage.avg_usage,
42+
"max_usage": usage.max_usage,
43+
"min_usage": usage.min_usage,
44+
})
45+
return json.dumps(usage_data)
46+
47+
def map_get_cpu_user_usage_response_to_json(user_usage):
48+
usage_data = []
49+
for usage in user_usage.usages:
50+
usage_data.append({
51+
"cpu": usage.cpu,
52+
"avg_usage": usage.avg_usage,
53+
"max_usage": usage.max_usage,
54+
"min_usage": usage.min_usage,
55+
})
56+
return json.dumps(usage_data)

0 commit comments

Comments
 (0)