Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

mshop_api_module.spm 2.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. ;path:[?query_path]
  2. ;method:[?query_method]
  3. ;query:[?$out::query]
  4. ;body:[?$out::body]
  5. #proc mshop_api.init
  6. #se mshop_state_table=mshop_state
  7. #endproc
  8. #proc mshop_api.load_state(id)
  9. #src state
  10. #r
  11. #call mshop_api.init_state_tables_sql
  12. select
  13. state,
  14. Параметры
  15. from [mshop_state_table] where ref=@'[id]'@ and Приложение='[mshop_api.app]';
  16. #query
  17. #endsrc
  18. #if {state.Параметры#size}
  19. #out_load_from_var params,@state.Параметры
  20. #dump_to_ex_params params
  21. >{state.state}
  22. #else
  23. #call mshop_api.new_state($id)
  24. >{{}}
  25. #endif
  26. #endproc
  27. #proc mshop_api.init_tables_sql
  28. CREATE TABLE IF NOT EXISTS [mshop_state_table]
  29. (
  30. ССЫЛКА int primary key auto_increment,
  31. ПРИЛОЖЕНИЕ VARCHAR(50),
  32. REF VARCHAR(40),
  33. ОТВЕТСТВЕННЫЙ INT NOT NULL,
  34. ДАТА DATETIME,
  35. ИЗМЕНЕН DATETIME,
  36. ПАРАМЕТРЫ VARCHAR(8128),
  37. STATE MEDIUMTEXT,
  38. KEY(ДАТА),
  39. UNIQUE INDEX(REF)
  40. )
  41. #endproc
  42. #proc mshop_api.new_state(id)
  43. @{
  44. [#mshop_api.init_tables_sql];
  45. insert into [mshop_state_table](ПРИЛОЖЕНИЕ,REF,ОТВЕТСТВЕННЫЙ,ДАТА,ИЗМЕНЕН,STATE)
  46. values(@'[mshop_api.app]'@,@'[id]'@,'[?user_ref]',NOW(),NOW(),'{{}}')
  47. }@
  48. #endproc
  49. #proc mshop_api.save_state(id,state_obj,vars)
  50. @{[#mshop_api.init_tables_sql]}@
  51. #out_save params
  52. #o params
  53. #r
  54. #for param=([vars])
  55. #ex_params_dump [var]*
  56. #endfor
  57. #out_restore params
  58. @{
  59. update [mshop_state_table] set
  60. STATE=@'[state_obj]'@ ,
  61. ИЗМЕНЕН=NOW(),
  62. Параметры=@'[$out::params]'@
  63. where ref=@'[id]'@ and Приложение='[mshop_api.app]';
  64. }@
  65. #endproc
  66. #proc mshop_api.query
  67. ; разбор пути /app/procname
  68. #json_pretty 0
  69. #v (empty,app,procname|/)=[?query_path]
  70. #se j:result={{}}
  71. #se mshop_api.app=[app]
  72. #try
  73. #include_module mshop_[app]_module
  74. #v j:query=[$out::query]
  75. #v j:body=[$out::body]
  76. #v user_ref=@{select ссылка from spravochniki_sotrudniki where ref=@'[j:body.?access_payload.sp_ref]'@ }@
  77. #call mshop_[app].[query_method].[procname]
  78. #catch
  79. #se j:result={{"result":false,message:"[$f::json_quote($%exception.msg)]"}}
  80. #endtry
  81. [j:result]
  82. #endproc