Files
herolib/lib/baobab/generator/write_object_methods_test.v
2025-03-24 06:44:39 +01:00

140 lines
3.9 KiB
V

module generator
import freeflowuniverse.herolib.core.code
import os
// // generate_object_methods generates CRUD actor methods for a provided structure
// pub fn (generator ActorGenerator) generate_object_methods(structure code.Struct) []code.Function {
// return [
// generator.generate_get_method(structure),
// // generator.generate_set_method(structure),
// // generator.generate_delete_method(structure),
// // generator.generate_get_method(structure),
// ]
// }
// generate_object_methods generates CRUD actor methods for a provided structure
pub fn test_generate_get_method() {
generator := ActorGenerator{'test'}
actor_struct := code.Struct{
name: 'TestActor'
fields: [
code.StructField{
name: 'test_struct_map'
typ: code.Type{
symbol: 'map[string]&TestStruct'
}
},
]
}
test_struct := code.Struct{
name: 'TestStruct'
}
field := get_child_field(
parent: actor_struct
child: test_struct
)
method := generator.generate_get_method(
actor_name: actor_struct.name
actor_field: field
root_struct: test_struct
)
}
// // generate_object_methods generates CRUD actor methods for a provided structure
// pub fn (generator ActorGenerator) generate_set_method(structure code.Struct) code.Function {
// params_getter := "id := params.get('id')!"
// field := generator.get_object_field(structure)
// object_getter := 'object := actor.${field.name}[id]'
// body := '${params_getter}\n${object_getter}\nreturn object'
// get_method := code.Function{
// name: 'get_${generator.model_name}'
// description: 'gets the ${structure.name} with the given object id'
// receiver: code.Param{
// name: 'actor'
// struct_: generator.actor_struct
// }
// params: [
// code.Param{
// name: 'id'
// typ: code.Type{
// symbol: 'string'
// }
// },
// ]
// result: code.Result{
// structure: structure
// }
// body: body
// }
// return get_method
// }
// // generate_object_methods generates CRUD actor methods for a provided structure
// pub fn (generator ActorGenerator) generate_get_method(structure code.Struct) code.Function {
// params_getter := "id := params.get('id')!"
// field := generator.get_object_field(structure)
// object_getter := 'object := actor.${field.name}[id]'
// body := '${params_getter}\n${object_getter}\nreturn object'
// get_method := code.Function{
// name: 'get_${generator.model_name}'
// description: 'gets the ${structure.name} with the given object id'
// receiver: code.Param{
// name: 'actor'
// struct_: generator.actor_struct
// }
// params: [
// code.Param{
// name: 'id'
// typ: code.Type{
// symbol: 'string'
// }
// },
// ]
// result: code.Result{
// structure: structure
// }
// body: body
// }
// return get_method
// }
// // generate_object_methods generates CRUD actor methods for a provided structure
// pub fn (generator ActorGenerator) generate_delete_method(structure code.Struct) code.Function {
// params_getter := "id := params.get('id')!"
// field := generator.get_object_field(structure)
// object_getter := 'object := actor.${field.name}[id]'
// body := '${params_getter}\n${object_getter}\nreturn object'
// get_method := code.Function{
// name: 'get_${generator.model_name}'
// description: 'gets the ${structure.name} with the given object id'
// receiver: code.Param{
// name: 'actor'
// struct_: generator.actor_struct
// }
// params: [
// code.Param{
// name: 'id'
// typ: code.Type{
// symbol: 'string'
// }
// },
// ]
// result: code.Result{
// structure: structure
// }
// body: body
// }
// return get_method
// }
// pub fn (generator ActorGenerator) get_object_field(structure code.Struct) code.StructField {
// fields := generator.actor_struct.fields.filter(it.typ.symbol == 'map[string]&${structure.name}')
// if fields.len != 1 {
// panic('this should never happen')
// }
// return fields[0]
// }