;path:[?query_path] ;method:[?query_method] ;query:[?$out::query] ;body:[?$out::body] #proc mshop_api.init #se mshop_state_table=mshop_state #endproc #proc mshop_api.load_state(id) #src state #r #call mshop_api.init_state_tables_sql select state, Параметры from [mshop_state_table] where ref=@'[id]'@ and Приложение='[mshop_api.app]'; #query #endsrc #if {state.Параметры#size} #out_load_from_var params,@state.Параметры #dump_to_ex_params params >{state.state} #else #call mshop_api.new_state($id) >{{}} #endif #endproc #proc mshop_api.init_tables_sql CREATE TABLE IF NOT EXISTS [mshop_state_table] ( ССЫЛКА int primary key auto_increment, ПРИЛОЖЕНИЕ VARCHAR(50), REF VARCHAR(40), ОТВЕТСТВЕННЫЙ INT NOT NULL, ДАТА DATETIME, ИЗМЕНЕН DATETIME, ПАРАМЕТРЫ VARCHAR(8128), STATE MEDIUMTEXT, KEY(ДАТА), UNIQUE INDEX(REF) ) #endproc #proc mshop_api.new_state(id) @{ [#mshop_api.init_tables_sql]; insert into [mshop_state_table](ПРИЛОЖЕНИЕ,REF,ОТВЕТСТВЕННЫЙ,ДАТА,ИЗМЕНЕН,STATE) values(@'[mshop_api.app]'@,@'[id]'@,'[?user_ref]',NOW(),NOW(),'{{}}') }@ #endproc #proc mshop_api.save_state(id,state_obj,vars) @{[#mshop_api.init_tables_sql]}@ #out_save params #o params #r #for param=([vars]) #ex_params_dump [var]* #endfor #out_restore params @{ update [mshop_state_table] set STATE=@'[state_obj]'@ , ИЗМЕНЕН=NOW(), Параметры=@'[$out::params]'@ where ref=@'[id]'@ and Приложение='[mshop_api.app]'; }@ #endproc #proc mshop_api.query ; разбор пути /app/procname #json_pretty 0 #v (empty,app,procname|/)=[?query_path] #se j:result={{}} #se mshop_api.app=[app] #try #include_module mshop_[app]_module #v j:query=[$out::query] #v j:body=[$out::body] #v user_ref=@{select ссылка from spravochniki_sotrudniki where ref=@'[j:body.?access_payload.sp_ref]'@ }@ #call mshop_[app].[query_method].[procname] #catch #se j:result={{"result":false,message:"[$f::json_quote($%exception.msg)]"}} #endtry [j:result] #endproc