This commit is contained in:
2025-08-05 15:15:36 +02:00
parent 4bd960ed05
commit 7fabb4163a
192 changed files with 14901 additions and 0 deletions

View File

@@ -0,0 +1,20 @@
@['/:{{function_name}}'; post]
pub fn (mut app App) {{ function_name }}() vweb.Result{
body := json2.raw_decode(app.req.data)!.as_map()
{% for param_name, param_tpe in method_params.items() %}
{% if rest_server_generator.lang_code_generator.is_primitive(param_type) %}
{{param_name}} := body['{{param_name}}'].{{param_type}}()
{% else %}
{{param_name}} := json2.decode[{{param_type}}](body['{{param_name}}'].json_str()) or {
app.set_status(400, 'Bad Request: ${err}')
return v_server_app.text('HTTP 400: Bad Request')
}
{% endif %}
{% endfor %}
res := {{function_name}}_internal({{', '.join(method_params.keys())}}) or {
app.set_status(500, '')
return app.text('HTTP 500: Internal Server Error')
}
return app.json(res)
}

View File

@@ -0,0 +1,6 @@
module main
pub fn {{function_name}}({{server_generator.get_method_params(method_params)}}) !{{method_result}}{
panic('to be implemented')
}

View File

@@ -0,0 +1,11 @@
module main
import vweb
struct App {}
fn main() {
app := &App{}
port := 8080
vweb.run(app, port)
}

View File

@@ -0,0 +1,49 @@
import os
from pathlib import Path
from jinja2 import Environment, FileSystemLoader
from heroserver.openrpc.model.openrpc_spec import OpenRPCSpec
script_dir = os.path.dirname(os.path.abspath(__file__))
env = Environment(loader=FileSystemLoader(script_dir))
class ServerGenerator:
def __init__(self, spec: OpenRPCSpec, dir: Path):
self.spec = spec
self.dir = dir
self.server_template = env.get_template("templates/server.jinja")
def generate(self):
self.dir.mkdir(parents=True, exist_ok=True)
self.generate_server()
self.generate_models()
self.generate_methods()
def generate_server(self):
code = self.server_template.render()
server_file_path = self.dir.joinpath("server.v")
with open(server_file_path, "w") as file:
file.write(f"{code}")
def generate_models():
pass
def generate_methods():
pass
if __name__ == "__main__":
from heroserver.openrpc.parser.parser import parser
# from heroserver.openrpc.generator.model_generator import ModelGenerator
data = parser(path="/root/code/git.threefold.info/hero_server/generatorexamples/mycelium_openrpc.yaml")
spec_object = OpenRPCSpec.load(data)
server_generator = ServerGenerator(spec_object, Path("/tmp/server3"))
server_generator.generate()